OpenAI 对 SWE-Bench Pro 编码评估缺陷的分析
OpenAI 对 SWE-Bench Pro 编码评估缺陷的分析
OpenAI 已经发现 SWE-Bench Pro 编码基准存在重大缺陷,估计约有 30% 的任务已损坏。这些发现促使 OpenAI 撤回其先前建议模型开发者采用 SWE-Bench Pro 取代 SWE-bench Verified 的推荐。
审计发现与任务失败率
对 SWE-Bench Pro 公共拆分(731 个任务)的审计显示,数据集的相当大部分提供了模型能力的不可靠信号。分析根据使用的方法识别了两种不同的失败率:
- 人工标注: 识别出 249 个损坏任务(34.1%)。
- 数据质量流水线: 标记出 200 个损坏任务(27.4%)。
评估缺陷的主要类别
OpenAI 将损坏的任务归类为四种主要的失败模式,这些模式使基准结果失效:
- 过于严格的测试: 强制执行提示中未要求的特定实现细节,导致功能正确的解决方案被标记为错误。
- 描述不明确的提示: 提示中省略了隐藏测试强制的要求,而模型无法合理推断这些要求。
- 覆盖率低的测试: 测试未能充分检查所请求的功能,导致不完整或错误的修复仍能通过。
- 误导性提示: 提示将模型引导至错误行为,或直接与测试要求相冲突。
质量保证的方法论
为确保任务失败反映真实的模型局限性而非基准缺陷,OpenAI 采用了多阶段质量保证流水线:
自动过滤
初始的自动过滤器审查模型尝试、任务元数据和失败追踪,标记出 286 个可能有问题的任务。
人工监督的代理审查
基于 Codex 的调查代理被授予对任务仓库和环境的访问权限。这些代理运行测试、检查文件,并调查常见的失败模式,以区分合理的歧义和真正的描述不明确。随后研究人员审查代理的摘要,作出最终判断。
人工标注活动
经验丰富的软件工程师审查了被标记的子集。每个任务由五位工程师独立审查,他们基于问题陈述、测试用例和金补丁(真实参考解)形成判断,然后再审查流水线分析。
代理与人工审查的比较
人工审查员比调查代理更可能将任务识别为损坏。虽然代理流水线与人工审查员在 74% 的案例中重叠,但人工更倾向于为单个任务分配多个标签,这表明代理加审查员的流水线较为保守。最显著的差异出现在“覆盖率低的测试”,人工在基准中识别出 9.4%,而代理流水线为 4.1%。
对编码基准的影响
OpenAI 指出,从开源仓库历史中程序化获取的基准——这些问题和拉取请求是为人类协作而设计的——往往无法产生干净、独立的任务。拉取请求中的测试常常是为了验证特定更改,而不是定义与实现无关的标准。
OpenAI 主张由经验丰富的软件开发者专门为模型评估创建新基准,以确保这些基准难以被操纵、易于信任,并真实反映模型能力。