Claude 3.5 Sonnet SWE-bench 性能表现

升级后的 Claude 3.5 Sonnet 在 SWE-bench Verified 上实现了 49% 的成功率,超越了之前 45% 的最先进(SOTA)分数。这一性能表现证明了该模型在集成到专为现实世界软件工程任务设计的极简智能体脚手架(agent scaffold)时,其推理、编码和数学能力的提升。

理解 SWE-bench Verified

SWE-bench 是一个评估基准,用于衡量 AI 智能体解决来自流行开源 Python 仓库的真实 GitHub issue 的能力。与竞赛风格的编程测试不同,它要求智能体理解代码库、修改文件并使用单元测试验证修复方案。

SWE-bench Verified 是原始数据集的一个经由人工审核的 500 个问题的子集。该子集通过移除无法完成的任务,确保每个任务在提供的上下文内都是可解的,从而为编码智能体的性能提供更准确的衡量。

智能体脚手架设计

Anthropic 利用了一个极简的“智能体”系统——Claude 3.5 Sonnet 模型与软件脚手架的结合——以最大限度地发挥模型自身的判断力和控制力。该脚手架避免了硬编码的工作流,而是采用了一种灵活的交互循环。

工具集与接口

智能体配备了两个主要工具:

  • Bash Tool: 在持久化环境中执行 bash 命令。它通过 aptpip 提供对常见 Linux 和 Python 包的镜像访问,但无法访问互联网。
  • Edit Tool (str_replace_editor): 一个用于查看、创建和编辑文件的复杂工具。它使用字符串替换策略(old_strnew_str)以确保可靠性;只有在目标字符串恰好有一个匹配项时,替换才会发生。

提示词策略

智能体由一个提示词引导,该提示词建议了一种通用方法——探索仓库、创建复现脚本、编辑源代码、验证修复方案——而不强制执行严格的转换。Anthropic 指出,鼓励模型生成长而详尽的回答可以提高性能,对于那些不受 token 成本限制的用户来说是如此。

性能结果

在使用相同的智能体脚手架时,升级后的 Claude 3.5 Sonnet 显著优于之前的迭代版本和之前的最先进模型。

Model SWE-bench Verified Score
Claude 3.5 Sonnet (new) 49%
Previous SOTA 45%
Claude 3.5 Sonnet (old) 33%
Claude 3 Opus 22%

智能体行为与能力

对模型日志的分析表明,升级后的 Claude 3.5 Sonnet 比之前的模型表现出更强的自我纠错能力。当第一次尝试失败时,它更有可能尝试多种不同的解决方案,而不是重复相同的错误。

在典型的工作流中,模型:

  1. 使用 Edit Tool 探索仓库结构。
  2. 创建独立的 Python 脚本来复现报告的 bug。
  3. 通过 Bash Tool 执行脚本以确认错误。
  4. 使用字符串替换对非测试文件进行极小改动。
  5. 重新运行复现脚本以验证解决结果。

软件工程评估中的技术挑战

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

  • 资源密集型: 成功的运行可能需要数百轮交互并超过 100k tokens,导致高昂的成本和较长的持续时间。
  • 评分噪声: 系统问题,例如环境搭建错误或重复安装补丁,可能导致模型在行为正确的情况下被错误地标记为失败。
  • 隐藏的测试差异: 由于模型无法看到评分测试,它可能会认为自己成功了,但实际上它只是应用了一个“权宜之计”的修复(bandaid fix)而不是重构,或者未能匹配原始人工 PR 的特定单元测试。
  • 多模态差距: 虽然 Claude 3.5 Sonnet 具有视觉能力,但当前的脚手架不允许它查看文件系统上的文件或 URL,这使得像 Matplotlib 这样的库的调试变得更加复杂。

Sources

相关