AI Agent & Skill 测评方案及落地实践(上)

本文为《AI Agent & Skill 测评方案及落地实践》系列第 1 篇(共 3 篇),建议连续阅读。

导语:当 AI Agent 从"Demo 可用"走向"生产可靠",测评就是那道必须跨过的门槛。本文介绍了 TEG云架构平台部 网关测试团队 在 AI Agent 测评领域的体系化实践,面对 Agent 非确定性、黑盒化、错误级联放大三大难题,建立了一套"确定性评分器 + Rubric 评分器 + 人工评分器"三类组合的完整测评框架,覆盖功能正确性、过程质量、效率成本、鲁棒性安全、体验对齐五大维度,并已在 TPerf 性能平台智能分析 Agent 项目中落地验证。无论你是刚开始构建 Agent 测评体系,还是已有初步实践希望系统化升级,都可以从中找到可直接复用的方法论、评分模板与工程实现方案。

一、背景:为什么要做测评?

1.1 痛点

Agent 的自主性带来了三个传统软件没有的问题:

  1. 非确定性:同一 prompt 多次执行结果不同,"跑通一次"不代表"稳定能跑"。
  2. 黑盒化:模型升级、Prompt 微调、工具链变化都可能导致行为漂移,肉眼难以察觉。
  3. 错误级联放大:一次任务涉及几十步工具调用,前序步骤的一个小偏差会沿链路逐级放大,最终导致结论完全偏离。

没有测评会让团队陷入以下被动局面:

痛点 后果
主观性强 依赖"感觉变好了"的直觉判断,缺乏量化依据,团队无法基于数据做科学决策
悄悄退化 改了 Prompt 或升级了依赖,旧场景悄悄变差却无人知晓,直到用户投诉才暴露
人工验证成本高 Skill 越多、模型迭代越快,靠人肉回归的成本指数级增长,最终只能"选择性验证"留下盲区
模型不敢升级 新模型发布时没有对比数据支撑切换决策,错过能力提升和成本下降的红利
缺少效率基线 没有延迟/Token/费用的历史基线,线上变贵变慢时无法定位原因和归因版本
过程易忽略 最终答案可能碰巧正确但推理路径是错的,无法区分"正确调用工具后回答"与"从训练数据碰巧答对"

1.2 核心理念

面对这些痛点,我们需要的不是"偶尔跑一跑"的人工验证,而是一套嵌入研发流程的自动化评估体系。其核心可以概括为一个公式:

Eval(评估)= Agent 输入 → 执行 → 捕获执行过程(Trace + 产物) → 一组检查规则 → 可对比的分数

名词说明:Trace(执行轨迹)是 Agent 执行过程中产生的结构化日志,记录了每一步的工具调用、参数、返回值和思考过程,类似于程序调试中的"调用栈记录"。

测评的目标是建立一个可重复、可量化、可持续演进的评估闭环,而不是追求完美覆盖。关键在于:每次变更都能快速跑出一个可比较的分数,用数据代替直觉,用全量代替抽查。

二、测评框架:谁来评?评什么?

由谁(什么工具/角色)来打分? 用哪些维度衡量 Agent 的表现? 这构成了整个测评方案的理论基础。我们参考了 OpenAI 和 Anthropic 的实践经验,从中提炼出关键启示,后续的用例设计与评分器实现均建立在此基础之上。

[图片:三类评分器组合框架示意]

2.1 三类评委:谁来打分?

