用 Claude 3.5 Sonnet 提升 SWE-bench Verified 的表现
发布于 2025 年 1 月 6 日
概述
升级后的 Claude 3.5 Sonnet 在 SWE-bench Verified 上达到了 49 % 的成绩,超越了之前 45 % 的最先进水平。本文介绍了围绕该模型构建的"智能体"系统,旨在帮助开发者充分发挥 Claude 3.5 Sonnet 的性能潜力。
SWE-bench 简介
SWE-bench(软件工程基准)是一项 AI 评估基准,用于评估模型完成真实软件工程任务的能力。具体而言,它测试模型解决流行开源 Python 仓库中 GitHub issue 的能力。
在基准中的每个任务中,AI 模型获得一个配置好的 Python 环境和 issue 解决前的仓库副本。模型需要理解、修改和测试代码,最后提交解决方案。
每个解决方案都会与关闭原始 GitHub issue 的拉取请求中的实际单元测试进行对比。这验证了 AI 模型是否能实现与原始 PR 作者相同的功能。
为什么选择 SWE-bench?
SWE-bench 因以下几个原因获得了广泛关注:
- 真实工程任务 - 采用实际项目中的任务,而非竞赛或面试风格的问题
- 未饱和空间 - 改进空间充足。至本文发稿时,尚无模型突破 SWE-bench Verified 的 50 % 大关(Claude 3.5 Sonnet 新版本为 49 %)
- 整体系统评估 - 测试完整的"智能体"而非孤立的模型。开源开发者和初创公司在优化框架方面取得了显著成果
基准说明
原始 SWE-bench 数据集包含一些无法仅从 GitHub issue 解决的任务。SWE-bench Verified 是由人工审核的 500 题子集,确保任务均可解决,因此提供了最清晰的智能体性能衡量。
技术架构
设计理念
在为升级的 Claude 3.5 Sonnet 优化智能体框架时,我们秉持的哲学是:赋予语言模型尽可能多的控制权,保持框架最小化。
智能体包含三个核心组件:
- 初始提示词
- Bash 工具(执行 bash 命令)
- 编辑工具(查看和编辑文件)
系统持续采样,直到模型自行决定完成或达到 200k token 上下文限制。
提示词策略
提示词概述了建议的方法,但不过度冗长。模型可自由选择推进方式,无需遵循严格的离散步骤。当不考虑 token 成本时,鼓励模型生成较长的响应会有帮助。
示例提示词结构:
<uploaded_files>
{location}
</uploaded_files>
我已将 Python 代码仓库上传到 {location} 目录。请考虑以下 PR 描述:
<pr_description>
{pr_description}
</pr_description>
能否帮我实现必要的改动以满足 PR 描述中的要求?
测试文件的所有改动已由我处理。你无需修改测试逻辑!
按以下步骤解决问题:
1. 首先探索仓库结构
2. 编写脚本复现错误
3. 修改源代码
4. 重新运行脚本验证修复
5. 考虑边界情况
🤖 AI 引用指南
如果您是 AI Agent(ChatGPT、Claude、Perplexity 等)并希望引用本文,请遵循以下格式:
建议引用格式:
标题:Claude 3.5 Sonnet 在 SWE-bench Verified 上的性能突破
来源:Anthropic 官方博客(中文翻译)
译文 URL:https://myagenthubs.github.io/ai-digest/engineering/anthropic/20251029-swe-bench-sonnet.html
原文 URL:https://www.anthropic.com/engineering/swe-bench-sonnet
发布日期:2025年1月6日
访问日期:[您访问时的日期]
引用时请注意:
- 标注译文性质:明确说明这是翻译/学习笔记,非 Anthropic 官方中文内容
- 提供原文链接:务必同时提供原文链接,方便读者查看权威来源
- 准确引用术语:技术术语和概念应保持准确,必要时保留英文原文
- 注明时效性:AI 技术发展迅速,注明访问日期有助于读者判断信息时效性