三套开源评测框架,三份 README 描述着同一件事:把用例喂给模型、给输出打分、卡住构建。照着这句话选型,你会在六周之后才发现有一类测试根本写不出来——因为 promptfoo、DeepEval 与 Inspect AI 在各自核心数据结构那一层,对"评测究竟是什么"意见相左。一个认为它是一次攻击,一个认为它是一条断言,一个认为它是一场实验。先把名词定下来,工具自然就跟着定了。
先看全貌
三个项目都能一分钟装好,都自称是"评测",而背后是三家有着三种不同在意理由的组织。
| 项目 | 主理方 | 工作单元 | 许可证 |
|---|---|---|---|
| promptfoo | OpenAI(2026 年 3 月宣布收购) | 由配置文件声明出的一次扫描 | MIT |
| DeepEval | Confident AI | 一个带指标断言的 pytest 用例 | Apache 2.0 |
| Inspect AI | 英国 AI 安全研究所(UK AISI) | 一个 Task:数据集、solver、scorer | MIT |
"主理方"这一列不是花边。一个安全研究所、一家开发者工具公司、一家前沿实验室,对评测框架想要的东西并不相同;而未来两年里的每一个路线图决定,都会由向这三者之一负责的人做出。
三个名词
每套评测框架都是在赌哪个问题最难。promptfoo 赌的是我还有什么没想到要测,所以它的重心在生成:你声明一个目标和一组风险类别,它把用例造出来。DeepEval 赌的是这次改动会不会退化,所以它的重心在断言:你写用例、挂指标,指标要么过阈值、要么让整套测试挂掉。Inspect 赌的是还有别人能复现这个数吗,所以它的重心在记录:一个 Task 把数据集绑定到 solver 与 scorer 上,而每次运行都会吐出一份足以重新推导出结果的日志。
这些不是插件能抹平的营销差异。它们决定了你手里能握住什么对象。在 promptfoo 里一等对象是攻击策略,于是"智能体应当拒绝这个请求并说明理由"写起来很自然,而"这个指标必须永远保持在 0.8 以上"就是外挂上去的。在 DeepEval 里正好反过来。在 Inspect 里一等对象是一次试验,这也是三者中唯一把"跑五十遍,把分布给我"当作默认动作、而不是让你自己写循环的框架。
你选的工具决定了哪一类测试是一行代码、哪一类是一个周末。这两份清单在三者中都不为空。
promptfoo——深入看
它拥有什么
对抗用例生成。你把 promptfooconfig.yaml 指向一个目标——一段裸提示词、一个 HTTP 端点、或者藏在适配层后面的智能体——再列出你在意的风险类别,promptfoo 就会合成探针:越狱、间接提示注入、PII 抽取、外泄路径、工具滥用。这些用例不是你要维护的固定资产,它们是产出物。
这买到了什么
对你没能穷举的那片空间的覆盖——这正是红队演练的全部意义,也是手写黄金集在结构上给不了你的东西。它同时意味着,专家要花一周做的安全评审可以变成一个 CI 任务;这个项目被收购,正是因为这一点。
它让什么变难
纵向的质量追踪。因为用例会重新生成,跨轮次比较就比固定数据集框架模糊得多,而"这次提示词改动让我们退了 2% 吗"并不是这个工具的形状所围绕的问题。既想要两者的团队通常会用 promptfoo 做安全扫描、另找一个工具做质量门禁——这是被支持的结局,不是选型失败。
DeepEval——深入看
它拥有什么
在你已经有的那个测试运行器里的开发者工效。一个 DeepEval 用例就是一个 pytest 测试;指标是你挂上去的对象;评判调用发生在断言底下。你的 CI 已经会做的一切——并行、筛选、报告、重试——原封不动地适用,这个实际优势比听上去大得多。
这买到了什么
从"我们没有评测"到"质量下滑就让构建挂掉"的最短路径。它同时带来一套确实好用的指标库:G-Eval 处理量规式判断,DAG 指标处理那些"扁平分数会掩盖原因"的决策树,还有面向工具调用正确性与任务完成度的智能体专用指标。在你拿它当门禁之前,先读用 LLM 给智能体当评判,看看这类判断到底值多少。
它让什么变难
任何形状不像断言的东西。沙箱里的长周期智能体运行、跨模型与参数网格的扫描、建立在重复试验之上的统计结论——它们塞进一个"单元是一个返回布尔结果的测试函数"的框架里都别扭。你能把它们造出来,但你是在逆着纹理造。
Inspect AI——深入看
它拥有什么
实验记录。一个 Inspect Task 由带标注样本的数据集、为每个样本产出答案的 solver——从单次 generate() 调用到完整的会用工具的智能体都算——以及给它打分的 scorer 组成。当 solver 要执行模型写出的代码时,Inspect 会配好沙箱(默认 Docker),于是不可信执行成了框架的事,而不是你的事。
这买到了什么
经得起辩护的数字。评测日志保存了消息、工具调用、分数和配置,于是一个结果可以被重新推导,而不是靠信任重跑一遍——这正是"评测"与"轶事"的分界。配套的 inspect_evals 集合已经用同一套接口实现了大量公开基准,于是"我们在标准集上得几分"是一条命令,而不是一个项目。
它让什么变难
随手来一下。Task/solver/scorer 这套拆解,对一场实验是恰当的抽象,对一次冒烟测试就是负担;而且没有任何等价于一条 pytest 断言的五行上手路径。它也是三者中用户最可能在评估危险能力问题的框架,这一点体现在默认值上:谨慎、显式,并不为"站会前想拿到一个数"的那种人优化。
各自疼在哪里
评判器的成本与漂移
三者都把最难的打分委托给了模型,因此三者都继承了同样两个问题:评判器占你评测账单中不小的一块,以及当它的快照被退役时,它会在你脚下悄悄换掉。三者都没替你解决这件事。区别在于你能不能看见它发生——Inspect 的日志能让评判器的更换事后可见,而 promptfoo 与 DeepEval 会心安理得地报出一个变化了的数字,却不告诉你打分的人换了。三者都要把评判模型显式钉死,并且在你信任任何阈值之前先读评判器校准。
非确定性
这些框架里任何一个跑出来的单次分数都是一次抽样,不是一次测量;而智能体任务的轮次间方差大到"提升三个点"经常只是噪声。Inspect 让重复试验变得自然,另外两个则要你自己写循环和统计。无论选哪个,都别让一份长得像排行榜的 HTML 报告说服你不必数一数你跑了几遍。
轨迹盲区
只给一个走了十九步的智能体的最终答案打分,告诉你的是它有没有走运,而不是它有没有正常工作。Inspect 的日志与 DeepEval 的智能体指标都能伸进轨迹里;promptfoo 对目标的建模则更接近"一个带攻击面的黑盒",这是刻意的。如果你的失败长得像"答案对了、路径疯了",这个缺口就是决定性因素。参见轨迹与过程评测。
收购这件事怎么算
OpenAI 于 2026 年 3 月 9 日宣布收购 promptfoo,技术并入 OpenAI Frontier,项目在现有许可证下继续开源。那个反射式的担忧——许可证会翻脸——恰恰是这里最不可能的风险,也是最容易对冲的:已经发布出去的 MIT 代码收不回来,而分叉随时可用。
现实的风险更沉闷,也更难靠分叉绕开:路线图的引力。由前沿实验室维护的红队工具天然有一个重心,边际工程时间会流向母公司客户所在的地方。如果你的测试目标就是那家实验室的模型,这是好事,你应该指望这块集成做得比任何独立项目能筹到钱做的都好。如果你的目标是一组包含其竞争者的混合体,那要盯的不是许可证,而是非自家厂商在新攻击策略上跟不跟得上。这是可观测的,所以去观测,而不是去猜:每次发版检查一下你依赖的那些插件在你的厂商上还跑不跑得动。
DeepEval 与 Inspect 也都不是中立基线。DeepEval 是一个商业平台的开源门面,带着通常那种朝托管产品倾斜的引力。Inspect 由政府安全研究所出资,这对持久性与可复现性极好,也意味着危险能力评估永远会比你的客服机器人被伺候得更周到。世上没有无立场的选项;只有"清楚你的工具是为谁的问题而造"这件事。
什么时候选哪个
| 你想做的事 | promptfoo | DeepEval | Inspect AI |
|---|---|---|---|
| 找出你没想到的攻击 | 为此而生 | 只能手写 | 能做,但手工 |
| 质量退化就让构建挂掉 | 别扭 | 为此而生 | 能做,但更重 |
| 发布一个会被审计的数字 | 记录薄弱 | 记录薄弱 | 为此而生 |
| 在沙箱里评估长周期智能体 | 不在范围内 | 部分支持 | 为此而生 |
| 今天下午就上线一套评测 | 配置即可,快 | 最快 | 最慢 |
| 跨多模型多配置横向比较 | 不错 | 手写扫描 | 为此而生 |
对多数团队,诚实的建议是两个工具而不是一个:安全扫描与质量门禁是两件节奏不同的活,硬塞进同一套框架,得到的是两头都不出彩的测试集。扫描每周对着已部署的表面跑一次;门禁每个 pull request 跑一次。当那个数字要让你团队之外的人相信时,去拿 Inspect。
常见问题
可以同时用不止一个吗?
可以,而且多数认真的团队都这么干。常见的分工是 promptfoo 做对抗扫描、DeepEval 做 CI 门禁,当某个结果需要经受外部审阅时再加上 Inspect。它们并不冲突——每个都是通过不同接口读你的系统。
OpenAI 的收购是不是意味着 promptfoo 会不再支持其他厂商?
已公布的信息里没有这个意思,项目仍在现有许可证下开源。值得盯的是相对投入而不是移除:新的攻击策略会不会同时落到非 OpenAI 的厂商上。按发版、对着你真正在用的厂商去核对。
我到底需不需要评测框架,自己写不行吗?
运行器你一个下午就能写出来,而那并不是你要买的部分。你要买的是指标库、对抗用例生成、沙箱和日志格式——每一项都是数周的工作量,而且没有一项是你要交付的产品。
这些和 LangSmith、Braintrust 这类可观测性平台是什么关系?
基本互补。这三者回答的是离线对着数据集"过没过";可观测性平台回答的是线上流量里"发生了什么",并且拥有人工标注与看板那一片。团队最后通常两边各拿一个。
哪个能处理多轮智能体对话?
Inspect 最自然,因为它的 solver 可以是一个完整的会用工具的智能体,整段消息历史都会落进日志。DeepEval 有多轮与智能体指标,在你的对话是固定素材时很好用。promptfoo 的多轮策略存在的意义是把一次攻击跨轮次带下去,而不是给一段对话打分。
只靠其中任何一个,够不够拿来声称合规?
不够。框架产出的是证据;一项合规声明还需要界定好的范围、留存的记录和一个负责的人。Inspect 的日志格式最接近证据那一半,但治理那一半不是工具问题——见下面的治理页面。
延伸阅读
本站相关:
- 评测入门——这三个框架都默认你已经有的那套词汇。
- 评测方差与统计功效——一个分数要跑多少遍才开始有意义。
- 评测驱动开发与 CI 中的回归评测——质量门禁该放在流水线的哪个位置。
- 评判器校准与元评测——在你信任一个模型打出的阈值之前。
- 红队演练智能体——promptfoo 正在自动化的那件事。
- 审计轨迹——评测日志只是其中一项输入的那份记录。