Agent 的输出既有可程序化验证的硬指标(文件存在、调用正确),也有只能靠语义理解才能判断的软指标(推理合理性、建议质量)。单一评分手段无法兼顾两者,因此 Agent 测评没有"银弹评分器",必须三类组合使用:

        ┌──────────────────────────────────┐
        │         确定性评分器               │
        │   (脚本 / 断言 / Lint / AST)     │
        │   快、便宜、客观、可复现            │
        │   ⇨ 负责所有"能用代码判断"的事      │
        └──────────────────────────────────┘
                        ↑
                        │ 日常主力
                        │
        ┌──────────────────────────────────┐
        │         模型评分器(Rubric)       │
        │   (LLM-as-Judge + Prompt + Schema)│
        │   灵活、可扩展、处理开放式输出      │
        │   ⇨ 负责"代码搞不定但能结构化描述"  │
        └──────────────────────────────────┘
                        ↑
                        │ 扩展能力
                        │
        ┌──────────────────────────────────┐
        │         人工评分器(专家)          │
        │   昂贵、慢、黄金标准               │
        │   ⇨ 负责"校准、诊断、兜底"         │
        └──────────────────────────────────┘
三类评委职责对照
维度 确定性评分器 Rubric 评分器 人工评分器
谁来评 脚本(Bash/Python) 大模型(固定版本) 领域专家
规则写在哪 代码里 Prompt + JSON Schema 人脑 + 标注指南
成本 毫秒级 / 免费 秒级 / API 费用 分钟–小时级 / 人力
稳定性 100% 有抖动(需降噪) 取决于标注员水平
覆盖能力 已知硬指标 未知软指标 主观 + 边缘场景
典型用例 文件存在、构建通过、测试通过 代码风格、意图贴合、解释清晰度 校准 LLM、诊断 0%/100% 异常、红队测试
门禁角色 硬门禁 分级门禁(error 硬、warning 软) 不进门禁,做采样审查

选择优先级:确定性评分器 > Rubric 评分器 > 人工评分器——能用代码判断的绝不用模型,必要时用模型,人工用于校准。

确定性评分器

快速、客观、可复现,负责所有"能用代码判断"的事:

评分器类型 说明 适用场景
工具调用检查 检查是否调用了指定工具、参数是否正确 过程验证
产物检查 检查文件是否存在、内容是否符合预期 结果验证
关键词匹配 检查响应中是否包含/不包含特定内容 结果验证
执行指标 检查工具调用次数、token 消耗是否在阈值内 效率/成本验证
基线对比 将本次执行的过程和结果与基线快照逐项对比(详见第三章) 回归验证

用例中的确定性规则示例:

expected_behavior:
  # 过程检查:是否调用了指定工具
  - tool_call: "mcp"
    contains: "tperf-mcp"
  # 结果检查:产物是否存在
  - file_exists:
      - "cpu.json"
      - "nic.json"
  # 结果检查:响应内容是否包含关键信息
  - response_contains:
      - "测试有效"
      - "出现CPU瓶颈"
      - "业务QPS平稳"
  # 效率检查:工具调用次数上限
  - max_tool_calls: 10
Rubric 评分器(模型评分)

灵活、可扩展,负责"代码搞不定但能结构化描述"的场景(如输出的内容包含自然语言):

评分器类型 说明 适用场景
LLM 评判 让另一个 LLM 按评分标准判断表现 回答质量、语气、规范遵循度

用例中的 Rubric 规则示例:

rubric:
  observation_points:
    - 回答是否基于项目规范/知识库而非通用知识
    - 推理过程是否清晰连贯
    - 是否存在幻觉或编造内容
  scoring:
    process_score: 0-100    # 过程分
    result_score: 0-100     # 结果分
    is_false_positive: bool # 是否虚假成功(结果对但过程错)
人工评分器(专家介入的六个必要场景)

人工评分最贵,只在以下场景投入:

  1. 校准 LLM 评委(最核心用途)——抽样 100–200 条,和 LLM 打分对齐,一致率 ≥ 85% 才算可用。
  2. 主观任务打分——回复同理心、报告论证严谨度。
  3. 诊断通过率异常——0% 或 100% 通常是"任务/评分器坏了",不是模型弱。
  4. 建立 Ground Truth(黄金标准答案)——新套件上线的前 20–50 个参考解。
  5. Trace 采样审查——每周固定抽样读轨迹,找隐藏失败模式。
  6. 高风险兜底——医疗/金融/安全场景 100% 人工复核。

