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): 一个复杂的工具,用于查看、创建和编辑文件。它支持 viewcreatestr_replaceinsertundo_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 展现出更强的自我修正能力,并更愿意尝试多种不同的解决方案,而不是重复同样的错误。

在典型工作流中,模型:

  1. 使用 Edit 工具探索仓库结构。
  2. 创建一个复现脚本以确认缺陷。
  3. 使用 Bash 工具执行脚本以观察错误。
  4. 使用 Edit 工具修改源代码。
  5. 重新运行复现脚本以验证修复效果。

实现挑战

Anthropic 识别出在运行 SWE-bench Verified 评估时面临的四个主要挑战:

  1. 成本与耗时: 成功运行可能需要数百次交互并超过 10 万 token,使过程既昂贵又耗时。
  2. 评分准确性: 系统级问题(如环境设置错误或重复安装补丁)可能导致错误的失败评分。
  3. 隐藏测试: 由于模型无法看到评分测试,它可能误以为已成功,而实际上失败了,有时只是应用了表面修复而非深层重构。
  4. 多模态限制: 尽管模型具备视觉能力,但当前代理实现不允许其查看文件或 URL,这使得涉及视觉输出(如 Matplotlib)的任务调试变得复杂。

Sources

相关