现有基准测试衡量的是解决率和成本,但不会惩罚多余的代码,而这会让代码库在长期内更难维护。简约性衡量的是 AI 模型新增了多少代码。
它取用基准测试已经发布的补丁,并统计代码单元:诸如语句、调用、比较、名称和字面量之类的语法元素。不按行计数,因此堆砌代码不会得到奖励,删除的代码会被减去:净单元 = 新增 − 删除。
比较模型
图表
X 轴Y 轴
模型按其在已解决任务上新增的平均净单元数排名,从低到高。“新增净单元数(平均值)”也包括失败的尝试。Solved 来自SWE-bench Verified;测试不会重新运行。Measured 表示有多少次已解决的尝试可以被测量。
排行榜
任务| 排名 | 模型 |
|---|
方法
- 每个补丁都会被应用到任务的代码上,并且每个被修改文件的两个版本都会被解析。不会运行任何东西。
- 测试、文档和生成的文件被排除在外。只测量 Python。
- 通过/失败来自 SWE-bench 已发布的结果;测试不会重新运行。
局限
- 更小并不总是更好:单元衡量的是规模,而不是可读性或设计。
- 写更多代码的模型往往也能解决更多任务(在拥有 26 个以上模型的榜单上,Spearman 相关系数为 0.33–0.60)。
- 每个模型都使用相同的智能体(mini-SWE-agent),但该智能体仍会影响写出多少代码。
添加你自己的基准测试
有来自其他基准测试的代码规模数据?下载示例文件,填入你的结果并打开它,即可得到相同的图表和表格。该文件会留在你的浏览器中。格式以及如何分享。
打开基准测试 JSON示例:检查是否为负数
两者返回相同的结果。
def has_negative(values):
found = False
for value in values:
if value < 0:
found = True
return founddef has_negative(values):
return any(value < 0 for value in values)