一次讲清大模型应用评测:从 Recall@k、LLM Judge 到 Agent 上线门禁

一次讲清大模型应用评测:从 Recall@k、LLM Judge 到 Agent 上线门禁

**文章摘要:**大模型应用不能只靠"感觉回答不错"来验收。本文从真实业务目标出发,系统讲清模型、RAG、意图识别、工具调用与 Agent 应该评什么,解释 Recall@k、MRR、nDCG、Macro-F1、FPR/FNR、pass@k 与 pass^k,并给出三类 Grader、评测数据集、Trace、LLM Judge 校准、发布门禁和线上闭环的完整落地方法。

很多团队第一次做大模型评测,通常会从下面几个问题开始:

  • 准确率是多少?
  • 有没有一个通用 Benchmark 可以证明模型够好?
  • RAG 的 Recall@5 达到多少才能上线?
  • 开放式回答没有唯一标准答案,应该怎么评分?
  • LLM Judge 能不能代替人工?
  • Agent 明明说"任务已完成",为什么还不能算成功?

这些问题都很重要,但如果直接从指标开始,评测很容易变成一张漂亮却无法指导发布的成绩单。

大模型评测真正要解决的是:

在明确的业务目标和风险约束下,这个 AI 系统能否稳定完成真实用户任务;如果失败,失败在哪里;一次成功需要付出多少延迟、成本和人工监督。

这里的"系统"不只是某个模型,而是:

text 复制代码
模型
+ System Prompt
+ RAG
+ Memory
+ Tools
+ Permissions
+ Agent Loop
+ Runtime Configuration

因此,大模型应用评测不是一次模型考试,而是一套贯穿开发、发布和生产运营的工程系统。


一、先建立正确边界:你评的不是模型,而是完整系统

公开 Benchmark 可以比较模型在数学、代码、知识和推理等任务上的能力,但产品中的真实表现还会受到很多因素影响:

  • Prompt 是否明确;
  • 知识库是否最新;
  • Retriever 是否找到了正确证据;
  • 上下文是否混入无权限数据;
  • 工具描述和参数 Schema 是否准确;
  • Agent 是否选择了正确工具;
  • 记忆是否过期或串用户;
  • 模型版本、温度、Token 预算和重试策略是否变化。

所以,一套完整评测至少需要三层。

层级 被测对象 主要用途
基座模型层 模型本身 模型初筛、能力画像、成本与延迟比较
组件层 意图、检索、重排、生成、工具、记忆、权限 定位问题、快速回归、优化局部能力
端到端与生产层 完整用户旅程和最终业务状态 判断任务是否完成、系统能否安全上线

三层不能互相替代。

  • 只做模型 Benchmark,不知道产品是否解决真实问题;
  • 只做组件评测,不知道组件组合后是否完成任务;
  • 只看端到端成功率,出了问题又不知道应该修检索、Prompt 还是工具编排。

正确做法是同时保留组件证据和端到端结果。


二、大模型应用到底应该评测什么

1. 任务与业务结果

第一优先级不是"回答像不像人",而是用户的任务是否真正完成。

常见指标包括:

  • Task Success Rate:任务是否达到预期目标;
  • End-state Correctness:数据库、订单、工单、文件或日程最终状态是否正确;
  • Constraint Satisfaction:权限、合规、时间和流程约束是否满足;
  • Human Handoff Quality:需要转人工时是否正确转交,信息是否完整;
  • Cost per Successful Task:完成一次成功任务的真实成本。

例如,客服 Agent 回复"已经为你退款",并不能证明退款成功。评测必须检查:

text 复制代码
是否完成身份验证
  ↓
是否调用正确退款工具
  ↓
订单号和金额是否正确
  ↓
数据库是否真的生成退款记录
  ↓
是否发生越权或重复退款

对有现实副作用的 Agent,最终文本只是一条证据,真实环境状态才是核心结果。

2. 回答质量

"回答质量"不应该只给一个笼统的 1~5 分,最好拆成独立维度:

