当前位置:首页>排行榜>Inspect AI把Agent评测拆成四层

Inspect AI把Agent评测拆成四层

  • 更新时间 2026-09-27 09:35:57
Inspect AI把Agent评测拆成四层

一张Agent榜单常把结果写得很简单:模型名称,基准名称,一个分数。

这三个字段不够。模型外面还运行着一套Agent程序,它决定提示怎么写、工具怎样暴露、失败是否重试;工具又在某个环境里执行,拿到不同文件、网络和资源上限;最后,评分器选择检查文字、测试结果,还是环境里的真实状态。

英国AI安全研究所与Meridian Labs开发的开源框架Inspect AI,值得看的地方就在这里。它没有把“评测Agent”做成一次统一的模型调用,而是把一场运行拆成可以分别替换的层。顺着它的Task结构看下去,会发现一个Agent分数其实是一份运行配方的产物。

第一层:题目规定要完成什么

Inspect里,一项评测从dataset开始。每个sample可以包含输入、目标答案、文件和元数据。对普通问答,输入可能是一道题,target是一条标准答案;对Agent任务,输入只定义目标,真正的工作会跨过多轮模型调用和工具操作。

这层决定“考什么”。同名基准若用了不同数据版本、抽样范围或前置文件,分数已经不能直接对齐。Agent任务还会放大这种差异:一个仓库修复题少了依赖缓存,和已经准备好完整环境,并不是同一项工作。

因此,数据集名称之外,至少还要固定样本版本、初始化文件和环境准备方式。

第二层:谁来驱动模型完成任务

Task里的solver负责把题目变成实际执行。它可以只是一次generate(),也可以是一套会循环调用工具的ReAct Agent。

Inspect把Agent接口做得更窄,同一个Agent既可作为顶层solver,也能成为工作流节点、子Agent或模型可调用的工具。这个设计让“被测模型”和“驱动模型的外层程序”能够分开替换。

差别在Coding Agent上最明显。Inspect SWE可以把Claude Code、Codex CLI或Gemini CLI放进同一个solver槽位,再由命令行指定它们驱动哪个模型。此时模型并没有单独参加考试。Agent CLI还会贡献自己的系统提示、工具协议、上下文整理、重试方式和停止规则。

于是,同一模型换一个Harness,分数变化并不奇怪。变化可能来自模型,也可能来自外层程序更会整理上下文、选择工具或利用预算。若报告只写模型版本,读者无法判断提升发生在哪一层。

第三层:动作在哪个世界里生效

Agent评测和问答评测的分界,往往出现在Sandbox。

Inspect可以为每个sample准备Docker等隔离环境。bash、python、文本编辑器和浏览器工具把命令送进对应沙箱,文件也按样本注入。代码修改、测试执行和系统状态变化因此发生在一个可检查的工作现场里。

这里有个容易读错的边界:给Task配置Sandbox,不代表整套评测程序都被装进容器。Inspect主进程仍在外面调度,进入沙箱的是工具执行的工作。框架提供了隔离接口,镜像里装什么、是否联网、给多少CPU和时间,仍由评测设计者决定。

环境差异会直接改写难度。同一项Coding任务,预装依赖与临时下载依赖不同;允许访问公网与完全离线不同;十分钟上限与一小时上限也不同。Agent最终失败,可能是推理错误,也可能是镜像缺包、网络抖动或资源耗尽。只有把这些状态留在日志里,失败才有机会被正确归因。

第四层:怎样认定它完成了

Inspect的Scorer读取Agent输出、target和评测状态,再产生样本分数。它可以做精确匹配、正则提取、文本相似度、模型评分,也可以运行自定义检查。

这给Agent评测提供了一个关键能力:评分不必相信最后那句“已经完成”。任务若要求生成文件,Scorer可以检查文件;要求修改代码,可以跑测试;要求改变环境状态,可以读取沙箱里的结果。最终回答只是证据之一。

但可插拔也带来新的不可比性。一个评测用字符串命中就算通过,另一个要求全部测试通过;一个开放题交给grader模型,另一个由确定性程序核验。两边即使使用相同dataset,分数含义也不同。

模型评分器尤其需要被当成评测的一部分。grader的模型版本、评分提示和采样参数都会影响结果。它适合处理开放答案,却不能因为位于“裁判席”就被视为绝对标准。

日志把四层重新缝在一起

拆开组件之后,还要能还原一次运行。Inspect每次执行都会写Eval Log,保存任务配置、样本、消息历史、工具交互、评分决定和附加元数据;日志既能在Viewer里逐条查看,也能由API读取分析。

eval-set则面向长时间批量运行:失败后可以重试,已完成样本能够复用,再次执行同一组任务时从日志目录识别进度。这解决的是运行连续性,不会自动解决实验公平。

真正可比较的记录,应该同时写下任务与数据版本、Agent或Harness版本、模型的明确版本、Sandbox镜像、可用工具、消息与Token上限、墙钟时间、重复次数、Scorer配置,以及对应日志。只写“模型A在某基准得了多少分”,丢掉了决定这个数字的大部分变量。

Inspect AI的价值,是把这些变量做成了能被替换和检查的工程对象。它提供了一套评测骨架,却不会替使用者宣布公平:组件越容易替换,越要诚实记录究竟换了什么。

看Agent榜单时,我会先找完整运行配方,再看总分。没有Harness、环境、限制和评分方法的数字,更像一张结果截图,还称不上可解释的Agent评测。

随机文章