高 困难
Agent评测平台设计#
一句话答案#
Agent 评测平台的核心是「数据集版本化+多维度评测+发布门禁+回归守护」:用版本化数据集保证可复现,离线评测覆盖准确性/忠实度/工具调用/任务完成度四维,评测结果作为发布门禁阻断劣化版本上线。
核心要点
一、评测平台架构
数据集管理 ──→ 评测引擎 ──→ 结果分析 ──→ 发布门禁
│ │ │ │
版本化存储 多维度评测 统计+可视化 CI/CD集成
标注协议 并行执行 回归检测 阻断/放行
采样策略 成本控制 报告生成 通知告警plaintext二、数据集版本化
数据集结构:
{
"dataset_id": "rag-eval",
"version": "3.2.0",
"created_at": "2026-05-26",
"schema_version": "1.0",
"metadata": {
"domain": "tech-docs",
"annotators": ["annotator_A", "annotator_B"],
"agreement_score": 0.85
},
"samples": [
{
"id": "q001",
"query": "RRF 的 k 参数默认值是多少?",
"category": "factual",
"difficulty": "easy",
"ground_truth": "k=60",
"relevant_docs": ["doc_123", "doc_456"],
"expected_tools": ["knowledge_search"],
"metadata": {"source": "manual", "reviewed": true}
}
]
}json版本管理原则:
| 操作 | 版本变更 | 示例 |
|---|---|---|
| 新增样本 | minor (3.2→3.3) | 扩展数据集 |
| 修正标注 | patch (3.2.0→3.2.1) | 修复错误答案 |
| 修改 schema | major (3→4) | 新增评测维度 |
| 删除样本 | major(破坏性、不兼容)+ changelog | 移除低质量样本 |
三、标注协议与质量控制
标注流程:
原始问题 → 标注员A标注 → 标注员B交叉验证
↓
一致 → 入库
不一致 → 仲裁员裁决 → 入库 + 记录分歧plaintext一致性度量:
- Cohen’s Kappa:两人一致性(>0.6 可接受,>0.8 优秀)
- Fleiss’ Kappa:多人一致性
- 单人标注时:诚实披露偏差 + 定期抽检 + 下轮交叉验证
标注规范示例:
| 维度 | 评分标准 |
|---|---|
| 相关性 (0-1) | 1=完全相关,0.5=部分相关,0=不相关 |
| 忠实度 (0-1) | 1=完全基于检索内容,0=凭空编造 |
| 完整性 (0-1) | 1=回答所有子问题,0.5=部分回答,0=未回答 |
四、多维度评测
| 维度 | 评测什么 | 指标 | 方法 |
|---|---|---|---|
| 检索质量 | 召回的文档是否相关 | Recall@K, MRR, NDCG | 对比 ground_truth docs |
| 生成质量 | 回答是否准确完整 | Faithfulness, Relevance | LLM-as-Judge + 人工抽检 |
| 工具调用 | 是否调对工具、参数正确 | Tool Accuracy, Param F1 | 对比 expected_tools |
| 任务完成度 | 端到端是否达成目标 | Task Completion Rate | 人工判断 or 脚本验证 |
| 安全 | 是否拒绝恶意输入 | Rejection Rate | 注入测试用例 |
| 性能 | 延迟和成本 | P99 Latency, Cost/Query | 计时 + token 计数 |
Agent Task Completion 评测(最难的维度):
- 简单任务:脚本验证(如”查询后返回格式正确”)
- 复杂任务:人工判断 + 评分标准(“是否完成了用户意图”)
- 多步任务:检查每一步的工具调用序列是否合理
- 开放任务:LLM-as-Judge 评分 + 人工校准
五、发布门禁体系
代码合并 → 触发评测 Pipeline
│
├─ 快速评测(5分钟):核心 20 条 query
│ └─ 任何指标劣化 >5% → 阻断合并
│
├─ 标准评测(30分钟):完整数据集
│ └─ 关键指标低于 SLO → 阻断发布
│
└─ 完整评测(2小时):多次运行+统计显著性
└─ 用于版本里程碑评审plaintext门禁规则示例:
| 指标 | 门禁条件 | 动作 |
|---|---|---|
| Recall@5 | 不低于上个版本 -0.03 | 低于→阻断 |
| Faithfulness | ≥0.80 | 低于→阻断 |
| 安全拒绝率 | 100%(adversarial set) | <100%→阻断 |
| P99 Latency | 不高于上个版本 +20% | 超过→告警 |
| Cost/Query | 不高于上个版本 +30% | 超过→告警 |
六、回归检测
新版本评测结果 vs 基线版本评测结果
│
├─ 逐 query 对比:哪些 query 变好/变差?
│ └─ 变差的 query → 自动归类(检索劣化/生成劣化/工具调用错误)
│
├─ 分类别对比:哪个 category 整体劣化?
│ └─ factual 类劣化 → 可能是 BM25/索引问题
│ └─ reasoning 类劣化 → 可能是 prompt/模型问题
│
└─ 统计显著性检验
└─ paired t-test / bootstrap → 差异是否显著plaintext面试回答(2分钟版)
Agent 评测平台我设计了四个核心模块。第一是数据集版本化管理,每个数据集有版本号和 schema,新增样本是 minor 版本,修正标注是 patch 版本,保证评测可复现。标注质量通过交叉验证和 Cohen’s Kappa 一致性度量控制。第二是多维度评测引擎,不只看生成质量,还要评检索质量用 Recall 和 MRR、工具调用正确性、任务完成度和安全性。其中 Agent Task Completion 是最难评的维度,简单任务用脚本验证,复杂任务需要 LLM-as-Judge 加人工校准。第三是发布门禁,CI/CD 中集成快速评测和标准评测两级门禁,关键指标劣化超过阈值直接阻断发布。第四是回归检测,逐 query 对比新旧版本找出劣化点,按类别归因是检索问题还是生成问题,用统计检验判断差异是否显著。整个平台的核心价值是把”凭感觉调参”变成”数据驱动迭代”。
追问与易错
追问方向:
- “LLM-as-Judge 有什么偏差?”→ 位置偏差(偏好第一个答案)、冗长偏差(偏好更长的回答)、自我偏好(偏好自己模型的输出);缓解方法:多次评测取均值、用不同模型交叉评、定期人工校准评分标准
- “评测成本怎么控制?”→ 快速迭代用核心子集(50-100 条代表性用例),全量评测定期跑;LLM 评分用便宜的小模型(如 GPT-4o-mini / qwen-turbo)替代昂贵模型;缓存重复评测结果避免相同输入重复调用
- “数据集多大才够?”→ 取决于置信区间要求:50 条数据可达 ±0.05 CI(粗筛够用),200 条可达 ±0.025 CI(正式评测推荐),统计显著性比数量更重要
- “怎么处理非确定性?”→ 同一 query 多次运行(3-5 次)取中位数或均值消除随机波动;设置 temperature=0 减少采样随机性;评测报告附带置信区间而非单一数字
易错点:
- ❌ “单次评测就能下结论”——必须多次运行+统计检验
- ❌ “只评最终答案”——Agent 需要评工具调用序列和中间步骤
- ❌ “人工标注一定准确”——需要一致性度量和仲裁机制
- ✅ 核心思路:可复现(版本化)+多维度(不只看准确率)+自动化(CI门禁)+可归因(回归分析)