HumanEval 是用于评估大语言模型 (LLM) 代码生成能力的基准。它由 OpenAI 开发,用于评估驱动该公司软件工程智能体 Codex 的 AI 模型的早期版本。
HumanEval 基准专为 Python 生成的代码而设计。它超越语法层面,验证所创建的代码既准确又能按预期运行。
该基准的框架可通过 OpenAI HumanEval GitHub 仓库访问。HumanEval 还有一个排行榜 ,对不同代码生成模型的性能进行排名,包括 Claude 系列、Kimi K2、Google Gemma 和 Gemini、GPT-5 以及较旧的 GPT-4o 和 GPT-4,还有 IBM Granite 系列等。
获取有关最重要且最有趣的 AI 新闻的精选洞察分析。订阅我们的每周 Think 时事通讯。请参阅 IBM 隐私声明。
函数签名定义了函数的名称和参数。例如,下面是计算两个整数乘积的函数的签名:
文档字符串是一个自然语言提示或描述,说明函数的预期行为、目标、输入和输出。这些注释概述了函数的功能,在生成 Python 代码时引导模型。
例如,乘法函数的文档字符串将是:
这是分配给模型生成的代码的段落。它包含根据函数签名和文档字符串对问题的实现解决方案。
这些测试用例验证生成的代码在不同场景下的功能正确性。每个测试向函数输入特定输入,然后根据预期结果检查输出。
以下是乘法函数的一些示例单元测试:
许多代码 LLM 基准测试采用用于文本生成的方法,例如基于匹配的指标,将生成的代码样本与参考解决方案进行比较。但基于匹配的指标通常不考虑解决问题的多种方式,其中任何一种方式在功能上都可能与参考解决方案等效。
这就是为什么 HumanEval 基准转向了功能正确性,如果生成的代码样本通过了一组单元测试,则认为它是正确的。这种方法反映了开发人员通过在一系列单元测试中运行代码并确保其通过每一个测试来评估其代码成功与否的方式。
HumanEval 使用 pass@k 指标来衡量功能正确性。对于每个问题,模型生成 k 个代码样本。如果其中任何一个样本通过了单元测试,则认为该问题已正确解决。pass@k 指标估计了 k 个样本中至少有一个在功能上正确的概率。
数据集中的编程问题因其广泛可得,可能在模型训练期间已被模型遇到过。问题的数量也少到足以让代码生成模型可能全部记住它们。
编程不仅仅是功能正确性。例如,HumanEval 没有考虑效率。这意味着 LLM 生成的准确且按预期工作的代码,在性能方面可能不是最高效和最优化的解决方案。
该基准也没有考虑编程最佳实践,例如编码约定、风格标准、错误处理、输入验证和安全编码。
HumanEval 是专门为开源 Python 编程语言量身定制的。使用其他语言生成的源代码必须使用其他基准进行评估。
该基准有几个不同的版本,解决了其部分局限性:
HumanEval+
HumanEval-V
HumanEval-X
HumanEvalNext
HumanEval 中的每个编程问题平均约有 7 到 8 个单元测试。1HumanEval+ 显著提高了测试覆盖率,每个问题平均达到 764 个测试,实现更严格的评估。2
HumanEval-V 在其前身的基础上构建,为多模态 AI 模型(特别是视觉语言模型,VLM)创建了一个基准。它评估 VLM 在编程环境中理解图表、图示和图形并对其进行推理的能力,例如基于算法的流程图或矩阵变换生成代码。
HumanEval-X 将原始基准扩展到包括 C++、Go、Java 和 JavaScript 编程语言。其 820 个任务可用于评估代码生成和代码翻译能力。
HumanEvalNext 对 HumanEval 进行了改进。它通过类型注解(指示函数参数和返回值数据类型的编程语法)添加了更多上下文,包含了更多边缘情况,引入了更多单元测试,并提高了问题的难度。3
借助您的 AI 合作伙伴 Bob,加速软件交付,实现安全的意图感知型开发。
利用可信的 AI 驱动型工具优化软件开发工作,最大限度地减少编写代码、调试、代码重构或代码补全的时间,从而拓展创新空间。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策能力和商业价值。
1. 评估基于代码训练的大语言模型,arXiv,2021 年 7 月 14 日
2. 您由 ChatGPT 生成的代码真的正确吗?对代码生成大语言模型的严格评估,arXiv,2023 年 10 月 30 日
3. 软件工程中的AI模型基准测试:提升基准质量的综述、搜索工具与统一方法,arXiv,2025 年 12 月 12 日