维度 要回答的问题
Correctness 结论是否正确,是否有事实错误
Completeness 完成任务所需的关键点是否遗漏
Relevance 是否直接回答问题,是否包含无关内容
Instruction Following 格式、语言、长度、范围和禁止项是否遵守
Attribution 需要证据的结论是否有来源支持
Uncertainty Handling 证据不足时是否澄清、拒答或表达不确定
Interaction Quality 表达是否清晰、简洁,语气和下一步是否合适

这里必须区分两个容易混淆的概念:

  • Faithfulness:回答是否忠实于本次提供的上下文;
  • Factual Correctness:回答是否符合真实世界事实或权威答案。

如果知识库里是一份过期政策,模型完全忠实地复述了它,那么 Faithfulness 可能很高,但 Factual Correctness 仍然很低。

3. RAG:检索和生成必须拆开测

RAG 出错至少有两种可能:

  1. 没有找到正确资料;
  2. 找到了正确资料,但模型没有正确使用。

因此要分成两层。

检索层主要观察:

  • Recall@k、Hit Rate@k、MRR、nDCG@k;
  • Context Precision;
  • 文档是否权威、最新、版本正确;
  • ACL 和租户隔离是否正确;
  • 不同语言、问题类型、文档类型和上下文长度下的表现。

生成层主要观察:

  • Answer Correctness;
  • Claim-level Faithfulness;
  • Citation Correctness:引用是否真的支持旁边的陈述;
  • Citation Coverage:需要证据的陈述是否都有引用;
  • 没有足够证据时,是否正确拒答或澄清。

一个很实用的定位方法是进行两次生成实验:

text 复制代码
实验 A:使用人工提供的正确证据,即 Oracle Context
实验 B:使用系统实际检索到的 Context
  • A 正确、B 错误:问题主要在检索;
  • A、B 都错误:问题更可能在生成、Prompt 或任务定义;
  • B 的资料无权限:问题属于权限或 Context Assembly,而不是普通相关性问题。

4. 意图识别、工具调用与 Agent

意图识别不能只看总体 Accuracy,还应该关注:

  • Macro-F1;
  • 每个关键意图的 Precision、Recall 和 F1;
  • 高风险类别的 False Negative Rate;
  • Unknown、Out-of-scope 和 Ambiguous 请求的澄清准确率;
  • 多意图、上下文依赖与类别漂移;
  • Confidence Calibration。

工具调用与 Agent 还要评测:

  • 是否选择了正确工具;
  • 是否能正确选择"不调用工具";
  • 参数名称、类型、枚举、时间和实体是否准确;
  • 多步或并行调用的依赖关系是否正确;
  • 工具失败后能否恢复、重试、降级或转人工;
  • 最终业务状态是否正确;
  • 是否发生非必要调用、循环调用或未授权操作。

5. 记忆、安全、可靠性与成本

记忆系统至少应测试:该记的信息能否正确写入和找回,不该记的内容是否误存,旧事实能否被更新,不同用户和租户是否隔离,删除请求是否真正传播到索引与缓存。

安全测试至少应覆盖:Prompt Injection、Jailbreak、敏感数据泄露、跨租户访问、Excessive Agency、过度拒绝和资源消耗攻击。

生产工程指标还包括:

  • pass@1 与重复运行稳定性;
  • P50、P95、P99 延迟;
  • Token、工具和基础设施成本;
  • Timeout、Retry、Fallback 与降级表现;
  • 提示词扰动、输入噪声、长对话和供应商切换下的稳健性。

三、从应用架构反推评测点

与其先收集一堆指标,不如先问:系统在哪些位置引入了不确定性?

应用架构 新增的不确定性 重点评测
Single-turn 单次输入与输出 指令遵循、功能正确性、输出格式
Workflow 多个模型步骤串联 每一步的输入输出,以及最终组合结果
Single-agent 动态选择工具和行动 工具选择、参数精度、澄清、恢复、最终状态
Multi-agent Agent 之间移交控制权 Handoff 准确率、职责边界、循环移交、成本与延迟

例如一个订单查询 Workflow:

text 复制代码
提取订单号
  → 查询订单工具
  → 解析工具结果
  → 生成用户回复

既要逐步测试订单号抽取、工具参数和结果解析,也要测试最终回答是否包含正确状态、时间和追踪信息。

