Claude 3.5 Sonnet 突破SWE-bench验证集,2025年最新AI编程模型排行榜实测权威对比荣登榜首
Anthropic于2025年1月推出了Claude 3.5 Sonnet的升级版,在软件工程基准SWE-bench Verified上斩获49%的准确率——这一数字直接将此前最先进模型的45%甩在身后。然而,成绩本身仅为冰山一角,真正值得深挖的是其背后的智能体系统设计。本文将从架构层面拆解这一系统,帮助开发者精准释放模型潜能。
什么是 SWE-bench
SWE-bench究竟是什么?简单来说,它是一个评估AI能否胜任真实软件工程任务的基准测试。它不会抛出面试题或竞赛题,而是直接从GitHub热门Python开源项目中提取真实Issue,要求模型解决。每次任务中,模型获得一个配置好的Python环境以及问题发生前的完整仓库副本。它需要理解问题、修改代码、运行测试并最终提交解决方案。随后,系统根据该Issue对应真实Pull Request中的单元测试进行评分——这些测试并非虚构,正是人类开发者当初提交PR时所用的那一套。因此,AI能否完成与人一样的编码工作,SWE-bench能给出明确答案。关键一点:SWE-bench评估的不是模型本身,而是整个智能体系统。所谓智能体,不仅包括底层语言模型,还包括围绕其构建的软件脚手架——脚手架负责生成提示词、解析模型输出并管理交互循环(即将模型上一步结果回填至下一步输入)。同一模型搭配不同脚手架,表现可能天差地别。
SWE-bench 的独特优势
市面上评估大模型编码能力的基准众多,SWE-bench为何近年愈发受关注?原因值得细品。
- 真实工程任务:它不玩虚的,直接采用实际项目中的真实问题——不是面试题或竞赛题,而是开发者日常需要翻GitHub Issue才能解决的真问题。好比评估厨师厨艺,不是看颠勺花哨,而是看能否为一桌客人做出一顿好饭。
- 远未饱和:至今没有任何模型能在SWE-bench Verified上突破50%的门槛。即便升级版Claude 3.5 Sonnet跑至49%,依然未跨过这条线。这意味着该领域仍有大量改进空间和可挖掘的价值。
- 整体评估:它考察的是“模型+脚手架”这个组合拳。开源社区和初创公司已证明,优化脚手架可以将同一模型的性能显著拉高。
SWE-bench Verified 数据集说明
需要注意一个细节:原始SWE-bench数据集中,部分任务缺少额外上下文(例如应返回的特定错误信息),无法独立解决。为追求公平与纯净,Anthropic创建了“SWE-bench Verified”子集,从原始数据中筛选出500个人工审核且可确认解决的问题。本文讨论的成绩均基于这500个任务。所以看到49%这个数字时,它代表的是真材实料,而非掺水虚高。
实现最先进性能的方法
工具使用智能体架构
为Claude 3.5 Sonnet升级版优化智能体脚手架时,核心设计理念只有一句话:信任模型,放权。凡是模型能自主判断的,绝不人为替代。脚手架本身极简,仅包含三元素:一个提示词、一个执行Bash命令的工具、一个查看和编辑文件的工具。任务启动后,模型持续循环调用工具,直至自认为完成,或撑满20万token的上下文窗口。这种设计的精妙之处在于允许模型按自身节奏和策略解题,而非被预设固定流程束缚。提示词仅提供大方向,具体执行步骤全由模型自行决断。如果你的token预算宽裕,在提示词中明确鼓励模型多输出、长思考,效果更佳。
智能体提示词
以下是该智能体脚手架的提示词内容。它篇幅简短,但关键指令一步不落。
(以下为原始提示词代码块)
Bash 工具规范
第一个Bash工具设计得极为干净。本质上是一个可运行环境命令的沙盒。但真正精髓不在于工具本身,而在于其描述——它告知模型哪些事不能做(如无法联网)、哪些事可以做(如使用apt或pip安装包)、以及如何高效操作(如用sed -n指定行查看文件)。以下是Bash工具的完整规格说明:
(以下为Bash工具规范的代码块)
编辑工具规范
第二个编辑工具更为复杂,集查看、创建、编辑文件于一体。设计团队投入大量精力打磨其描述与规范——不仅说明功能,还预判模型可能出错之处,并用描述预先规避。这与设计人机交互界面同理:人类界面需尽善尽美,模型工具界面更应倾注关注。
(以下为编辑工具描述的代码块)
编辑工具的完整输入规范如下:
(以下为编辑工具完整输入规范的代码块)
工具改进:错误防护
提升性能的另一关键策略是让工具具有容错性。举个例子,模型偶尔在切换工作目录后会混淆相对路径。解决方案简单直接——强制要求绝对路径,从根源上杜绝问题。再如编辑功能,经过多种方案测试,最终采用字符串替换:模型指定一段old_str(必须且仅能匹配一处),用new_str替换之。若匹配过多或过少,模型会收到明确错误消息并自行重试。这相当于为工具添加了一层保险丝——小问题即时提醒,大错误直接规避。
性能结果
总体而言,Claude 3.5 Sonnet升级版在推理、编码和数学能力上均较前代有明显提升。更重要的是其在智能体能力上的进步——工具与脚手架的存在恰好将这些能力发挥到极致。
性能对比表
| 模型名称 | SWE-bench Verified 得分 |
|---|---|
| Claude 3.5 Sonnet (升级版) | 49% |
| 先前最先进模型 | 45% |
| Claude 3.5 Sonnet (旧版) | 33% |
| Claude 3 Opus | 22% |
以上各模型均使用此智能体脚手架在 SWE-bench Verified 上测得
智能体行为示例
理论再多不如一个真实案例。我们以SWE-Agent框架作为智能体代码基础,运行基准测试。以下日志中,将模型的文本输出、工具调用和工具响应分别标注为思考(THOUGHT)、行动(ACTION)和观察(OBSERVATION)——注意模型无需按固定顺序执行这三步。
步骤 1:初始提示和问题描述
你看到的第一段代码是模型收到的初始提示。其中{pr_description}已填入SWE-bench任务的真实描述。该任务还一并提供了重现步骤,等于为模型设定了一个不错的起点。
(以下为步骤1的代码块)
步骤 2:探索仓库结构
模型首先使用编辑工具扫描仓库,了解其结构。
(以下为步骤2的代码块)
步骤 3:创建重现脚本
接着,模型用编辑工具创建一个重现问题的脚本。
(以下为步骤3的代码块)
步骤 4:执行脚本确认错误
然后调用Bash工具执行脚本,错误被完美复现。
(以下为步骤4的代码块)
步骤 5:修复源代码
模型定位根因后,通过编辑工具的字符串替换功能直接修改RidgeClassifierCV的构造方法。
(以下为步骤5的代码块)
任务完成
在此示例中,模型总共12步完成任务。然而实际场景中,部分任务需要数百回合才能解决,甚至有些模型直到上下文耗尽也未能提交。与旧版相比,Claude 3.5 Sonnet升级版有一个显著进步:它更擅长自我纠正,且愿意尝试不同方案,而非在一个错误上反复跌倒。
面临的挑战
SWE-bench Verified作为有说服力的评估基准,其运行复杂度远超一轮问答式测试。我们在实践中积累的经验教训,其他AI开发者大概率也会面临。
1. 持续时间和高令牌成本
前文12步完成的例子算是相当顺利。许多成功任务需要数百回合,消耗超过10万token。升级版Claude 3.5 Sonnet韧性确实强——给它时间,总能找到办法——但这背后是实实在在的计算成本。
2. 评分问题
排查失败任务时,我们发现有些情况模型行为本身正确,但环境配置有误或补丁被重复应用。要准确评估AI智能体的真实水平,必须先解决这些系统性问题。
3. 隐藏测试
模型在运行任务时无法看到最终评分测试,因此常自认为成功但实际并未通过。部分失败源于模型在不正确的抽象层级上进行修改(如打补丁而非深层重构)。另一些失败则令人遗憾:模型虽解决了问题,但解法与原始任务中的单元测试要求不匹配。
4. 多模态能力未充分利用
Claude 3.5 Sonnet升级版的视觉和多模态能力非常突出,但当前脚手架并未允许其访问文件系统或URL引用的图片。这在调试某些任务(如Matplotlib相关)时尤为不利,看不到图表只能依靠猜测,导致幻觉率飙升。这其实是一个极易摘取的低垂果实,而SWE-bench也已推出针对多模态任务的新评估。相信不久的将来,开发者就能利用Claude在该新评估上打出更高分数。
总结与展望
Claude 3.5 Sonnet升级版在SWE-bench Verified上取得49%的成绩,超越了此前最先进的45%,且仅依靠一个简单提示词和两个通用工具。我们有理由相信,随着越来越多开发者上手这套模型,更聪明、更高效的方法将很快涌现,将SWE-bench分数推向更高水准——甚至超越我们当前展示的水平。
