codefuse-evaluation
蚂蚁集团开源的工业级代码大模型评测基准,覆盖5种语言×5类任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
蚂蚁集团开源的工业级代码大模型评测基准,覆盖5种语言×5类任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你耗费数月训练了一个代码大模型,最想知道的是什么?答案很简单:它到底有多强? 在哪个语言上表现最好?代码补全和代码翻译能力是否均衡?中文指令场景下是否同样可靠?这些问题的答案,不能靠感觉,必须靠科学、公正、可复现的评测体系来给出——这就是 CodeFuseEval 存在的意义。
CodeFuseEval 由蚂蚁集团旗下的代码大模型团队 codefuse-ai 开发维护。CodeFuse 系列模型脱胎于蚂蚁长期在代码智能领域的积累,从代码补全到代码审查,场景极为丰富。然而,业界现有的评测基准——无论是 OpenAI 的 HumanEval 还是 MBPP——都存在覆盖维度单一的问题:它们主要测试 Python 语言、聚焦于函数级代码生成,对真实软件开发中的多语言协作、代码翻译、中文指令遵从等场景覆盖不足。
CodeFuseEval 的诞生,正是为了填补这一空白。它以 CodeFuse 自身的业务场景为蓝本,同时整合了 HumanEval-x(支持 5 种语言)和 MBPP 的能力,构建出一个覆盖代码生成全生命周期的多任务评测框架。
打个生活化的比方。如果把代码大模型看作一个厨师,那么 CodeFuseEval 就是一套完整的"厨艺考试":不仅要考你会不会做番茄炒蛋(单一任务),还要考你用英语点菜后能不能做出对应的菜(跨语言翻译),以及给你一份食材清单你能不能推断出完整菜谱(中文指令生成),甚至还要考你用不同的调味料(Python/Java/Go 等)做出同等水平的菜肴。
CodeFuseEval 将评测任务划分为五大维度:
1. 代码补全(Code Completion):给定函数签名和上下文,模型需要续写函数体。这是日常 IDE 辅助编程中最常见的需求,支持 Python、Java、JavaScript、C++、Rust 等多语言基准。数据集中还包含了中文版本的题目(如 humaneval_python_cn),用于评估模型对中文指令的理解能力。
2. 自然语言生成代码(NL-to-Code):输入自然语言描述,模型输出完整代码,考察模型对需求的语义理解能力。
3. 测试用例生成(Test Case Generation):给定源代码,生成能够验证代码正确性的测试用例,是代码质量保障的重要环节。
4. 跨语言代码翻译(Code Translation):将一种语言的代码翻译为另一种语言,例如把 Python 代码转译为 Java 或 C++,对模型的多语言语义理解提出较高要求。
5. 数据科学代码生成(CodeDataScience):针对 Matplotlib 等数据可视化库的场景,生成符合特定可视化要求的代码,非常贴合真实业务场景。
评测数据集以 JSONL 格式存储,每条记录包含 task_id、prompt、canonical_solution、test、example_test 等完整字段,确保评测可复现。
在评测指标上,CodeFuseEval 集成了业界主流方法:
CodeFuseEval 的代码架构分为三个核心模块,分工明确:
Generator 层(codefuseEval_202503/generator/):负责模型推理。代码中预置了十余种主流代码模型的适配器,包括 CodeFuse-13B、CodeFuse-CodeLlama-34B、DeepSeek-Code-V2-Lite、Qwen2.5-Coder 等。这种"可插拔 Generator"设计让用户可以方便地接入自己的模型进行评测,无需修改评测框架本身。
Execution 层(codefuseEval_202503/execution.py):负责编译和运行生成的代码。评测的核心价值在于:生成的代码不仅要有语法正确的外壳,还要能通过真实的测试用例。Execution 层支持 Python(直接运行)、Java(javac + java)、JavaScript(Node.js)、C++(g++)以及 Go(go run)等多种语言的编译执行。
Post-Processor 层(codefuseEval_202503/post_processor/):负责将模型生成的原始输出转换为可评测格式。不同评测任务的输出格式差异很大——有的模型直接输出完整代码,有的输出 Markdown 包裹的代码块。Post-Processor 层针对不同基准提供了专门的解析器,提取出干净的代码内容供后续评测。
评测涉及 Python、Java、Node.js、C++、Go 等多种语言环境,手动配置费时费力。CodeFuseEval 提供了开箱即用的 Docker 镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/codefuse/codefuseeval:latest
镜像基于 PyTorch 2.0 + CUDA 11.7,内置了所有必要的语言编译工具链(JDK 18、Node.js 16、Boost 1.75、Go 1.18 等),并配置了阿里云 pip 镜像源。拿到镜像后,通过 bind mount 将本地结果目录挂载进容器即可运行评测:
docker run -it --gpus all --mount type=bind,source=/your/result/path,target=/workspace/results registry.cn-hangzhou.aliyuncs.com/codefuse/codefuseeval:latest
评测流程通过 Bash 脚本驱动,分为两步:生成结果 → 执行评测:
# 修改 ckpt_config.json 中的模型路径后,运行生成脚本
bash codefuseEval/script/generation.sh CodeFuse-13B v1 humaneval_python result/test.jsonl
# 评测并输出指标
bash codefuseEval/script/evaluation.sh result/test.jsonl pass@k humaneval_python
整个流程脚本化、无需 Python 编程基础,适合非算法岗位的开发者快速评估模型能力。
评测基准本身存在"训练数据污染"的隐患。HumanEval 等公开基准的数据可能被混入模型的预训练语料,导致评测分数虚高。CodeFuseEval 目前未在文档中明确说明是否采用了对抗污染检测,这是值得关注的一点。
此外,项目目前采用的是 NOASSERTION 许可(非正式授权),对商业使用有一定法律模糊性。如果你的团队计划将评测框架集成到商业产品中,建议联系 codefuse-ai 团队确认授权细节。
CodeFuseEval 的价值不仅在于提供了一套评测工具,更在于它代表了一种"以业务场景驱动评测体系"的思路。从 CodeFuse 模型的业务实践中提炼真实需求,再将需求反哺为评测基准——这种闭环让评测结果更具业务参考价值,而非纯粹学术刷分。

CodeFuseEval 多任务评测体系概览,覆盖代码补全、NL生成、测试用例生成、跨语言翻译等核心维度