Multi-agent 并不天然比 Single-agent 更高级。多一个 Agent 就多一层路由、状态、权限、延迟和故障边界。是否拆成 Multi-agent,应该由评测证明:只有当单 Agent 在指令规模、工具规模或专业边界上出现可测量瓶颈,而且拆分收益超过复杂度成本时,才值得采用。


四、常用指标怎么理解

1. Recall@k、Hit Rate、MRR 与 nDCG

假设一个问题的检索结果是:

text 复制代码
[A, B, C, D, E]

其中 B 和 D 是相关文档。

Recall@k:相关材料找回了多少
text 复制代码
Recall@k = Top k 中相关项数量 / 全部相关项数量

如果知识库中共有 4 份相关文档,Top 5 找回 3 份:

text 复制代码
Recall@5 = 3 / 4 = 0.75

它表示前 5 条结果覆盖了 75% 的相关材料,而不是"必须找到 5 条相关文档"。

Hit Rate@k:至少命中一个了吗
text 复制代码
Hit@k = 1,Top k 至少有一个相关项
Hit@k = 0,Top k 一个相关项也没有

如果任务只需要找到一个正确入口,Hit Rate 很有用;但它无法区分命中 1 个还是命中全部证据。

MRR:第一个相关结果出现得有多早

对单个查询:

text 复制代码
Reciprocal Rank = 1 / 第一个相关项的排名

前面例子中,第一个相关文档 B 排在第 2 位,因此:

text 复制代码
RR = 1 / 2 = 0.5

MRR 是对所有查询的 RR 求平均。它非常关注第一个正确结果,但基本不关心后续相关文档。

nDCG:高相关度结果是否排在前面

nDCG 同时考虑:

  • 排名越靠前,贡献越大;
  • 相关性可以不是 0/1,而是核心、一般、弱相关等等级;
  • 最终结果归一化到 0~1,便于不同查询之间比较。

选择指标时可以这样记:

业务需要 优先指标
需要多个互补证据 Recall@k
只需命中任意一个入口 Hit Rate@k
用户主要看第一个有效结果 MRR
相关性有等级且排序很重要 nDCG@k

2. TP、FP、FN、TN 与分类指标

假设把"退款意图"设为正类:

真实情况 模型预测 名称 含义
退款 退款 TP 正确识别
非退款 退款 FP 误报
退款 非退款 FN 漏报
非退款 非退款 TN 正确排除

由此得到:

text 复制代码
Precision = TP / (TP + FP)
Recall    = TP / (TP + FN)
F1        = 2 × Precision × Recall / (Precision + Recall)
FPR       = FP / (FP + TN)
FNR       = FN / (FN + TP) = 1 - Recall

它们回答的问题不同:

  • Precision:模型预测为退款的请求中,有多少真的是退款;
  • Recall:所有真实退款请求中,有多少被找出来;
  • FPR:所有真实非退款请求中,有多少被误判为退款;
  • FNR:所有真实退款请求中,有多少被漏掉。

指标选择取决于错误代价:

  • 急救、欺诈和高风险投诉最怕漏报,应重点控制 FNR;
  • 自动退款、封禁和现实动作最怕误伤,应重点控制 FPR 与 Precision;
  • 一个阈值通常无法同时让误报和漏报都下降,需要结合业务代价选择。

3. 为什么类别不均衡时要看 Macro-F1

Macro-F1 的计算方式是:先分别计算每个类别的 F1,再做等权平均。

text 复制代码
Macro-F1 = (F1_类别1 + F1_类别2 + ... + F1_类别N) / N

假设三个意图的 F1 分别为 0.90、0.80 和 0.30:

text 复制代码
Macro-F1 = (0.90 + 0.80 + 0.30) / 3 ≈ 0.67

即使"普通咨询"占全部流量的 90%,少数但关键的"退款""投诉"仍然与大类拥有同等权重,不会被总体 Accuracy 掩盖。

意图识别至少建议同时报告:

  1. Macro-F1;
  2. 每个类别的 Precision、Recall、F1;
  3. Confusion Matrix;
  4. 高风险类别的 FNR;
  5. Unknown / Ambiguous 的澄清准确率;
  6. 置信度校准;
  7. 按业务严重度统计的错误数。

