Claude 3.5 Sonnet 在 SWE-bench 上的表现
升级版 Claude 3.5 Sonnet 在 SWE-bench Verified 上取得了 49% 的成功率,超越了此前的最先进水平 45%。这一提升得益于模型在推理、编码和数学能力方面的增强,以及为最大化模型自主性而设计的极简代理架构。
SWE-bench Verified 概述
SWE-bench 是一个评估基准,测试 AI 解决来自热门开源 Python 仓库的真实 GitHub 问题的能力。与竞赛式编码测试不同,它要求模型理解、修改并测试本地仓库副本中的代码。
SWE-bench Verified 是原始数据集的 500 个问题子集,经过人工审核,确保每个任务都可以在无需外部上下文的情况下解决。该基准评估的是“代理”——即 AI 模型与其周围软件架构(提示和工具解析逻辑)的结合体。
代理架构与设计哲学
Anthropic 为 Claude 3.5 Sonnet 设计的代理架构强调极简的支撑结构,以赋予语言模型最大程度的问题解决控制权。该代理使用一个提示和两个主要工具运行:
工具使用型代理组件
- Bash 工具: 在持久环境中执行 bash 命令。该工具的描述提供了关于输入转义、无互联网访问以及如何在后台运行长时间命令的关键说明。
- Edit 工具(str_replace_editor): 一个复杂的工具,用于查看、创建和编辑文件。它支持
view、create、str_replace、insert和undo_edit等命令。
关键优化策略
- 使用字符串替换进行编辑: 代理采用字符串替换方法,模型指定要被
new_str替换的old_str。只有当old_str恰好匹配一次时,替换才会发生,从而减少了其他编辑策略带来的可靠性问题。 - 防错机制: 为避免相对文件路径的问题,Edit 工具要求所有操作使用绝对路径。
- 模型自主性: 提示建议一个通用方法(探索、复现、编辑和验证),但不强制严格的流程,允许模型根据自身判断灵活处理。
性能结果
在使用相同代理架构的情况下,升级版 Claude 3.5 Sonnet 显著优于之前的模型和先前的最先进水平:
| 模型 | SWE-bench Verified 得分 |
|---|---|
| Claude 3.5 Sonnet(新) | 49% |
| 之前的最先进水平 | 45% |
| Claude 3.5 Sonnet(旧) | 33% |
| Claude 3 Opus | 22% |
代理行为与能力
对模型日志的分析表明,升级版 Claude 3.5 Sonnet 展现出更强的自我修正能力,并更愿意尝试多种不同的解决方案,而不是重复同样的错误。
在典型工作流中,模型:
- 使用 Edit 工具探索仓库结构。
- 创建一个复现脚本以确认缺陷。
- 使用 Bash 工具执行脚本以观察错误。
- 使用 Edit 工具修改源代码。
- 重新运行复现脚本以验证修复效果。
实现挑战
Anthropic 识别出在运行 SWE-bench Verified 评估时面临的四个主要挑战:
- 成本与耗时: 成功运行可能需要数百次交互并超过 10 万 token,使过程既昂贵又耗时。
- 评分准确性: 系统级问题(如环境设置错误或重复安装补丁)可能导致错误的失败评分。
- 隐藏测试: 由于模型无法看到评分测试,它可能误以为已成功,而实际上失败了,有时只是应用了表面修复而非深层重构。
- 多模态限制: 尽管模型具备视觉能力,但当前代理实现不允许其查看文件或 URL,这使得涉及视觉输出(如 Matplotlib)的任务调试变得复杂。
Sources
- OriginalClaude SWE-Bench Performance
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch