OpenAI 停止 SWE-bench Verified 评估

OpenAI 已停止报告 SWE-bench Verified 基准的结果,得出结论认为它已不再准确衡量前沿 AI 模型在真实世界中的软件工程能力。此决定源于一项分析,显示分数的提升往往反映了训练数据的污染,而非真正的能力提升,同时该基准的测试用例存在重大缺陷。

测试用例设计缺陷

对 138 个 OpenAI o3 未能始终解决的问题进行审计,发现其中 59.4% 的任务在测试设计或问题描述上存在实质性问题。这些缺陷使得任务几乎不可能被解决,无论模型能力如何。

OpenAI 将这些失败归类为两大类型:

  • 狭窄测试用例 (35.5%): 强制要求特定实现细节,而这些细节并未在问题描述中提出的测试。例如,在任务 pylint-dev__pylint-4551 中,测试失败是因为模型没有为新函数命名为 get_annotation,尽管需求中并未指定函数名。
  • 宽泛测试用例 (18.8%): 检查问题描述中未提及的功能的测试。在任务 sympy__sympy-18199 中,问题描述仅涉及原始 PR 中的三个问题之一,但测试要求对全部三个问题进行修复才能通过。

训练数据污染

由于 SWE-bench 的问题来源于模型训练中使用的开源仓库,前沿模型在训练阶段已经接触到这些解决方案(黄金补丁)。OpenAI 发现所有受测的前沿模型都能够复现某些任务的原始人工编写的 bug 修复或逐字的问题细节。

在多个模型系列中发现了污染证据:

  • GPT-5.2: 展示了对发布说明和特定参数(例如 Django 4.1 中的 edit_only)的了解,而这些并未在问题陈述中明确要求。
  • Claude Opus 4.5: 能够回忆起原始 diff 中的四行功能性更改、特定文件名以及逐字的内联注释。
  • Gemini 3 Flash: 仅使用任务 ID 作为提示,就生成了任务描述和黄金补丁中的逐字细节,包括正则表达式公式和精确的行号。

OpenAI 指出,在训练期间接触过这些问题的模型更有可能成功,因为它们拥有通过这些未明确指定或有缺陷的测试所需的额外信息。

对 AI 评估的影响

OpenAI 为未来 AI 基准的设计确定了两个关键教训:

  1. 污染风险: 来源于公开材料的基准容易出现无声的分数膨胀。OpenAI 建议开发者使用密码保护的数据集并采用严格的金丝雀字符串进行训练数据过滤。
  2. 自动评分的复杂性: 创建既不关注不重要实现细节又能抵御投机取巧的完美测试用例本质上非常困难,需要大量人工审查。

推荐的替代方案

OpenAI 正在开发新的、未受污染的评估,以跟踪编码能力。与此同时,实验室建议模型开发者报告 SWE-bench Pro 公共分支的结果。虽然并不完美,但实证证据表明 SWE-bench Pro 的污染程度显著更低,且没有受测模型能够生成完整的逐字黄金补丁。

对于高风险的测量,OpenAI 推荐使用 GDPVal,其任务由领域专家私下编写,并由人工评审者整体评分,以消除暴露风险。

Sources