4. pass@k 与 pass^k:Agent "能成功"和"稳定成功"不是一回事

Agent 具有非确定性,同一任务多次运行可能得到不同结果。

指标 含义 k 增大时 适用场景
pass@k k 次尝试中至少成功一次 通常上升 可以生成多个候选,只要一个可用
pass^k k 次尝试全部成功 通常下降 面向用户、每次都应该可靠

若单次成功率为 75%,并暂时假设每次 Trial 相互独立:

text 复制代码
pass@3 = 1 - (1 - 0.75)^3 ≈ 98.4%
pass^3 = 0.75^3 ≈ 42.2%

这意味着同一个 Agent 可能"多试几次几乎总能成功",但"连续三次都成功"的概率不足一半。

对候选代码生成,可以关注 pass@k;对直接操作订单、文件或账户的 Agent,更应该关注 pass@1、pass^k 和真实重复运行结果。


五、三类 Grader:不是三选一,而是组合使用

Grader 是对某个表现维度执行评分的逻辑。常见有三类。

Grader 适合评什么 优点 局限
Code / Metric-based Schema、数值、工具、测试、数据库状态、延迟、成本 快、便宜、客观、可复现 不擅长开放式语义
Model-based / LLM Judge 相关性、完整性、语气、语义等价、证据支持 可规模化处理开放式内容 有随机性和偏差,需要校准
Human Grader 高风险、争议、领域专业判断、Judge 校准 最接近真实专家标准 慢、贵,也存在评审分歧

它们不是固定三选一。一条任务完全可以同时使用多个 Grader。

以退款客服 Agent 为例:

text 复制代码
确定性 Hard Gates
  - 是否完成身份验证
  - 工具和参数是否正确
  - 数据库退款状态是否正确
  - 是否发生越权副作用

LLM Judge
  - 政策解释是否清楚
  - 是否忠实于工具结果
  - 语气和同理心是否合格

Human Review
  - 校准 Judge
  - 复核高风险、争议和 Unknown 样本
  - 抽查普通样本

一个实用原则是:

能确定性判断的,优先用代码;需要语义弹性的,使用经过校准的模型;高风险、疑难和标准设计交给人。

评分组合通常有三种:

  • Binary:所有硬条件都必须通过;
  • Weighted:多个质量维度加权达到阈值;
  • Hybrid:安全和状态使用硬门禁,开放式质量使用加权分。

生产系统通常应该选择 Hybrid,因为一次跨租户泄露不能被几十条"语气很好"抵消。


六、Agent 评测的对象模型:Task、Trial、Trace 与 Outcome

只保存"输入问题 + 最终答案",对 Agent 来说远远不够。

一套完整对象关系是:

text 复制代码
Evaluation Suite
  └─ Task
      └─ Trial × N
          ├─ Agent Harness
          ├─ Environment
          ├─ Transcript / Trace
          └─ Outcome
               ↓
         Code / Model / Human Graders

几个核心术语:

术语 含义
Task 一条具有输入、初始状态、约束和成功标准的测试
Trial Agent 对同一 Task 的一次独立尝试
Transcript / Trace 模型输出、工具调用、中间结果和错误恢复的完整轨迹
Outcome Trial 结束时数据库、文件、订单、工单或 UI 的真实状态
Evaluation Harness 创建环境、运行任务、记录、评分和聚合结果的评测基础设施
Agent Harness Prompt、上下文、工具、Agent Loop 和终止条件等被测运行系统

Evaluation Harness 和 Agent Harness 不能混为一谈:前者负责"怎样测试",后者属于"被测试的系统"。

每个 Trial 应从干净、可重置、尽量接近生产的环境开始。否则,上一次运行留下的缓存、文件、Git 历史或数据库状态可能泄露答案,也可能让多个失败由同一个环境问题引起。


七、真实项目中的完整落地步骤

Step 1:选择一条用户旅程,写清 Eval Contract

不要从"评测整个智能客服"开始,而要从边界清晰的任务开始,例如:

用户咨询会员退款资格;系统必须检索当前政策;若信息足够则回答资格与依据;在没有订单、身份验证和授权时不得创建退款。

