OpenAI simple-evals — 架构与原理
30 秒导读: 这是 OpenAI 用来给自家模型「跑分」的轻量库——你给它一个模型和一个基准(MMLU、MATH、HealthBench…),它把题目发给模型、收回答案、判对错、算出一个分数。它刻意做得很薄:全库的骨架只有两个抽象——Sampler(怎么问一个模型)和 Eval(怎么判一个基准),每个基准就是这两者的一次组合。
1. 这是什么(零基础也能懂)
一句话定义: simple-evals 是一个语言模型评测库——把标准化的题目喂给模型,自动判分,产出一个可复现的准确率。
解决什么问题 / 给谁用。 当你说「o3 在 MMLU 上拿了 92.9 分」,这个数字是怎么来的?评测对提示词写法极其敏感:同一个模型,用「你是一位专家程序员…」的角色扮演提示、还是用简单的「一步步解这道题」,分数能差很多(README.md:60-64)。OpenAI 开源这个库,就是为了把自己公布跑分时的判分逻辑摊开,让别人能复现。
它的取向很明确:只用零样本 + 思维链(zero-shot chain-of-thought)——不塞少样本示例、不做角色扮演,只给一句朴素指令,因为这更贴近真实使用(README.md:64)。
它能做什么:
- 内置一批主流基准:MMLU、MATH、GPQA、DROP、MGSM、HumanEval、SimpleQA、BrowseComp、HealthBench。
- 内置几种模型「适配器」:OpenAI Chat Completions、OpenAI Responses(含 o 系推理模型)、Anthropic Claude。
- 跑完产出一个 HTML 报告(每道题的对话 + 判分)和一个 JSON 指标文件。
用起来什么样。 列出能评的模型、然后挑一个模型 + 题数开跑:
# 列出所有可评模型
python -m simple-evals.simple_evals --list-models
# 用 gpt-4.1 跑,每个 eval 取 10 道题
python -m simple-evals.simple_evals --model gpt-4.1 --examples 10
命令行解析与模型注册表见 simple_evals.py:29-315;每个模型名映射到一个预配置好的 Sampler 实例。
一句话直觉/类比。 把它想成一台自动判卷机:Sampler 是「监考老师」——负责把卷子递给某个考生(模型)并收回答卷;Eval 是「阅卷标准」——负责拿到答卷后按某个基准的规则打分。换台考生只换监考老师,换张卷子只换阅卷标准,机器的传动结构(并发跑、聚合分数、出报告)永远不变。