human-eval

用164道题跑单元测试,量化代码模型写对率

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 评测安全 🍴 复刻 477 🐛 待处理 47 👀 关注 112
GitHub ↗
GitHub 星标 ★ 3418
维护状态 较活跃
是否开源 开源
定价模式 🏷️完全免费 开源免费,MIT 许可证

项目预览

human-eval 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类评测安全
开发团队openai
定价模式🏷️完全免费
价格说明开源免费,MIT 许可证
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Python
GitHub 星标★ 3418
上线时间2021-07-06 00:00:00
代码更新2026-10-16
仓库体积49 KB
本站数据更新2026-10-28
维护状态较活跃
收录时间2026-10-28
浏览次数0

项目介绍

human-eval 是 OpenAI 论文《Evaluating Large Language Models Trained on Code》的官方评测代码,用于衡量代码生成模型能否根据函数签名和文档字符串写出正确函数。它提供 164 道手写编程题及配套单元测试,通过执行模型生成的代码并运行测试,计算 pass@k 指标,即采样 k 次至少一次通过的概率。项目核心是标准化评测流程:读取模型输出样本,逐题执行测试用例,过滤超时与异常,最终汇总通过率。它解决了代码生成模型缺乏统一、可复现评测基准的问题,让不同模型的结果可以横向比较。代码简洁,依赖少,适合研究者快速接入自有模型输出。

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-10-28 · 当前星标 ★ 3418

使用教程

难度:入门 约 15 分钟 部署方式:本地安装 8 步

环境要求

  • Python 3.7 或更高版本(README 示例用 conda 创建 python=3.7 环境)
  • 已安装 conda(用于创建独立环境,也可用其他虚拟环境替代)
  • git,用于克隆仓库
  • 能够运行不可信代码的隔离环境(沙箱/容器),因为评测会执行模型生成的代码

安装与启动步骤

  1. 1创建 Python 环境

    用 conda 新建名为 codex 的独立环境,README 指定 Python 3.7 以上。

    conda create -n codex python=3.7
  2. 2激活环境

    进入刚创建的环境,后续安装与运行都在该环境内进行。

    conda activate codex
  3. 3克隆仓库

    从 GitHub 拉取 human-eval 源码到当前目录。

    git clone https://github.com/openai/human-eval
  4. 4安装本包

    以可编辑模式安装,安装后命令行会出现 evaluate_functional_correctness。

    pip install -e human-eval
  5. 5启用代码执行

    默认 execution.py 中的 exec 执行调用被注释掉,需按文件内注释手动取消注释,否则不会真正跑测试。

  6. 6准备样本文件

    按 jsonl 格式每行写一条 {task_id, completion},completion 只含补全内容不含提示词;可参考 data 下示例。

  7. 7运行功能正确性评测

    对样本逐题执行单元测试并汇总 pass@k,结果写入 samples.jsonl_results.jsonl。

    evaluate_functional_correctness samples.jsonl
  8. 8跑示例自检

    用自带示例样本与题目文件做冒烟测试,正常应得到约 0.5 的 pass@1。

    evaluate_functional_correctness data/example_samples.jsonl --problem_file=data/example_problem.jsonl

关键配置

配置项必填说明示例
task_id是样本对应的 HumanEval 题目 ID,必须与题库中的 ID 一致。"HumanEval/0"
completion是模型生成的函数补全内容,不含题目提示词部分。" return n if n >= 0 else -n"
--problem_file否指定自定义题目文件,缺省使用内置 HumanEval 题库。data/example_problem.jsonl
--k否自定义 pass@k 的 k 值,逗号分隔;样本数少于 k 时该项不计算。1,10,100

如何确认成功

执行示例自检命令后输出 {'pass@1': 0.4999999999999999} 左右,并在 data 下生成 _results.jsonl 结果文件。

常见问题

Q:运行时提示没有真正执行代码怎么办?

A:这是故意设计:execution.py 中的执行调用默认被注释。按该文件注释说明取消注释后再运行,且务必在沙箱中执行。

Q:为什么结果里缺少某些 pass@k 指标?

A:样本数少于 k 时无法无偏估计 pass@k,脚本会跳过该 k;可用 --k= 指定其他数值或增加每题采样数。

Q:结果文件包含什么内容?

A:生成 <输入路径>_results.jsonl,每行含该补全是否 passed 以及执行结果 result,取值为 passed、timed out 或 failed。

Q:如何查看其他可用参数?

A:运行 evaluate_functional_correctness --help 查看;README 建议除 k 值外尽量使用默认参数。

注意事项

  • 该仓库已标记为废弃、不再维护,仅供历史参考,使用风险自负。
  • 程序会执行模型生成的不可信代码,务必在可靠的沙箱或隔离容器中运行,不要在个人主机直接执行。
  • 评测耗时随采样数线性增长,200 样本/题时示例中约需十几分钟,建议先用示例数据验证流程。

核心亮点

  • 提供论文同源的164道题与单元测试,评测口径统一可复现
  • pass@k 计算脚本开箱即用,只需按格式提供模型生成样本
  • 依赖轻量,执行逻辑清晰,便于研究者阅读和二次改造

不足之处

  • 题目规模仅164道,覆盖面有限,难以全面反映模型能力
  • 仅支持 Python 单语言,缺少多语言与更复杂工程场景评测
  • 项目维护活跃度一般,题目集多年未扩充

适用场景

  • 学术论文中对比不同代码生成模型的 pass@k 表现
  • 模型训练过程中定期跑基准,监控代码生成能力变化
  • 企业内部选型时快速验证代码补全模型的基础正确率

替代项目

HumanEval-X、MBPP、BigCodeBench

同类项目推荐

llm_chess 开源

让大模型下棋,测出推理和守规则的真实水平

LLM Chess - evaluating Large Language Models' reasoning and instruction-following ab···

★ 137 2026-09-15
any-guardrail 开源

一个接口切换多种大模型安全护栏,评测对比不再改代码

Giving researchers and practitioners an easy way to switch between guardrails.

★ 127 2026-09-16
ErrorAnalysis_Prompt 开源

用 ChatGPT 快速定位翻译错误,输出结构化评估报告

:gift:[ChatGPT4MTevaluation] ErrorAnalysis Prompt for MT Evaluation in ChatGPT

★ 91 2026-08-09
L1B3RT4S 开源

玩转 AI 提示词,用幽默解锁创意交互

TOTALLY HARMLESS LIBERATION PROMPTS FOR GOOD LIL AI'S! [DISREGARD PRE···

★ 22063 2026-08-09
search-arena 开源

量化分析搜索增强大模型,看清能力边界

⚔️ [ICLR 2026] Official code of "Search Arena: Analyzing Search-Augmented LLMs".

★ 61 2026-08-09
ATM-Bench 开源

测测AI能否记住你4年前的琐事

ATM-Bench: A benchmark for long-term personalized memory QA spanning ~4 years of mul···

★ 71 2026-08-09
agent-scan 开源

扫一遍 Agent 和 MCP 配置,提前揪出权限与注入风险

Security scanner for AI agents, MCP servers and agent skills.

★ 3177 2026-09-12
VIEScore 开源

用视觉指令让AI解释图像生成好坏,评估不再黑盒。

Visual Instruction-guided Explainable Metric. Code for "Towards Explainable Metrics ···

★ 69 2026-08-09
openai-guardrails-js 开源

给 LLM 应用加一道输入输出安检门,拦截越狱与敏感内容

OpenAI Guardrails - TypeScript / JavaScript

★ 112 2026-09-26