evalplus
EvalPlus 是一个专为大语言模型(LLM)生成代码能力设计的严谨评估框架,旨在解决现有基准测试中测试用例不足、评估结果不够可靠的问题。传统的代码评估数据集(如 HumanEval 和 MBPP)往往因测试覆盖不全而高估模型性能,EvalPlus 通过引入大幅扩充的测试集——HumanEval+ 和 MBPP+,分别将测试数量提升了 80 倍和 35 倍,从而更严格、真实地衡量代码生成的正确性与鲁棒性。
此外,EvalPlus 还新增了 EvalPerf 模块,支持对生成代码的执行效率进行评估,填补了以往仅关注功能正确性而忽略性能表现的空白。该工具已被 Meta Llama、Qwen、DeepSeek 等多个主流大模型团队采用,成为业界公认的权威评估标准之一。
EvalPlus 特别适合 AI 研究人员、大模型开发者以及代码生成领域的工程师使用。它提供了一站式命令行工具,支持多种推理后端(包括 Google Gemini、Anthropic 等),并兼容 Docker 与 Python 包部署,便于快速集成到研发流程中。无论是用于模型迭代验证、学术论文实验,还是生产环境前的质量把关,EvalPlus 都能提供高效、可复现且极具说服力的评估结果。
使用场景
某 AI 代码助手研发团队在发布新模型前,需要验证其生成的 Python 函数是否真正可靠,而不仅仅是“看起来能跑通”。
没有 evalplus 时
- 测试覆盖严重不足:仅依赖原始的 HumanEval 数据集,每个任务平均只有几个测试用例,大量边界条件(如空输入、极大数值)未被覆盖,导致模型在演示中表现完美,实际部署后频繁报错。
- 虚假通过率误导决策:模型可能通过硬编码或巧合通过少量测试,研发团队误以为代码逻辑正确,实则存在严重的逻辑漏洞,上线后引发生产事故。
- 评估流程繁琐低效:团队需手动编写额外的测试脚本、配置超时机制并处理不同后端接口,耗费数天时间搭建评估流水线,拖慢了模型迭代速度。
- 缺乏性能维度考量:只关注代码能否运行,忽略了生成代码的执行效率,导致模型倾向于生成虽然正确但时间复杂度极高的“笨重”代码。
使用 evalplus 后
- 测试强度提升数十倍:利用 HumanEval+ 和 MBPP+ 数据集,测试用例数量分别增加了 80 倍和 35 倍,彻底暴露了模型在边界条件下的逻辑缺陷,确保交付代码的鲁棒性。
- 精准识别“伪优”代码:严格的合约检查和增强测试集过滤掉了那些靠运气通过的样本,让团队能基于真实的 pass@1 指标客观评估模型能力,避免盲目上线。
- 一键式自动化评估:通过一条命令即可完成代码生成、后处理及多维度评估,支持 Google Gemini、Anthropic 等多种后端,将原本数天的评估工作缩短至小时级。
- 引入代码效率评估:借助新增的 EvalPerf 功能,团队不仅能判断代码对错,还能量化执行效率,引导模型优化算法复杂度,生成既正确又高效的代码。
evalplus 通过构建严密的测试防线,将大模型代码能力的评估从“碰运气”转变为可信赖的工业级标准。
运行环境要求
- Linux
- macOS
- 运行本地模型(如使用 vllm 或 transformers 后端)需要 NVIDIA GPU,具体显存取决于模型大小
- EvalPerf 效率评估功能仅限 Linux (*nix)
未说明(取决于加载的模型大小)