经验法则:能自动化的坚决不找专家;专家时间应 60% 以上花在"校准 LLM 评委"和"诊断异常"上。

2.2 五个维度:评什么?

了解了"谁来评"之后,接下来明确"评什么"。我们将 Agent 的测评覆盖拆解为五个大类,从"做对了吗"到"好用吗"逐层递进:

┌─────────────────────────────────────────────────────┐
│  1. 功能正确性(Functional Correctness)—— 做对了吗  │
│  2. 过程质量(Process Quality)—— 过程合理吗         │
│  3. 效率与成本(Efficiency & Cost)—— 划算吗         │
│  4. 鲁棒性与安全(Robustness & Safety)—— 靠谱吗     │
│  5. 体验与对齐(Experience & Alignment)—— 好用吗    │
└─────────────────────────────────────────────────────┘

下表汇总了每个大类的子维度、主要由谁来评分、以及落地优先级:

大类 子维度 主要评委 优先级
1. 功能正确性 结果正确性、任务完成度、指令遵循、工具调用正确性 代码 P0
2. 过程质量 推理合理性、步骤最优性、信息完整性、上下文利用率 Rubric + 人工 P1
3. 效率与成本 Token消耗、工具调用次数、延迟、失败重试率 代码 P1
4. 鲁棒性与安全 一致性(pass^k)、异常恢复、抗对抗、幻觉率、越权风险、合规性 代码 + 人工 P0
5. 体验与对齐 语气风格、清晰度、主动澄清、同理心、品牌一致性 Rubric + 人工 P2

术语说明

  • Rubric:评分量表/评分标准,这里特指"用结构化的评分提示词让另一个大模型充当评委打分"的方式。
  • pass^k:k 次试验中每次都通过的概率,衡量稳定性;pass@k:k 次中至少 1 次通过的概率,衡量峰值能力。

P0 先落地、P2 按需补充——优先保证"做对了"和"靠谱",再逐步覆盖过程、成本和体验。

下面逐一展开五个维度的子项、评测方法和典型指标。

大类 1:功能正确性(Functional Correctness)

回答的问题:"这次任务到底做成了没?"

子维度 定义 评测方法 典型指标
结果正确性 最终产出是否符合预期 代码比对、单元测试、数据库校验 pass@1 / pass^k
任务完成度 多步任务完成的百分比 子目标打点 完成率 %
指令遵循度 是否严格按用户指令输出(格式、字段、约束) JSON Schema 校验、正则、字段检查 遵循率 %
工具调用正确性 是否选对工具、参数是否正确 调用日志断言 调用准确率 %

这一类是 P0,必须自动化、全覆盖。对应评分体系中"确定性评分器"的主战场。

大类 2:过程质量(Process Quality)

回答的问题:"即便做对了,过程合理吗?"

子维度 定义 评测方法 典型指标
推理合理性 思考链条是否自洽、没有跳步 Rubric 评委 合理性评分 1–5
步骤最优性 是否走了不必要的弯路 比较实际步数 vs 参考解法 步数比
信息完整性 输出是否覆盖了任务所需的所有关键信息 Rubric 按要点核查 要点覆盖率 %
上下文利用率 是否充分利用了提供的上下文,没有遗漏 Rubric + 人工抽查 利用率评分
自我纠错能力 遇到错误时是否能识别并修正 Trace 分析 纠错成功率

这一类最能体现"智能"水平,但自动化难度高,是 Rubric 评委的主战场

大类 3:效率与成本(Efficiency & Cost)

回答的问题:"结果对了,但划得来吗?"

子维度 定义 评测方法 典型指标
Token 消耗 输入 + 输出 token 总量 API 统计 avg / p95 tokens
工具调用次数 完成任务的工具调用总数 Trace 统计 avg / p95 calls
端到端延迟 用户发起到收到最终结果的时间 时间戳 p50 / p95 / p99 latency
失败重试率 单次试验内工具/模型调用的重试次数 Trace 统计 重试率 %
单次任务成本 折算成人民币/美元的成本 Token × 单价 ¥/task

