本实践的产出 ⭐ 最小产出:国际机票 Agent 的 30 条最小评测集 完整产出:评测集 + 轨迹评测 + 两版本 A/B 统计 + 准入门槛与回归流程
预计投入:8~12 小时。这是整条学习路线里复用价值最高的产出——评测集一旦建成,后面每一次改动都靠它说话。
| 类型 | 条数 | 说明 |
|---|---|---|
| 真实任务 | 12 | 来自真实用户提问、线上日志、已修复的问题 |
| 合成任务 | 6 | 覆盖组合空间(多程 / 婴儿票 / 多币种 / 跨天) |
| 边界任务 | 8 | 信息不全、超范围、多意图、极端值、时区边界 |
| 对抗任务 | 4 | 提示词注入、诱导越权、矛盾指令、伪造身份 |
env.time 与 tool_stubs 是评测集能不能复用的关键 不固定时间,"下周三"每周都解析成不同日期,用例第二周就失效了。不固定工具返回,同一条用例今天跑和明天跑结果不同,无法比较版本差异。
用真实线上接口做评测是最常见的错误——它测的是"今天线上数据长什么样",不是"Agent 的能力"。
真实任务(12 条)——从这三个来源找:
边界任务(8 条)——至少覆盖:
对抗任务(4 条)——这四条是硬红线用例:
对抗用例的判据是"零容忍" 这四条的期望不是"大部分情况下不越权",是 must_not_call 里的危险工具一次都不能被调用。评测报告里它们应当单独列,不参与百分比平均。
存放:ai-output/temporary/data/ 或独立的评测仓目录。
做法:写一个最小评测跑批脚本,对每条用例:
输出报告的最小格式:
| 用例 | 类型 | 结果通过 5 次中 | 轨迹合规 5 次中 | 状态正确 5 次中 | 平均步数 | 平均成本 |
|---|
汇总层:
| 指标 | 值 |
|---|---|
| 任务成功率(三层全通过) | |
| 仅结果通过、轨迹不合规的比例 | ← 这个数字最有价值 |
| 工具选择准确率 | |
| 参数正确率 | |
| 对抗用例越权次数 | 必须为 0 |
| 平均单次任务成本 / P95 时延 |
"结果对但轨迹不对"的比例是关键诊断指标 这个比例高,说明 Agent 在蒙对——今天的成功率不代表明天。它是回归风险的先行指标,比总成功率更值得盯。
验收:
任务:比较两个版本(两个提示词版本、两个模型、或工具描述改前改后)。
做法:
判断规则(写清楚再看数据,避免事后找理由):
| 情况 | 结论 |
|---|---|
| 差异 < 单版本自身的波动幅度 | 不能说改进了 |
| 成功率提升但成本/时延显著上升 | 需要权衡,不是无条件更好 |
| 总成功率持平但轨迹合规率提升 | 是真改进(稳定性提升) |
| 对抗用例出现越权 | 一票否决,无论其他指标多好 |
验收:
选 5 条失败或边界用例,交给独立 Reviewer 验证。Reviewer 的输出必须使用以下结构:
调用方随后随机重跑 2~3 条 Evidence,并记录是否一致。
验收:
参考:Claude Code:验证 Agent。
把讲义第八节的模板落成国际机票 Agent 的具体版本:
额外要求:
对现有的国际机票 Agent(或阶段 4 的最小 Loop)做一次可观测性自检——用讲义第七节的五个问题:
| # | 问题 | 现在能答吗 | 缺什么 |
|---|---|---|---|
| 1 | 这次任务走了哪几步 | ||
| 2 | 每一步为什么这么走 | ||
| 3 | 在哪一步出的问题,属于四类故障中的哪类 | ||
| 4 | 花了多少钱、时延在哪 | ||
| 5 | 同类任务近一周成功率趋势 |
验收:能列出补齐可观测性的最小埋点清单(不超过 10 个字段),并说明每个字段用来回答哪个问题。
| 维度 | 阶段 10 的问法 |
|---|---|
| 解释 | 讲清"为什么不能拿线上接口做评测" |
| 画图 | 画出评测流水线:用例 → 固定环境 → 多次采样 → 三层判据 → 报告 → 门禁 |
| 比较 | 五种判据各适用什么,LLM 判官的两个偏好陷阱 |
| 实践 | 30 条用例 + 跑批报告 + 一次 A/B + Reviewer 抽查 |
| 评测 | 能定义"改进"的统计标准,且承认"不能确定"这个结论 |
| 产品化 | 准入门槛能进发版流程 |
| 迁移 | 把这套方法用到支付收银台 Agent 上,四类用例的配比要怎么变?(提示:对抗与边界的占比要更高) |
通过标志 有人问"这版比上版好吗",你能在半小时内给出有统计依据的答案,而不是"我试了几个感觉还行"。