27 Agent Eval¶
难度:中高级|前置:结构化输出、Tool、RAG、Workflow|目标:知道修改后到底变好还是变坏
为什么“试几个问题感觉不错”不够¶
模型输出不确定,失败可能只在特定表达、数据或工具组合出现。没有固定评测集:
- Prompt 修改无法比较;
- 模型升级无法回归;
- 失败靠用户投诉发现;
- 成本与质量无法权衡。
从任务分解指标¶
一个 Agent 可以分别评估:
输入与结构¶
- Schema 成功率;
- 意图识别;
- 缺失信息检测。
工具¶
- 工具选择正确率;
- 参数正确率;
- 不该调用时是否调用;
- 调用次数;
- 重复副作用。
RAG¶
- 正确资料召回率;
- 引用正确性;
- 无证据时拒答。
最终任务¶
- 任务完成率;
- 事实正确性;
- 用户目标覆盖;
- 人工接管率。
工程¶
- 延迟;
- Token;
- 费用;
- 错误和重试;
- 平均步骤数。
评测方法¶
| 方法 | 适合 | 风险 |
|---|---|---|
| 精确规则 | Schema、参数、标准答案 | 覆盖开放答案有限 |
| 程序模拟 | 工具轨迹、状态变化 | 模拟与真实环境差异 |
| 人工标注 | 高风险、开放质量 | 成本高、主观 |
| LLM-as-Judge | 大规模初筛 | Judge 也会偏差 |
优先用确定性规则;开放质量再结合人工和 Judge。Judge 必须用人工样本校准。
数据集结构¶
{
"case_id": "offline-017",
"input": "为什么设备 A 昨天离线?",
"expected_tools": ["get_online_history"],
"forbidden_tools": ["restart_device"],
"assertions": {
"must_cite_evidence": true
},
"tags": ["iot", "read_only", "ambiguous_time"]
}
包含正常、边界、对抗和历史失败案例。
版本¶
每次结果关联:
- 数据集版本;
- Prompt 版本;
- 模型版本;
- Tool Schema 版本;
- 代码版本;
- 评测器版本。
自测¶
- 工具正确率和任务完成率为什么要分开?
- LLM-as-Judge 为什么需要人工校准?
- 失败案例为什么应进入回归集?
- 一次评测至少要记录哪些版本?
完成标准¶
- 能设计 20 条最小评测集
- 能定义工具、结果和工程指标
- 能区分规则、人工与 Judge
- 完成 Agent Eval 实验
下一单元:可观测性、成本与模型路由