快速开始
EvalPlus(📖) => 📚
📙关于 • 🔥快速入门 • 🚀LLM后端 • 📚文档 • 📜引用 • 🙏致谢
📢 新闻
哪些团队正在使用 EvalPlus 数据集?EvalPlus 已被多个 LLM 团队采用,其中包括:
- Meta Llama 3.1 和 3.3
- Allen AI TÜLU 1/2/3
- Qwen2.5-Coder
- CodeQwen 1.5
- DeepSeek-Coder V2
- Qwen2
- Snowflake Arctic
- StarCoder2
- Magicoder
- WizardCoder
以下是 EvalPlus 的重要更新记录:
- [2024-10-20
v0.3.1]:EvalPlusv0.3.1正式发布!亮点:(i) 通过 EvalPerf 进行代码效率评估,(ii) 一条命令即可完成生成 + 后处理 + 评估的全流程,(iii) 支持更多推理后端,如 Google Gemini 和 Anthropic 等。 - [2024-06-09 pre
v0.3.0]:改进了 MBPP+ 任务(ID:459、102、559)的基准答案。感谢 EvalArena。 - [2024-04-17 pre
v0.3.0]:MBPP+ 升级至v0.2.0,移除了部分损坏的任务(从 399 个减少到 378 个)。预计 pass@1 准确率可提升约 4 个百分点。
往期新闻 :: 点击展开 ::
- (
v0.2.1) 您现在可以通过 bigcode-evaluation-harness 使用 EvalPlus 数据集!修复了 HumanEval+ 的参考答案问题(共 32 处)。 - (
v0.2.0) MBPP+ 正式发布!修复了 HumanEval 的接口和输入问题(共 0/3/9/148/114/1/2/99/28/32/35/160 处)。 - (
v0.1.7) 发布了 排行榜;同时修复了 HumanEval+ 的接口和基准答案问题(共 32/166/126/6 处)。 - (
v0.1.6) 引入了可配置且默认保守的超时设置;同时修复了 HumanEval+ 的接口和基准答案问题(共 129/148/75/53/0/3/9/140 处)。 - (
v0.1.5) 推出 HumanEval+ mini 版本,适用于样本量过大时的超快速评估! - (
v0.1.1) 优化用户体验:提升评估速度、PyPI 包、Docker 镜像等。 - (
v0.1.0) HumanEval+ 正式发布!
📙 关于
EvalPlus 是一个针对 LLM4Code 的严格评估框架,包含以下内容:
- ✨ HumanEval+:测试用例数量是原始 HumanEval 的 80 倍!
- ✨ MBPP+:测试用例数量是原始 MBPP 的 35 倍!
- ✨ EvalPerf:用于评估 LLM 生成代码的效率!
- ✨ 框架:我们的软件包、容器镜像和工具能够方便、安全地在上述基准上评估 LLM。
为什么选择 EvalPlus?
- ✨ 精准评估:请查看 我们的排行榜,了解最新 LLM 在严格评估前后的排名情况。
- ✨ 代码严谨性:对比分数差异!尤其是使用 EvalPlus 测试前后!分数下降越少,说明代码生成越严谨;而分数下降越多,则表明生成的代码可能较为脆弱。
- ✨ 代码效率:除了正确性之外,我们的 EvalPerf 数据集还通过性能测试型编码任务和测试输入,评估 LLM 生成代码的效率。
想了解更多细节吗?请阅读我们的论文和相关资料!
- EvalPlus:NeurIPS'23 论文、演示文稿、海报、排行榜
- EvalPerf:COLM'24 论文、海报、文档、排行榜
🔥 快速入门
代码正确性评估:HumanEval(+) 或 MBPP(+)
pip install --upgrade "evalplus[vllm] @ git+https://github.com/evalplus/evalplus"
# 或者使用 `pip install "evalplus[vllm]" --upgrade` 获取最新稳定版本
evalplus.evaluate --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset [humaneval|mbpp] \
--backend vllm \
--greedy
🛡️ 在 Docker 中安全执行代码 :: 点击展开 ::
# 本地生成
evalplus.codegen --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset humaneval \
--backend vllm \
--greedy
# 在 Docker 中执行代码
docker run --rm --pull=always -v $(pwd)/evalplus_results:/app ganler/evalplus:latest \
evalplus.evaluate --dataset humaneval \
--samples /app/humaneval/ise-uiuc--Magicoder-S-DS-6.7B_vllm_temp_0.0.jsonl
代码效率评估:EvalPerf(仅限 *nix 系统)
pip install --upgrade "evalplus[perf,vllm] @ git+https://github.com/evalplus/evalplus"
# 或者使用 `pip install "evalplus[perf,vllm]" --upgrade` 获取最新稳定版本
sudo sh -c 'echo 0 > /proc/sys/kernel/perf_event_paranoid' # 启用 perf
evalplus.evalperf --model "ise-uiuc/Magicoder-S-DS-6.7B" --backend vllm
🛡️ 在 Docker 中安全执行代码 :: 点击展开 ::
docker run --rm --pull=always -v $(pwd)/evalplus_results:/app ganler/evalplus:latest \
evalplus.evalperf --model "ise-uiuc/Magicoder-S-DS-6.7B" --backend vllm
本地生成
evalplus.codegen --model "ise-uiuc/Magicoder-S-DS-6.7B"
--dataset evalperf
--backend vllm
--temperature 1.0
--n-samples 100
在 Docker 中执行代码
sudo sh -c 'echo 0 > /proc/sys/kernel/perf_event_paranoid' # 启用 perf
docker run --cap-add PERFMON --rm --pull=always -v $(pwd)/evalplus_results:/app ganler/evalplus:latest
evalplus.evalperf --samples /app/evalperf/ise-uiuc--Magicoder-S-DS-6.7B_vllm_temp_1.0.jsonl
</div>
</details>
## 🚀 LLM 后端
### HuggingFace 模型
- `transformers` 后端:
```bash
evalplus.evaluate --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset [humaneval|mbpp] \
--backend hf \
--greedy
[!注意]
EvalPlus 对基础模型和聊天模型使用不同的提示模板。 默认情况下,当使用
hf或vllm作为后端时,会通过tokenizer.chat_template自动检测。 对于其他后端,仅允许使用聊天模式。因此,如果您的基础模型带有
tokenizer.chat_template, 请添加--force-base-prompt参数,以避免在聊天模式下进行评估。
启用 Flash Attention 2 :: 点击展开 ::
# 安装 Flash Attention 2
pip install packaging ninja
pip install flash-attn --no-build-isolation
# 注意:如果遇到安装问题,可以考虑使用来自 https://github.com/Dao-AILab/flash-attention/releases 的预编译 wheel 文件
# 使用 FA2 运行评估
evalplus.evaluate --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset [humaneval|mbpp] \
--backend hf \
--attn-implementation [flash_attention_2|sdpa] \
--greedy
vllm后端:
evalplus.evaluate --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset [humaneval|mbpp] \
--backend vllm \
--tp [TENSOR_PARALLEL_SIZE] \
--greedy
- 兼容 OpenAI 的服务器(例如 vLLM):
# OpenAI 模型
export OPENAI_API_KEY="{KEY}" # https://platform.openai.com/settings/organization/api-keys
evalplus.evaluate --model "gpt-4o-2024-08-06" \
--dataset [humaneval|mbpp] \
--backend openai --greedy
# DeepSeek
export OPENAI_API_KEY="{KEY}" # https://platform.deepseek.com/api_keys
evalplus.evaluate --model "deepseek-chat" \
--dataset [humaneval|mbpp] \
--base-url https://api.deepseek.com \
--backend openai --greedy
# Grok
export OPENAI_API_KEY="{KEY}" # https://console.x.ai/
evalplus.evaluate --model "grok-beta" \
--dataset [humaneval|mbpp] \
--base-url https://api.x.ai/v1 \
--backend openai --greedy
# vLLM 服务器
# 首先启动一个 vLLM 服务器:https://docs.vllm.ai/en/latest/serving/deploying_with_docker.html
evalplus.evaluate --model "ise-uiuc/Magicoder-S-DS-6.7B" \
--dataset [humaneval|mbpp] \
--base-url http://localhost:8000/v1 \
--backend openai --greedy
# GPTQModel
evalplus.evaluate --model "ModelCloud/Llama-3.2-1B-Instruct-gptqmodel-4bit-vortex-v1" \
--dataset [humaneval|mbpp] \
--backend gptqmodel --greedy
OpenAI 模型
- 从 OpenAI 控制台访问 OpenAI API
export OPENAI_API_KEY="[YOUR_API_KEY]"
evalplus.evaluate --model "gpt-4o" \
--dataset [humaneval|mbpp] \
--backend openai \
--greedy
Anthropic 模型
- 从 Anthropic 控制台访问 Anthropic API
export ANTHROPIC_API_KEY="[YOUR_API_KEY]"
evalplus.evaluate --model "claude-3-haiku-20240307" \
--dataset [humaneval|mbpp] \
--backend anthropic \
--greedy
Google Gemini 模型
- 从 Google AI Studio访问 Gemini API
export GOOGLE_API_KEY="[YOUR_API_KEY]"
evalplus.evaluate --model "gemini-1.5-pro" \
--dataset [humaneval|mbpp] \
--backend google \
--greedy
Amazon Bedrock 模型
export BEDROCK_ROLE_ARN="[BEDROCK_ROLE_ARN]"
evalplus.evaluate --model "anthropic.claude-3-5-sonnet-20241022-v2:0" \
--dataset [humaneval|mbpp] \
--backend bedrock \
--greedy
Ollama 后端
evalplus.evaluate --model "mistral:7b" \
--dataset [humaneval|mbpp] \
--backend ollama \
--base-url http://localhost:11434/v1 \
--greedy
英特尔® Gaudi® 加速器
要为英特尔 Gaudi 运行 hf 后端,需先安装 optimum-habana。
pip install git+https://github.com/huggingface/optimum-habana.git
evalplus.evaluate --model "qwen/CodeQwen1.5-7B-Chat" \
--dataset [humaneval|mbpp] \
--backend hf_gaudi \
--greedy \
--torch_compile
或者在懒惰模式下:
PT_HPU_LAZY_MODE=1 evalplus.evaluate --model "qwen/CodeQwen1.5-7B-Chat" \
--dataset [humaneval|mbpp] \
--backend hf_gaudi \
--greedy
要为英特尔 Gaudi 运行 vllm 后端,需先安装 HabanaAI vllm。
git clone https://github.com/HabanaAI/vllm-fork.git
cd vllm-fork
git checkout habana_main
pip install --upgrade pip
pip install -r requirements-hpu.txt
python setup.py develop
然后运行:
PT_HPU_LAZY_MODE=1 evalplus.evaluate --model "qwen/CodeQwen1.5-7B-Chat" \
--dataset [humaneval|mbpp] \
--backend vllm \
--greedy
您可以在 evalplus_results/[humaneval|mbpp]/ 查看生成结果。
⏬ 如何将 EvalPlus 作为本地仓库使用? :: 点击展开 ::
git clone https://github.com/evalplus/evalplus.git
cd evalplus
export PYTHONPATH=$PYTHONPATH:$(pwd)
pip install -r requirements.txt
📚 文档
如需了解更多关于如何使用 EvalPlus 的信息,请参阅:
📜 引用
@inproceedings{evalplus,
title = {Is Your Code Generated by Chat{GPT} Really Correct? Rigorous Evaluation of Large Language Models for Code Generation},
author = {Liu, Jiawei and Xia, Chunqiu Steven and Wang, Yuyao and Zhang, Lingming},
booktitle = {Thirty-seventh Conference on Neural Information Processing Systems},
year = {2023},
url = {https://openreview.net/forum?id=1qvx610Cu7},
}
@inproceedings{evalperf,
title = {Evaluating Language Models for Efficient Code Generation},
author = {Liu, Jiawei and Xie, Songrun and Wang, Junhao and Wei, Yuxiang and Ding, Yifeng and Zhang, Lingming},
booktitle = {First Conference on Language Modeling},
year = {2024},
url = {https://openreview.net/forum?id=IBCBMeAhmC},
}
🙏 致谢
版本历史
v0.3.12024/10/20v0.2.12024/04/02v0.2.02023/11/24v0.1.72023/09/06v0.1.62023/06/26v0.1.52023/06/02v0.1.42023/05/12v0.1.32023/05/09v0.1.22023/05/07v0.1.12023/05/07v0.1.02023/05/03常见问题
相似工具推荐
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。