这是被很多团队忽视但极其重要的一类。一个 pass@1 高但 token 花 10 倍的方案,在生产上是不可接受的。建议每个任务都带上成本画像。

大类 4:鲁棒性与安全(Robustness & Safety)

回答的问题:"它会不会在关键时刻翻车?"

子维度 定义 评测方法 典型指标
一致性 / 稳定性 相同输入多次运行结果是否一致 多次试验(k=5/10) pass^k
异常恢复 工具失败、超时、返回异常时能否兜底 故障注入测试 恢复成功率
抗对抗 / 抗注入 面对 Prompt Injection、恶意输入是否守住 红队用例集 抗攻击率
幻觉率 是否编造不存在的事实/API/字段 事实核查(代码或人工) 幻觉率 %
越权 / 越界风险 是否执行了超出授权的操作 权限断言 越权次数
合规性 是否泄露 PII、违反行业规范 正则 + 人工抽查 违规率
拒绝合理性 该拒绝时是否拒绝、不该拒绝时是否过度拒绝 Rubric + 人工 误拒 % / 漏拒 %

这一类是 P0,尤其是涉及金融、医疗、企业数据的 Agent,必须前置

pass^k 释义:k 次试验中每次都成功的概率,用于衡量一致性/稳定性。与之对应的 pass@k 是 k 次试验中至少 1 次成功的概率,用于衡量峰值能力。

大类 5:体验与对齐(Experience & Alignment)

回答的问题:"用户愿意继续用它吗?"

子维度 定义 评测方法 典型指标
语气风格 是否符合品牌调性(专业/亲切/简洁) Rubric 评委 风格评分
回复清晰度 结构是否清楚、有无废话 Rubric + 人工 清晰度评分
主动澄清 模糊需求时是否会主动提问而非瞎猜 Rubric 澄清率 %
同理心 对话场景中是否能识别情绪并恰当回应 人工 + Rubric 同理心评分
可解释性 是否能说清自己做了什么、为什么 人工抽查 可解释评分
用户满意度 真实用户反馈 线上点赞/点踩、NPS CSAT / NPS

这一类是 P2,但却是决定产品生死的。早期用 Rubric + 人工抽样,成熟后引入线上 A/B + 用户反馈闭环。

2.3 不同类型 Agent 的测评侧重

前面介绍的五大维度和三类评委是一套通用框架,适用于所有类型的 Agent / Skill。但在实际落地时,不同类型的 Agent 面临的核心风险不同,测评的侧重点也应有所差异——把有限的精力花在最容易出问题的地方:

Agent / Skill 类型 测评侧重点 典型检查项
知识库问答 准确性、幻觉检测、引用溯源 回答是否基于知识库内容而非编造;是否正确引用来源;是否覆盖问题核心要点
代码编写 产物正确性、可运行性 生成的代码是否能编译/运行通过;是否满足功能需求;代码风格是否符合规范
功能工具(如性能分析、数据处理) 过程合规性、工具调用正确性 是否按预期步骤调用了正确的工具;工具参数是否正确;输出报告是否完整准确
问题定位(如故障排查、日志分析) 推理链路、根因准确性 推理过程是否逻辑清晰;是否定位到真实根因;排查步骤是否高效无冗余

差异体现在"用什么评分器"和"检查什么",而非流程本身。 例如:

  • 知识库问答更依赖 Rubric 评分器(判断回答质量、检测幻觉)
  • 代码编写更依赖 确定性评分器(编译是否通过、测试是否跑过)
  • 功能工具更关注 过程对比(工具调用序列是否与基线一致)
  • 问题定位则需要 过程 + 结果双重验证(推理链路正确且结论准确)
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