AI Evals 阅读笔记
读《Demystifying evals for AI agents》
https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
让 agents 牛逼的能力,同时也让评测变得复杂:自主性;智力;灵活度。(找维度)
These same capabilities that make AI agents useful—autonomy, intelligence, and flexibility—also make them harder to evaluate.
- 单轮评估(Single-turn evaluations) vs 多轮评估(multi-turn evaluations):后者逐渐常见了起来。
- LLM 评估 vs Agent 评估:Agent 评估更复杂,agent 会调用工具、修改状态等。
几个常见的核心概念
- 任务(task)(a.k.a problem or test case):定义输入和成功标准。
- 每一轮尝试叫做 trial。由于每一轮的结果都不一样,会执行多轮。
- 一个评分器(grader),一个任务可以有多个评分器,每个包晗多个断言。
- 一个抄本(transcript,也叫做 trace 或者 trajectory)是一个完整的 trial 记录。
- 结果(outcome) 是 trial 的最终结果。比如是否真的定了一张机票,而不是 AI 说自己定了一张。
- 评测框架(evaluation harness)是跑评测的基建。提供指令和工具,并负责记录结果等。
-
智能体工具(agent harness,或者叫做脚手架)。好奇和 agent 有啥区别?文章里面举了一个例子
For example, Claude Code is a flexible agent harness, and we used its core primitives through the Agent SDK to build our long-running agent harness.
- 一个评测集(evaluation suite)是一系列 task 的集合。
有一个重点是,grader 的输入既包含 outcome,也包含 trajectory。
和数据库测试也没啥大的区别 :)
接着讲为什么需要评测。
从一个测试的角度,我觉得这个章节的前半部分在讲废话。中间往后有点有意思的东西。
说 Claude Code 一开始就遇到了“用户反馈问题 -> 修复 -> 其它地方又有问题”的这么一个循环。然后它们开始给局部功能加评测, 接着就给更大的范围加评测,比如 over-engineering。结合 “product monitoring”、“A/B tests”、“user research” 等等手段来保障持续迭代。然后说其它 AI 团队也搞了 evals,或早或晚。里面还提到几个评价维度: latency, token usage, cost per task, and error rates。
接着讲怎样评测。
上来就有个结论:说各类 agent 的评测方式差不多,并且不需要从0造轮子。先介绍 graders。
三类 graders:code-based,model-based,human。有效的评估就是为特定任务选择合适的评分器。 分别介绍了每类 grader 的常见方法、优劣势。很有用,可惜我暂时看不懂。
能力评测和回归评测:前者讲的能不能;后者讲的是能的基础上,好不好。
评估 coding agents:说白了,就是设计 task 和 grader。
评估 conversational agents: 一个不一样的挑战:the quality of the interaction itself is part of what you’re evaluating. 沟通过程和结果是否达成都很重要。说这里面通常要引入一个 LLM 来模拟用户。
评估 research agents: 评估维度有:“comprehensive,” “well-sourced,” or even “correct”。 难点:调研是否全面、不同的引用构建出来的基础事实不一样。
评估 Computer use agents:。。。
不确定 agent 评测的思考。
两个指标:pass@k 评估多少次成功1次。pass^k 评估k次都成功的概率。
从0到1构建牛逼评测的路线图
- 收集任务
- 尽可能早的构建数据集。早期直接把产品需求转换成用例即可。而后期则需要从线上逆向场景。
- 从手动测试过的开始。
- 编写有参考答案、没有歧义的任务
- 构建均衡的问题集:比如正反向都要断言。
- 设计 eval harness 和 graders
- 健壮的 eval harness 和稳定的测试环境。harness 要能模拟生产环境。还有评测环境隔离等问题。
- Grader 的设计要深思熟虑
- 评分器选择,确定性>LLM>人工。
- ‘过度’检查过程有可能破坏 AI 的创造力。
- 对于涉及多组件的任务,设置“部分得分机制”。
- 模型评分通常需要反复迭代才能验证准确性。要与人类专家密切校准;可以使用不同的LLM。
- 对 task 和 grader 要细心 review。一些评测会由于 harness 限制、或者评测设计不够合理,而导致分数不反应实际情况。
- 长期维护和使用 eval
- 人肉检查 transcripts
- 检测评估能力饱和度(比如 swebench 80% 通过率时,这个分数本身就不太容易变化了,但并不代表没有进步)
- 保持评测集的健康度:分工明确,infra + domain experts。推荐 eval-driven development。 让了解用户的人(产品经理,客户成功,销售)来贡献 eval task。
不仅要有评测,还要有监控、A/B测试、人工审核过程、系统性人工评测。
读后感
写得和论文一样,算是深入浅出。能感觉到 anthropic 这公司的工程搞得挺扎实的,工程文化应该不错。 最想记录的,还是从一个测试角度,来看这个 AI evals,看看异同点吧
- 架构上:基本相似,由 test infra + test case 组成。不过这里提到说 test case 可以由产品、SA等人来产生。
- test infra
- Evaluation harness + agent harness 基本对应“测试框架”。
- 评测环境:对应环境准备、产品部署、产品监控等一套业务逻辑绑定较弱的基建。
- test case
- task + grader + metrics:本质也就是用例。相当于场景+断言。
- grader:这里和数据库测试也很像,需要不同的 checker。不同的在于 LLM grader 是这里重要的一环。
- 面向 transcript 的 grader:有点像白盒观测点。
- 面相最终结果的 grader:黑盒观测点。
- metrics:grader 更像功能测试,metrics 会辅助评估性能、稳定性等。
- grader:这里和数据库测试也很像,需要不同的 checker。不同的在于 LLM grader 是这里重要的一环。
- task + grader + metrics:本质也就是用例。相当于场景+断言。
- test infra
Comments