Eval Contract 至少要定义:

  • 什么叫成功;
  • 回答必须包含什么;
  • 哪些情况必须澄清、拒答或转人工;
  • 允许、要求和禁止哪些工具;
  • 期望最终状态;
  • 哪些 invariant 绝对不能破坏;
  • 延迟、成本、调用次数和风险预算。

指标应该在目标之后选择,而不是反过来用现成指标定义产品成功。

Step 2:记录可回放的完整 Trace

建议至少记录:

  • trace_id、用户输入、历史消息和时间;
  • 意图、候选分类和置信度;
  • 检索文档 ID、版本、排序、分数与 ACL 决策;
  • 读取和写入的记忆;
  • Prompt、模型版本和推理参数;
  • 工具名、参数、返回值、错误和重试;
  • 最终回答、Claim 与 Citation 对应关系;
  • 数据库或业务最终状态;
  • Token、延迟、成本、转人工和用户反馈。

没有 Trace,看到错误回答时无法判断问题发生在意图、检索、上下文、生成、工具还是业务系统。

Step 3:构建分层数据集

数据来源可以包括:

  • 脱敏后的真实生产流量;
  • 历史投诉、事故、人工接管和失败案例;
  • 领域专家设计的典型任务;
  • 长尾、无答案、文档冲突、多意图和多轮场景;
  • Prompt Injection、越权、隐私与成本攻击;
  • 经过人工检查的合成数据。

建议至少拆成四类集合:

数据集 用途 管理原则
Development Set 快速迭代 Prompt、RAG 和代码 团队可见,可频繁运行
Regression Set 固化历史 Bad Case 和稳定能力 每次变更必跑,不轻易删除
Hidden Release Set 检测泛化并防止对可见题过拟合 与开发隔离,定期换新
Red-team Set 安全、高风险和对抗边界 限制访问,持续扩充

早期可以采用 80/20 Approach:先把 20~50 条最有价值的真实手测和失败案例变成可重复任务,快速建立反馈闭环。

但要注意:

20~50 条是启动建议,不是生产可靠性的统计证明;低频高危事件也不能因为不符合"高频 80%"而被排除。

Step 4:不要只标注一篇"标准答案"

开放式回答可能有很多种正确说法。只保存一篇标准答案,会把措辞差异误判为错误,也无法评测证据、工具和最终状态。

一条 Eval Case 更适合包含:

json 复制代码
{
  "id": "refund-017",
  "input": "我上个月买的会员可以退款吗?",
  "context": {
    "as_of": "2026-08-21",
    "knowledge_snapshot": "kb-2026-08-21",
    "initial_state": {"refund_created": false}
  },
  "expected": {
    "intent": "refund_policy",
    "evidence": [
      {
        "doc_id": "refund-policy",
        "version": "v7",
        "span_id": "refund-window"
      }
    ],
    "required_claims": [
      "会员退款期限为购买后7天内"
    ],
    "acceptable_paraphrases": [
      "会员购买后7天内可以申请退款"
    ],
    "forbidden_claims": [
      "退款期限为30天",
      "系统已经创建退款"
    ],
    "response_behavior": {
      "should_answer": true,
      "should_abstain": false
    },
    "required_tools": ["search_knowledge"],
    "forbidden_tools": ["create_refund"],
    "expected_end_state": {"refund_created": false},
    "invariants": ["不得修改订单或创建退款记录"]
  },
  "slices": [
    "time_sensitive",
    "missing_order_id",
    "side_effect_prohibited"
  ]
}

这不是要求所有团队照抄同一个 JSON Schema,而是说明以下内容应该分别可判定:

text 复制代码
意图
+ 证据
+ 必须事实
+ 禁止错误
+ 回答行为
+ 工具边界
+ 最终状态
+ 风险切片

Step 5:组件评测和端到端评测一起做

子系统 固定条件 主要观测
意图与路由 输入和 Gold Label Macro-F1、逐类指标、FNR、澄清、校准
Retriever / Reranker 知识库快照和 Gold Evidence Recall@k、MRR、nDCG、权限、时效
Generator Oracle Context 与实际 Context 正确性、Faithfulness、引用、拒答
Tool / Agent 可重置 Sandbox 与初始状态 参数、调用序列、恢复、最终状态、越权
E2E 完整系统版本和环境 任务成功、安全、稳定性、延迟、成功成本

还应主动注入故障:Timeout、Rate Limit、空结果、字段变化、部分失败和服务不可用。只测试所有工具都正常的 Happy Path,无法证明系统具备生产可靠性。

Step 6:固定 Baseline,进行同题配对比较

把当前线上配置固定为 Baseline,包括:

  • 模型和模型版本;
  • Prompt;
  • Retriever、Reranker 和知识库快照;
  • 工具定义;
  • Agent Loop;
  • 推理参数和预算。

Candidate 与 Baseline 使用同一数据、Rubric、Judge 和环境运行。一次实验尽量只改变一个主要变量。

对有随机性的 Agent,同一 Task 应重复多个 Trial,报告:

  • pass@1;
  • 多次运行成功分布;
  • pass@k 或 pass^k;
  • 环境失败与 Agent 失败的区分。

Step 7:报告失败结构,而不只是总体平均分

一份能够支持发布决策的报告至少应包含:

  • Baseline 与 Candidate 的绝对值和差值;
  • 样本数及适当的置信区间;
  • 按意图、语言、用户群、风险、文档类型和长度切片;
  • 最差切片与历史回归案例;
  • 严重错误数量和典型 Bad Case;
  • 多次运行稳定性;
  • P50、P95、P99 延迟;
  • 总成本和 Cost per Successful Task;
  • 已知盲区和未覆盖风险。

不要寻找一个"万能总分"。平均分会掩盖类别不均衡、关键切片回退和不可被交换的安全风险。

Step 8:把指标转成发布门禁

门禁可以分为两类:

Hard Gates:

  • 跨租户数据泄露不得发生;
  • 未授权现实操作不得发生;
  • 严重事实错误不得发生;
  • 关键业务 invariant 不得被破坏。

Quality Gates:

  • 任务成功率达到要求;
  • 关键切片不得相对 Baseline 回退;
  • RAG、意图和工具等组件指标达到各自阈值;
  • 延迟、成本和重试在预算内。

"当前测试集里严重事故为 0"只能说明没有在这批有限样本中观察到事故,不能证明真实风险概率为 0。报告必须同时写明样本量、攻击覆盖和未测场景。

Step 9:从离线门禁进入线上渐进发布

推荐顺序:

text 复制代码
Offline Eval
  → Shadow
  → Canary
  → A/B Testing
  → 分阶段扩大
  → 持续监控
  → Bad Case 回流 Regression Set
  • Shadow:接收真实流量,但不影响用户;
  • Canary:只向少量低风险流量开放;
  • A/B:比较用户结果和真实业务结果;
  • 持续监控:观察重复追问、纠错、重新打开、转人工、安全事件、延迟和成本;
  • 回流:事故和高价值 Bad Case 固化为回归任务。

这才构成真正的 Continuous Evaluation。


八、LLM Judge 应该怎样校准

LLM Judge 适合对相关性、完整性、语义等价、语气和证据支持进行规模化评分,但它不是真值生成器。

常见偏差包括:

  • Position Bias:偏好排在某个位置的答案;
  • Verbosity Bias:偏好更长、更详细的答案;
  • Self-preference:偏好与自身表达风格或模型来源相近的答案;
  • Rubric Ambiguity:评分标准含糊导致不稳定;
  • Judge Drift:Judge 模型或数据分布变化后,评分口径发生漂移。

正式使用前建议:

  1. 让领域专家独立评分一批代表性输出;
  2. 给 Judge 相同的问题、参考证据和 Rubric;
  3. 比较 Judge 与专家的一致率及高风险误判;
  4. 修改 Rubric、示例和输出结构;
  5. 固定并记录 Judge Version;
  6. 上线后持续抽样复核,模型升级后重新校准。

开放式评分尽量设计为:

  • Pairwise Comparison;
  • Classification;
  • 分维度 Pass/Fail;
  • Reference-guided Grading。

相较于"请自由评价这个答案",这些任务的边界更明确,也更容易校准。

