Evals
OpenAI 官方 LLM 评测框架,用数据量化模型能力,精准定位优势与短板
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
OpenAI 官方 LLM 评测框架,用数据量化模型能力,精准定位优势与短板
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:OpenAI Evals 项目官方标识
你有没有过这样的经历:花了几天时间调好了一个 Prompt,感觉 AI 回答得挺不错的,但上线后用户反馈却是一堆问题。这种凭感觉的评价往往是主观的——今天心情好就觉得好,明天卡在边界 case 上就觉得差。
OpenAI Evals 就是来解决这个问题的。它是一个专门为大语言模型(LLM)设计的评测框架,由 OpenAI 官方开源维护。无论你是用 OpenAI 的模型、Anthropic 的 Claude、还是开源的 Llama,只要你能调用 API,Evals 就能帮你用科学的方法评估模型在各类任务上的真实表现。
就像学生考试需要标准试卷和严格评分标准一样,AI 模型也需要一套统一的考题和评分规则来客观衡量能力。Evals 提供了这个能力:你可以直接使用 OpenAI 官方已有的上百种评测集,也可以基于自己的业务数据编写专属评测——真正做到用数据说话,而不是凭感觉拍板。
Evals 项目诞生于 2023 年初,由 OpenAI 官方团队维护和更新,至今已在 GitHub 上累计超过 18,500 颗星,是 LLM 评测领域最受欢迎的开源项目之一。
OpenAI 内部其实早就在用这套框架评估自家模型的每一次版本迭代。但他们选择将框架开源,有两个重要原因:
第一,社区的力量比闭门造车强。开发者们分布在各行各业,每个人的业务场景不同、痛点不同,如果只有 OpenAI 自己出评测题,永远覆盖不了所有实际需求。开源之后,全世界的开发者都能贡献评测集,这些评测反过来又帮助 OpenAI 了解模型在真实场景中的弱点。OpenAI 官方明确表示:他们会主动审查社区贡献的 PR,这些评测会被纳入下一代模型训练的考量。
第二,帮助开发者做出更好的产品决策。当你需要决定是否升级到新版本模型时,Evals 能让你清楚地看到新旧版本在关键指标上的差异,而不只是看 OpenAI 官方公布的模糊提升描述。这对于把 LLM 集成到生产系统的开发者来说,意义重大。
OpenAI Evals 内置了丰富的评测注册表(Registry),涵盖多个维度的能力评估:
这些评测集全部以 YAML 配置文件的格式存储在 evals/registry/evals/ 目录下,配套的评测数据通过 Git-LFS 管理。你可以按需选择性安装,不需要全量下载。
Evals 最大的亮点是:即使你完全不会写 Python 代码,也能创建自己的评测。
OpenAI 提供了两种评测模板:
基础评测(Basic Eval):只需准备 JSON 格式的测试数据(包含输入和期望输出),编写一个简短的 YAML 配置文件指定评测参数,就能跑起来。系统会自动将模型输出与期望输出对比,计算准确率等指标。
模型评分评测(Model-Graded Eval):不需要人工标注的标准答案,而用另一个 LLM 来评判回答质量。例如你想评测模型的回答是否有帮助,只需写清楚评判标准,系统就会自动让另一个模型给出评分。这种方式特别适合开放式问题(如翻译质量、文案创作)的评测。
运行一个现成评测只需两行命令:
pip install evals
oaieval <eval_name> <completion_fn>
就能输出完整的分数报告。
Evals 支持与 Weights & Biases(W&B)深度集成,自动将每次评测的结果上传到云端仪表盘,形成可追溯的历史曲线。如果你有 Snowflake 数据库,评测结果也可以直接写入,方便企业做长期监控和趋势分析。
项目采用模块化的 Python 包架构,核心目录结构如下:
| 模块 | 作用 |
|---|---|
| evals/cli/ | 命令行入口,提供 oaieval 和 oaievalset 两个核心命令 |
| evals/elsuite/ | 评测执行引擎,包含 30+ 种评测模板(basic、model_graded、mmmu 等) |
| evals/completion_fns/ | 模型调用适配层,支持 OpenAI、LangChain、CoT 等多种接口 |
| evals/solvers/ | 求解器框架,支持 Chain-of-Thought、ReAct 等高级推理模式 |
| evals/registry/ | YAML 注册表引擎,统一管理评测集、模型、求解器的配置 |
| evals/data.py | 数据加载器,自动处理 JSONL、CSV、JSON 等常见数据格式 |
| evals/record.py | 结果记录器,对接 W&B、Snowflake、本地日志等输出后端 |
这种分层设计带来了很好的扩展性:你想支持一个新的 LLM API?只需在 completion_fns/ 下新增一个适配器文件,然后注册到 YAML 配置里即可,不需要改动核心引擎。
Evals 的技术栈非常丰富,展示了 LLM 应用开发的典型依赖图谱:
这种全家桶式的依赖设计也带来了一个小门槛:首次安装 pip install -e . 时会拉取大量包,磁盘占用约 2GB。如果网络不佳,依赖安装可能需要一些耐心。
任何项目都有其局限性,Evals 也不例外:
1. 评测数据的版权问题。OpenAI 明确指出,贡献评测数据意味着授权 OpenAI 在模型训练中使用这些数据。对于商业公司来说,这是一个需要认真考虑的法律风险。因此,如果你要提交私有评测,建议只提交模型版本的评测集(通过 YAML 描述评分规则),而非包含原始数据的评测。
2. 不接受自定义代码评测。项目文档明确说明,当前阶段不接受包含自定义 Python 代码的评测(custom code evals)。只能提交基于 YAML 的模型评分评测。这限制了某些需要复杂评测逻辑的场景,比如需要解析结构化输出、执行代码验证等。
3. 对非 OpenAI 模型的支持仍有差距。虽然 Evals 支持多种 LLM 提供商,但官方维护的评测集和示例主要集中在 OpenAI 模型上。LangChain 集成虽然存在,但不如原生集成完善。
4. 评测运行成本。运行评测需要消耗 API 调用配额,复杂评测可能产生不小的费用。OpenAI 在文档中特别提醒了这一点,并建议先用小数据集验证逻辑,再扩大规模。
OpenAI Evals 的出现,标志着 LLM 领域从靠感觉调参向数据驱动评估的转型。它证明了即使是模型的创造者,也需要一套客观工具来衡量自己产品的能力边界,而不是只靠内部主观测试。
从更宏观的角度看,Evals 代表了 AI 评估基础设施的一个发展方向:开放评测标准 + 社区共建评测集 + 可验证的版本对比。这种模式正在被越来越多的研究机构和企业借鉴。
如果你正在构建 LLM 应用,强烈建议在正式上线前用 Evals 对模型做一次全面体检——它能帮你发现那些靠手工测试永远发现不了的边界 case。
图2:OpenAI 官方维护的评测框架(点击访问 GitHub 仓库)
项目地址:https://github.com/openai/evals | 安装:pip install evals | 最低要求:Python 3.9+