AI Agent 回归评测怎么做:评测集 + 自动 grader + CI 接入
没有回归评测的 AI Agent 上线就像无监督机器人:换 prompt、升级模型、调 RAG 召回器,每次变更都可能让历史正确的 case 变错。本文给一套从评测集构造到 CI 接入的完整方案,配合 Agent 可观测体系就是完整的质量护栏。
一、为什么需要回归评测
- 升级到 Claude Sonnet 4.6 后,老用户问「上次的方案」回答从「正确复述」变成「拒答」
- prompt 加了一条「请用中文」让英语客户问的英文答案也变中文
- RAG 召回器从 BGE 换成 OpenAI Embedding,专有名词召回率掉 18%
- 客户报 bug 才知道,损失已经发生
结论:Agent 越复杂,越需要把「人工抽查」工业化成「自动回归」。
二、评测集(Golden Set)怎么构造
- 从线上日志抽样:按场景分桶 — 标准问 50%、复杂问 30%、边界/异常 20%
- 规模建议:MVP 阶段 100-200 条,生产成熟阶段 500-2000 条
- 黄金答案:核心 case 必须有人工标注的「正确答案」或「正确行为序列」
- 持续维护:每月从线上新 bug、客诉 case 中再补 20-50 条
三、评测维度怎么定(业务驱动)
| 维度 | 含义 | grader 类型 |
|---|---|---|
| 准确性 | 事实正确,无 hallucination | LLM-as-judge + 黄金答案对比 |
| 相关性 | 回答用户问题,没跑题 | LLM-as-judge |
| 安全 | 无敏感词、无越权操作 | 规则 + LLM |
| 格式 | JSON 字段齐 / Markdown 合法 | 规则脚本 |
| 延迟 | P95 < 8s | 纯指标 |
| 成本 | 单次会话 token < 阈值 | 纯指标 |
| 工具调用 | 正确调用 tool + 参数 | 规则 + LLM |
四、LLM-as-judge 的正确姿势
# 评判 prompt 模板
你是评测员,根据下面 rubric 给 0/1 分。
[问题] {{question}}
[黄金答案] {{golden}}
[被测答案] {{candidate}}
Rubric:
- 1 分:事实与黄金答案一致,关键数字/名词正确
- 0 分:事实错误、漏关键信息、新增 hallucination
只输出 JSON: {"score": 0/1, "reason": "..."}
关键经验:
- grader 模型必须强于被测模型,否则 grader 给的分不可信
- 做 inter-rater agreement:让 grader 和人工各打 30 条,Cohen's Kappa > 0.7 才用
- 分维度独立打分,不要让一个 prompt 评 5 个维度,模型会偷懒
五、阈值与告警
# 每周基线 = 上周完整评测得分
baseline = 0.84
# 警戒线 -5%:发邮件/Slack
warn_threshold = baseline * 0.95 # = 0.798
# 回滚线 -15%:阻断 PR / 自动回滚
block_threshold = baseline * 0.85 # = 0.714
六、CI 接入
GitHub Actions 示例:
on:
pull_request:
paths: ['prompts/**', 'rag/**', 'agents/**']
jobs:
regression-eval:
steps:
- run: pnpm eval:fast # 跑 sampled 100 条,3-5 分钟
- if: score < block_threshold
run: exit 1 # 阻断 PR
- run: pnpm eval:full # cron: 每周一晚跑 2000 条作为基线刷新
七、5 个常见错误
- ❌ 评测集只有标准问:上线被边界 case 打脸
- ❌ 用被测模型给自己打分:分数虚高,无意义
- ❌ 只看总分不分维度:准确性掉 30% 但格式分 +30% 互相抵消,掩盖问题
- ❌ 每次发布全量跑 2000 条:CI 阻塞,开发抓狂 → 应该 sample + 定期 full
- ❌ 评测集不维护:3 个月后业务变了,golden set 还是老版本,评测失效
常见问题
Agent 回归评测的评测集要多大?
按阶段定规模:MVP 阶段建议 100-200 条,生产成熟阶段 500-2000 条。case 从线上日志抽样,按标准问 50%、复杂问 30%、边界异常 20% 分桶,核心 case 要有人工标注的黄金答案。
为什么 LLM-as-judge 的 grader 模型要比被测模型强?
如果 grader 不如被测模型强,它给的分就不可信,无法判断被测答案对错。文章建议 grader 用更强的模型,并和人工各打 30 条做 inter-rater agreement 校准,Cohen's Kappa 大于 0.7 才投入使用。
回归评测的阈值和告警怎么设?
以上周完整评测得分作为基线,每个维度设两条线:警戒线为基线的 95%(约 -5%)触发邮件或 Slack 告警,回滚线为基线的 85%(约 -15%)阻断 PR 或自动回滚。可结合 LangSmith、Langfuse 做 dashboard。
评测怎么接入 CI 流水线?
在 prompt、模型或 RAG 召回器变更的 PR 上,CI 自动跑抽样的快速评测(约 100 条、3-5 分钟),得分低于回滚线则 exit 1 阻断 PR。同时用 cron 每周跑一次完整评测(如 2000 条)刷新基线。
艾景特能帮忙搭建 Agent 评测体系吗?
可以。艾景特科技提供评测集构造、LangSmith/Langfuse 接入和 CI 模板服务,文章给出的落地周期是 6-8 周让 Agent 上线即有质量护栏。需求可联系 [email protected]。
需要从 0 搭建 Agent 评测体系?
艾景特提供评测集构造服务 + LangSmith/Langfuse 接入 + CI 模板,6-8 周让你的 Agent 上线即有质量护栏。
咨询 Agent 评测方案