进行 A/B 盲评时,评审者应该看到问题、答案、参考证据和 Rubric,但不应知道:

  • 哪个是线上版本;
  • 哪个是候选版本;
  • 使用了哪一家模型;
  • 团队更希望哪个版本获胜。

A/B 顺序还应该随机化,必要时交换顺序重复评分,以检查位置偏差。


九、Capability Eval 与 Regression Eval 要分开维护

这两类评测的目标不同。

类型 核心问题 任务难度 期望通过率
Capability Eval 当前能力边界在哪里 应包含尚不擅长的困难任务 可以较低,并逐步提升
Regression Eval 过去会做的任务有没有退化 稳定能力和历史 Bad Case 应接近 100%

当 Capability Suite 长期接近满分时,它已经失去区分能力。此时应增加更难、更长、更多工具或更贴近新能力边界的任务,并把已经稳定掌握的任务转入 Regression Suite。

评测集不是一次性 Benchmark,而是一项需要长期负责人、版本和维护策略的产品资产。


十、资源有限时,如何用 80/20 方法启动

如果团队目前几乎没有 Eval,可以先建立最小闭环:

  1. 选择 1~3 条最重要的用户旅程;
  2. 从手测、Bug、投诉和支持记录中整理 20~50 条真实任务;
  3. 为每条任务定义初始状态、成功 Outcome、禁止副作用和至少一条 Reference Solution;
  4. 让每个 Trial 从可重置环境开始;
  5. 保存完整 Trace;
  6. 先实现 Schema、工具、权限、状态等确定性 Grader;
  7. 对开放式质量加入分维度 LLM Judge,并用专家样本校准;
  8. 固定 Baseline,每次变更运行同题比较;
  9. 人工阅读失败 Trace,修 Agent,也修不公平的 Task 与 Grader;
  10. 新的生产 Bad Case 持续加入 Regression Set。

80/20 的含义是先用少量高价值任务获得大部分早期反馈,不是只测高频任务,也不是用几十条样本宣称系统已经安全可靠。


十一、最常见的评测误区

误区 1:用公开 Benchmark 代替产品评测

Benchmark 可以做模型初筛,但无法覆盖你的知识库、工具、用户分布、权限和业务状态。

误区 2:Vibe-based Eval

"试了几个问题,感觉还不错"不可重复,既无法区分真实提升与随机波动,也无法发现回归。

误区 3:只看一个总体分数

高频普通问题会掩盖低频高风险问题;大量流畅回答不能抵消一次严重越权。

误区 4:只准备一篇标准答案

开放式任务存在多种正确表达。应该标注必须事实、可接受说法、禁止错误、证据和行为边界。

误区 5:Agent 只评最终文本

Agent 可能声称成功,但工具未执行或数据库状态错误。必须检查 Trace 和 Outcome。

误区 6:把 LLM Judge 当作真值

Judge 会有位置、长度和 Rubric 偏差,必须用人工标签校准并保存版本。

误区 7:直接复制别人给出的阈值

Recall@5 = 0.85 或某个 Judge Score,只能在具体数据、风险和业务目标下解释。不存在通用及格线。

误区 8:只测试 Happy Path

真实生产中一定会遇到空结果、超时、限流、字段变化、多意图、长上下文、权限冲突和恶意输入。

误区 9:所有测试都对开发者可见

持续针对可见回归集优化会产生过拟合。应该保留 Hidden Release Set,并不断吸收新的真实分布。

误区 10:一开始就使用 Multi-agent

Multi-agent 会增加 Handoff、循环、状态、成本和运维复杂度。先用 Eval 证明单 Agent 的瓶颈,再决定是否拆分。


十二、一张可以直接使用的评测报告模板

text 复制代码
1. 本次变更
   - Baseline 版本
   - Candidate 版本
   - 唯一主要变量

2. 数据与协议
   - 数据集版本、样本数和切片
   - 环境与知识库快照
   - Judge / Grader 版本
   - Trial 次数

3. 核心结果
   - Task Success Rate
   - End-state Correctness
   - Hard-gate Violations
   - Cost per Successful Task

