HumanEval Benchmark — HumanEval 基准测试
HumanEval 是一个基准数据集(基准测试),旨在根据任务的文本描述客观评估人工智能模型生成的代码质量[1]。它由 OpenAI 的研究人员在马克·陈(Mark Chen)的带领下于2021年7月推出,并已成为衡量生成程序功能正确性的关键标准之一。
HumanEval 的开发是为了满足对可靠代码生成评估方法的需求。此前,由语言模型生成的代码质量通常通过间接指标(如 BLEU)或手动评估,这并不能保证与程序的实际功能相符。HumanEval 通过关注功能正确性解决了这个问题:生成的代码不是根据其与参考实现的语法相似度来评估,而是根据其成功通过一系列自动化单元测试的能力来评估[1]。
任务集结构
该基准测试包含 164 个编程任务,这些任务均为人工编写,以确保它们不出现在模型的训练数据中。所有任务都使用 Python 语言编写,并以带有描述的代码片段形式呈现[2]。
每个任务包括:
- 函数签名:包含函数名称和参数的函数签名。
- 文本描述:描述所需功能的英文文档字符串(Docstring)。
- 函数体:一个空白区域,需要模型用生成的代码来填充。
每个任务还包含对模型隐藏的元素:
- 标准解法:函数的正确(参考)实现。
- 单元测试集:用于自动验证生成代码的正确性。这些测试覆盖了常规情况和边缘情况。
这些任务涵盖了广泛的主题,从基本的语言结构和算法到简单的数学问题,使得该数据集对模型来说既多样化又具有挑战性。
模型评估方法
HumanEval 的主要成功指标是 pass@k,它衡量模型在功能上正确解决的任务比例[1]。如果生成的代码通过了某个任务的所有自动化测试,则该解决方案被认为是成功的。
- pass@1:最主要且最常用的指标。它表示模型在第一次尝试中解决的任务百分比(即为每个任务生成一个解决方案)。
- pass@k:在一般情况下,该指标表示模型生成的 k 个解决方案中至少有一个通过所有测试的任务比例。例如,pass@10 显示了如果模型对每个任务最多尝试10次,它能解决的任务比例。
由于直接计算 pass@k 需要大量样本,原作者提出了一种统计上正确的方法来计算该指标,从而得到无偏估计[1]。
实际测试在专门的“沙箱”环境中进行:生成的代码被编译并在测试集上运行。这种方法可以衡量模型生成可执行且正确的代码的能力,而不仅仅是生成与参考实现语法相似的代码。
结果与行业影响
在 HumanEval 上的初步实验表明,通用模型与专门针对代码进行训练的模型之间存在显著差距。
- 2021年,OpenAI Codex 模型(120亿参数,在 GitHub 代码上训练)在第一次尝试中成功解决了约 28.8% 的任务(pass@1)。
- 与此同时,更大规模的、未在代码上进行训练的语言模型 GPT-3(1750亿参数)未能正确解决任何一个任务[1]。
这些结果强调了在编程数据上进行专门训练对于成功生成代码的必要性。自 HumanEval 问世以来,该基准测试迅速成为比较新模型进展的标准测试。
- GPT-3.5 系列模型(2023年初)的 pass@1 达到了 ~72%。
- GPT-4 模型(2023年)表现更佳,基础版达到了 ~67%,经过额外微调后超过了 85%[3]。
- 开源模型,如 Code Llama(Meta,2023年)和 WizardCoder(2023年),也取得了优异成绩(pass@1 分别约为 53% 和 57%),超越了早期的专有模型[4]。
基准测试的扩展与变体
HumanEval 的成功启发了多个衍生版本的创建,旨在更广泛的条件下评估模型。
- CL-HumanEval(Cross-Lingual HumanEval):一个跨语言版本(2024年),其中原始 HumanEval 的任务被调整,用于测试模型理解不同语言(非英语)描述并生成 Python 代码的能力[5]。
- Multilingual HumanEval:一个扩展版本(2023年),旨在评估基于英文描述生成 12 种不同编程语言(包括 Java、C#、JavaScript 等)代码的能力[6]。
- HumanEval-XL:一个大规模基准测试(2024年),结合了上述两种方法。它包含12种编程语言的任务,以及翻译成全球23种语言(包括俄语、中文、阿拉伯语等)的文本描述。HumanEval-XL 总共包含超过 22,000 个“描述-代码”对[7]。
链接
参考文献
- Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
- Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
- Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
- Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
- Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
- Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
- Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
- Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
- Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
- Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
- Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
- Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.
注释
- ↑ 1.0 1.1 1.2 1.3 1.4 Chen, M. et al. «Evaluating Large Language Models Trained on Code». arXiv:2107.03374, 2021. [1]
- ↑ «openai/openai_humaneval». Hugging Face Datasets. [2]
- ↑ Niu, C. et al. «On Evaluating the Efficiency of Source Code Generated by LLMs». Proceedings of the 2nd International Conference on AI-generated Content, 2024. [3]
- ↑ Lutfullaev, J. «HumanEval on LLMs Revisited in Late 2023». arXiv:2402.14852, 2023. [4]
- ↑ Sato, M. et al. «CL-HumanEval: A Benchmark for Evaluating Cross-Lingual Transfer through Code Generation». Proceedings of the 38th Pacific Asia Conference on Language, Information and Computation, 2024. [5]
- ↑ Athiwaratkun, B. et al. «Multilingual HumanEval: A Multilingual Code Generation Benchmark». arXiv:2307.11892, 2023. [6]
- ↑ Liu, J. et al. «HumanEval-XL: A Multilingual Code Generation Benchmark for Cross-lingual Natural Language Generalization». LREC-COLING 2024. [7]