两个基准,两种能力

HumanEval和SWE-bench是目前最主流的两个AI编程能力评测基准。但它们测的其实是两种完全不同的能力。

HumanEval(2021年,OpenAI)测试的是"函数级代码生成"——给定一个函数签名和文档字符串,模型需要生成函数体。总共164道题,每道题测试一个独立的编程概念(如字符串处理、递归、数据结构)。

SWE-bench(2024年,Princeton)测试的是"软件工程级问题解决"——给定一个真实的GitHub issue和对应的代码库,模型需要定位bug、修改代码、通过测试。总共2294个任务,来自12个真实的Python开源项目。

简单说:HumanEval考的是"算法题",SWE-bench考的是"修bug"。一个模型在HumanEval上得分高,说明它擅长写算法;在SWE-bench上得分高,说明它擅长修bug。两者相关但不完全重叠。

HumanEval的深度解析

HumanEval的164道题覆盖了编程的基础概念:循环、条件判断、递归、字符串操作、列表操作、字典操作、数学运算、排序、搜索等。每道题有多个测试用例,模型生成的代码必须通过所有测试用例才算正确。

2026年,前沿模型在HumanEval上的pass@1已经达到90%以上。这意味着HumanEval对最先进的模型来说已经接近"天花板",区分度越来越低。

HumanEval的主要问题:题目太简单(没有超过100行代码的题目)、没有测试工程能力(文件操作、API调用、错误处理)、测试用例不够全面(可能被"投机取巧"的代码绕过)。

SWE-bench的深度解析

SWE-bench比HumanEval难得多。2026年,最好的模型在SWE-bench上的得分也只有30-40%。

SWE-bench的独特之处在于它的"真实性":所有任务都来自真实的GitHub issue,代码库是真实的Python项目(Django、Flask、SymPy等),测试用例是项目原有的测试套件。这意味着模型不能通过"投机取巧"来得分。

但SWE-bench也有问题:偏向Python生态(2294个任务中绝大多数是Python),偏向特定类型的bug(配置错误、依赖问题等),评估成本高(运行完整的测试套件需要大量计算资源)。

2026年的新趋势:SWE-bench Multilingual

2026年,SWE-bench推出了多语言版本,覆盖了Java、JavaScript、Go、Rust等语言。这解决了原版SWE-bench"Python中心主义"的问题。

初步结果显示,模型在多语言SWE-bench上的表现显著低于Python版本——即使在Python上得分30%的模型,在Java上可能只有20%,在Rust上可能只有15%。这说明当前模型的编程能力仍然高度依赖训练数据中的语言分布。

从HumanEval到SWE-bench:AI编程能力的进化之路

回顾AI编程能力评测的演进,可以看到一个清晰的趋势:从"函数级"到"项目级"、从"算法"到"工程"、从"合成"到"真实"。

HumanEval代表了AI编程能力的"小学水平"——能写基本的函数。SWE-bench代表了"大学水平"——能在真实项目中修bug。2026年,下一个目标是"专业水平"——能独立完成一个中等复杂度的软件项目。

给开发者的建议

如果你在评估一个模型的编程能力,不要只看HumanEval分数(太简单,缺少区分度)。SWE-bench是更好的选择,尤其是如果你关心模型在实际项目中的表现。

但也要注意,SWE-bench主要测试"修bug"能力,而不是"从零构建"能力。如果你的场景是"从零构建应用",SWE-bench的相关性可能有限。

最好的方法是:用你自己的代码库和任务做一次微评测。这比任何公开评测都更有参考价值。