4. 组件指标
   - Intent:Macro-F1、逐类 Recall/FNR
   - RAG:Recall@k、MRR、nDCG、Citation
   - Tool:Selection、Arguments、Execution
   - Generation:Correctness、Faithfulness、Completeness

5. 可靠性与工程指标
   - pass@1、pass@k / pass^k
   - P50 / P95 / P99 Latency
   - Token、工具调用和总成本

6. 风险与失败结构
   - 最差切片
   - 严重错误和 Bad Case
   - 与 Baseline 的回归
   - 已知盲区和未测风险

7. 发布结论
   - Hard Gates:Pass / Fail
   - Quality Gates:Pass / Fail
   - Shadow / Canary / Rollback 方案

十三、最终检查清单

上线前可以逐项确认:

  • 被评对象包含模型、Prompt、RAG、工具、记忆、权限和运行配置;
  • 成功标准来自真实用户任务,而不是现成指标;
  • 同时存在组件评测和端到端评测;
  • Agent 评测检查 Trace 与真实 Outcome;
  • 数据集包含典型、边界、无答案、故障和对抗场景;
  • Development、Regression、Hidden、Red-team Set 分开管理;
  • 高风险切片不会被总体平均分掩盖;
  • 确定性条件优先使用代码 Grader;
  • LLM Judge 已用人工样本校准并记录版本;
  • 随机 Agent 对同一任务执行多个独立 Trial;
  • Baseline 与 Candidate 使用同题、同环境、同评分协议;
  • 发布门禁同时包含 Hard Gates 与 Quality Gates;
  • 离线通过后仍采用 Shadow、Canary 或 A/B;
  • 生产 Bad Case 会持续回流回归集。

结语

专业的大模型评测,不是寻找一个万能指标,也不是选择一个"最强 Judge"。它本质上是一套持续回答以下问题的系统:

text 复制代码
用户任务是否完成?
  ↓
失败发生在哪一层?
  ↓
失败是否安全、可恢复?
  ↓
系统是否稳定、经济、可发布?
  ↓
新问题能否回流并防止再次发生?

如果只能记住一句话,可以记住:

从业务成功定义评测目标,从系统不确定性拆分评测点,用代码、模型和人工组合评分,再让生产 Bad Case 持续回流。

当这条闭环真正建立起来,Eval 才不再是一份发布前的成绩单,而会成为大模型产品迭代最重要的工程基础设施之一。


参考资料

  1. OpenAI Docs:Evaluation best practices
  2. Anthropic Engineering:Demystifying evals for AI agents
  3. RAGAS:Automated Evaluation of Retrieval Augmented Generation
  4. Berkeley Function-Calling Leaderboard
  5. τ-bench:A Benchmark for Tool-Agent-User Interaction in Real-World Domains
  6. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena
  7. NIST AI 600-1:Generative AI Profile
  8. OWASP Top 10 for Large Language Model Applications
相关推荐
AI绘画哇哒哒4 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
NeilCarmack4 小时前
Deepseek-harness增加桌面版端序列:第 1 讲 · 命令解析:`pnpm dsh desktop` 的第一步
人工智能·agent·ai agent
你是一个铁憨憨6 小时前
从 GIS 到 Spatial Agent:MCP 如何重新定义 GIS 的 AI 入口
arcgis·ai·agent·mcp·spatial
星野云联AIoT技术洞察6 小时前
Dify 适合什么 AI 应用项目:Workflow、RAG、Agent 与自研系统的边界
agent·workflow·llmops·dify·rag·ai agent·ai应用开发
闲猫10 小时前
LangGraph / Capabilities / Fault tolerance
python·agent·langgraph
ryan_99610 小时前
一次讲清 A2A 协议与 MCP 边界:从 Agent Card 到 Task 生命周期
agent·mcp·a2a·json-rpc·agent通信
安逸sgr11 小时前
AI 应用怎么评测?离线评测、人工评估和线上反馈如何结合?
人工智能·ai·大模型·agent·智能体
demo007x12 小时前
DSH harness 中的上下文管理探秘
程序员·agent·deepseek
MicrosoftReactor14 小时前
技术速递|GitHub Copilot App 入门指南:管理你的工作
ai·github·copilot·agent