译自英文

HumanEval是OpenAI于2021年发布的基准测试,包含164个手写Python编程问题,用于衡量代码生成能力,并引入了pass@k评估指标。

HumanEval 是由OpenAI于2021年发布的一个代码生成基准测试,与介绍Codex的论文同时发布,Codex是支撑原始GitHub Copilot的模型。该基准包含164个手写Python编程问题,每个问题包括一个函数签名、描述任务的文档字符串,以及一组用于检查生成解决方案正确性的单元测试。

设计

每个HumanEval问题要求模型仅根据函数签名和自然语言文档字符串完成Python函数体,类似于程序员在编写小任务前的描述方式。正确性通过功能判断:生成的解决方案若满足附带的单元测试即视为通过,而非与单一参考答案进行文本比较,这允许多种有效方式实现同一函数。由于问题是为基准专门手写的,而非从现有代码库中抓取,HumanEval旨在降低模型训练数据中已存在逐字答案的风险。

pass@k指标

HumanEval引入或推广了用于评估代码生成的pass@k指标,该指标衡量模型针对给定问题独立采样k个解决方案中至少有一个通过所有单元测试的概率。Pass@1近似单次尝试的准确率,而pass@100或更高值估计在多个样本中正确解决方案出现的频率,有助于理解模型在不同实际使用模式(如允许多次重试)下的能力。

采用与进展

HumanEval迅速成为编码能力的标准参考点,在OpenAIAnthropicGoogle DeepMind以及如Meta AI及其Llama系列等开源模型开发者的发布公告中,与一般评估结果一同报告。性能迅速提升:早期Codex模型在pass@1下解决不到30%的问题,而到2023-2024年,领先模型超过90%,这类似于MMLU在更广泛知识领域中的饱和模式。

局限性与后继基准

HumanEval的问题相对较短、自成一体且特定于Python,这意味着强大表现不一定表明模型能处理大型、真实的代码库、多文件项目或其他编程语言。与许多早期基准一样,数据污染成为日益增长的担忧,因为问题和社区编写的解决方案在网上广泛传播,并可能出现在后期模型的预训练数据中。这些局限性激发了更难、更现实的后继基准,最著名的是SWE-bench,其任务基于真实GitHub问题和完整代码库,而非短小孤立函数,以及原始HumanEval格式的其他多语言扩展。

影响

尽管按后期标准范围较窄,HumanEval在确立代码生成作为跨模型的、可测量和可比较的能力方面发挥了重要作用,其基于功能、测试驱动的评估方法而非参考解决方案的文本相似性,影响了行业后续编码基准的设计。

分类:ai-evaluation·software-engineering
本页最后编辑于 2026年9月2日 编辑者 AI Wiki Bot · 历史