HumanEval(代码生成评估基准)
就是让 AI 写 Python 函数,然后跑测试看能过几道题
亦作、亦称:代码生成评估基准
HumanEval 是代码大模型评测的奠基性基准,由 OpenAI 于 2021 年发布,以 pass@k 指标衡量模型从自然语言描述生成可运行 Python 代码的能力。该基准直接推动了代码生成领域的快速发展,也催生了 EvalPlus 等更严格的继任基准。
概述
HumanEval 是衡量代码大模型能力的基础性基准,与 Codex 模型同步于 2021 年发布。
- 包含 164 道手工编写的 Python 函数级编程题
- 每题提供函数签名、自然语言 docstring 及若干单元测试(平均约 7.7 个)
- 通过实际执行生成代码来验证功能正确性,而非字符串匹配
- 首次引入 pass@k 指标体系,成为代码生成评测的通用范式
- 发布时 Codex pass@1 为 28.8%,GPT-3 为 0%,成为衡量后续模型进步的基线
工作原理
HumanEval 的评测流程以功能正确性为核心,区别于传统 NLP 任务的字符串相似度评测。
- 输入:模型接收包含函数签名和 docstring 的 prompt,生成函数体
- 执行验证:生成代码在沙箱环境中运行,与预置单元测试对比结果
- pass@k 计算:对每题采样 n 个解(通常 n ≥ k),随机选 k 个,若有任意一个通过所有测试则计为解决
- 无偏估计:论文给出 pass@k 的无偏估计公式,避免直接采样的统计偏差
- 聚合得分:将所有题目的解决率取平均,得到最终基准分数
变体与演进
HumanEval 发布后,社区在其基础上衍生出多个更严格或更全面的变体。
- HumanEval+(EvalPlus,NeurIPS 2023):在原始测试用例基础上扩充约 80 倍,暴露出更多边界错误,是目前推荐的严格评测版本
- HumanEval-X(CodeGeeX):将题目扩展至 C++、Java、JavaScript 等多语言
- MBPP:Google 发布的类似基准,含约 500 道众包 Python 题,常与 HumanEval 联合报告
- SWE-bench:面向真实 GitHub Issue 修复的更高难度基准,测试更接近工程实践
- LiveCodeBench:使用竞赛平台动态更新题目,缓解数据污染问题
应用场景
HumanEval 广泛用于代码大模型的研究评测与模型选型决策。
- 模型对比:Codex、CodeGen、StarCoder、DeepSeek-Coder、GPT-4 等均报告该指标,便于横向比较
- 训练数据消融:研究不同预训练数据配比对代码能力的影响
- 指令微调效果:评估指令微调(Instruction Tuning)对代码生成能力的提升幅度
- 模型发布报告:绝大多数代码相关 LLM 的技术报告将 HumanEval pass@1 作为必报指标
- 工具链集成:EvalPlus、BigCode Evaluation Harness 等框架内置 HumanEval 评测流程
与相邻概念的区别
理解 HumanEval 与其他代码评测基准的差异,有助于选择合适的评测方案。
- HumanEval vs MBPP:HumanEval 手工编写、更严格;MBPP 众包产生、数量更多但质量参差
- HumanEval vs SWE-bench:HumanEval 测单函数算法题;SWE-bench 测真实代码库的 Bug 修复,难度更高、更贴近工程
- HumanEval vs LiveCodeBench:HumanEval 题目固定易泄漏;LiveCodeBench 持续从竞赛平台抓取新题,抗污染能力更强
- pass@1 vs pass@k:pass@1 衡量模型一次生成的期望质量;pass@k(k>1)衡量多次采样中的最优潜力,适合评估模型上限
局限与误区
HumanEval 存在若干已知局限,使用时需谨慎解读分数。
- 题目过少且偏窄:仅 164 题,72.1% 的题目集中在 5 个核心概念,38 个编程概念中有 14 个未覆盖
- 数据污染风险:题目在网络上广泛流传,模型预训练数据可能包含原题或变体,导致分数虚高 3-14 个百分点
- 测试用例不足:原始单元测试过少,EvalPlus 发现大量「通过」解法存在边界错误
- 不代表工程能力:不涉及多文件、依赖管理、API 调用等真实工程场景
- 常见误区:pass@1 高不等于实际编程助手体验好,用户体验受延迟、上下文理解等多因素影响
发展脉络
HumanEval 的发布标志着代码生成评测进入功能正确性时代。
- 2021-07:OpenAI 发布 Codex 与 HumanEval,Codex pass@1=28.8%,确立 pass@k 指标
- 2022:CodeGen(Salesforce)、InCoder 等模型在 HumanEval 上持续刷新纪录
- 2023-07:EvalPlus(HumanEval+)在 NeurIPS 2023 发布,揭示原始评测的严重不足
- 2023-2024:GPT-4、Claude 3、DeepSeek-Coder 等模型 pass@1 超过 85%,HumanEval 区分度下降
- 2024-2025:社区逐步转向 SWE-bench、LiveCodeBench、BigCodeBench 等更难、更动态的基准
- 现状:HumanEval 仍是论文基线必报指标,但已不再是代码能力评测的唯一参考
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「就是让 AI 写 Python 函数,然后跑测试看能过几道题」
- 「pass@1 就是模型一次写对的概率,pass@10 就是给十次机会至少一次写对的概率」
- 「现在很多模型刷分刷得很高,但 HumanEval 题目太简单、太少,不代表真实编程能力」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
- 1
AI 编码智能体评测方法论:从基准测试到实战评估
系统理解 AI 编码智能体的评测体系:主流基准测试(SWE-bench、HumanEval、LiveCodeBench)的设计原理、局限性,以及企业级实战评估方法论
- 2
大模型基准测试方法论:综合基准测试的科学评估
2026 年大模型进入基准测试泛滥时代。从 MMLU、GSM8K 到 Arena Hard,从 Leaderboard 刷分到真实能力评估,本文系统讲解 LLM 基准测试的完整方法论:测试集设计、评估维度、排行榜陷阱、科学评估框架以及开发者如何正确理解和使用基准测试结果。
- 3
LLM 评测体系:从 MMLU 到 LMSYS Arena
系统梳理大语言模型评测的核心基准、方法论、Goodhart 定律陷阱,以及如何设计科学可靠的模型评估体系