跳转到内容

评估:如何判断系统是否真正有效

“模型有能力”、“演示看起来不错”和“用户似乎很满意”是不同的主张。单独来看,任何一个都不足以证明某个特定的 AI 原生(AI-native)系统能在其预期任务上可靠运行。

部署后的行为不只来自一个模型。指令、上下文、检索、工具、权限、控制流程、应用代码与执行环境都会影响结果。因此,评估必须面向整个系统及其预期工作,而不能只看一个模型分数。

评估把预期的系统行为转化为可以检查的证据。它首先为有代表性的工作定义成功、可接受的变化和不可接受的失败,然后从输出、执行过程与最终结果三个层面评估模型及其周边系统。

评估不是一项单独的基准测试,也不只是发布前的一道门槛。它是一个持续的工程反馈过程:

预期结果 → 明确标准 → 代表性任务 → 观察到的行为
↑ ↓
└──── 诊断、修正与新增用例 ────┘

这条回路并不替代产品判断。它让当前判断足够明确,以便测试、质疑与修订。

在选择指标之前,先说明系统应该为谁做什么。

“产出好答案”过于含糊。对比三个更有用的主张:

  • “对于受支持的退货请求,助理能识别适用政策并给出正确的下一步。”
  • “对于一组明确指定的代码仓库,编程智能体能产出通过必要测试、且不修改受保护路径的补丁。”
  • “对于范围内的研究问题,系统能区分有出处的结论与无支撑或相互冲突的证据。”

每个主张都对应不同的任务、证据与后果。评估对象可能是一条回复、一项完成的工作产物、一次工具操作、环境中的实际变化,或后续的业务结果。

因此,评估很接近一份可检验的系统规格。它能及早暴露尚未明确的需求:何谓“受支持”、哪些测试是必需的、哪些来源有效、允许哪些变化,以及系统无法完成任务时应当如何处理。

这些层次回答不同的问题。

层次 问题 能支持什么 单独无法建立什么
公共基准 在标准化流程下,模型或系统如何比较? 能力筛查与广泛比较 我们的上下文、工具、用户与风险边界内的表现
模型或提示评估 模型在已定义的输入–输出任务上如何表现? 针对受限能力的模型与提示选择 检索、工具、权限或副作用的正确性
组件评估 某个检索器、路由器、工具或规则检查能否履行预期职责? 诊断与局部回归检测 端到端任务成功
系统评估 组装后的产品能否在约束内完成代表性工作? 发布证据与架构比较 每一种未来的生产环境条件
生产环境结果评估 真实使用是否产生了预期效果且没有不可接受的伤害? 检验真实环境中的适用性并发现新失效 如果缺少严谨设计,就很难判断具体原因

HELM 说明,即使只评估模型,也需要观察多种场景和指标:不同系统往往各有权衡,并不存在一个模型在所有关注点上全面占优(Bommasani 等, 2023)。对于完整应用,多角度评估更为重要,因为模型只是其中一个依赖项。

使用不同术语,避免让一个百分比掩盖了实际测量的内容。

  • 一个任务是具有已定义输入、相关环境与成功标准的单个测试用例。
  • 一次试验是指在已记录配置下对一个任务进行的一次尝试。
  • 一个评估器是用于判断某次试验某一方面表现的规则、程序、人员或模型。许多工具把它称为 grader
  • 一条**追踪记录(trace)**会记录试验中的关键交互:模型响应、工具调用、返回结果、状态变化与审批。
  • 一个**结果(outcome)**是最终与任务相关的状态或效果。
  • 一个评估套件是为测量已命名的能力、风险与回归而维护的任务集合。

Anthropic 的智能体评估文章使用了类似区分,并强调评估对象是模型与智能体运行框架(harness)共同组成的系统(Anthropic, 2026)。这些定义很有用,但并非通用标准;接入具体工具时,仍应尊重该工具采用的术语。

一个多步骤系统可能在若干层面上成功或失败。

产出的答案或工作成果是否满足要求?

检查可能涵盖正确性、相关性、完整性、溯源、政策、结构与表达。对于已知标识符或分类任务,精确匹配是合适的;对于具有多种有效形式的解释或设计提案,它通常过于狭窄。

系统是否采用了可接受的路径?

重要的过程准则可能包括:许可的数据访问、正确的工具参数、所需的审批、预算限制、来源溯源、不修改受保护资源、以及不产生重复副作用。当多种策略都有效时,不要强求一种唯一的推理轨迹。仅在路径本身承载风险、义务或诊断价值时评估过程。

预期的改变是否真的发生了?

智能体可能会说“预订已完成”,但实际并没有生成预订记录。补丁可能读起来不错,但测试没有通过。客服回复可能内容准确,但客户的问题仍未解决。检查结果需要查看环境中的真实状态或后续信号,而不能只相信系统对自身是否成功的表述。

这些层面可能出现矛盾。通过未授权数据访问得到的正确结果并不可接受。遵循合规流程却得到错误结果也不算成功。一个表达流畅的输出,如果执行过程和最终结果都没有得到验证,最多只能证明它在表达上看起来不错。

一个评估套件是对预期工作的建模。其效用取决于它包含与排除了什么。

从四类开始:

  1. 典型案例:系统被明确设计用来支持的高频工作。
  2. 边界案例:罕见但合理的输入、含糊的请求、缺失数据、非常规格式、长上下文与工具错误。
  3. 对抗案例:试图绕过政策、重定向工具、暴露数据或利用信任边界的尝试。
  4. 后果严重的案例:一旦出现看似合理的错误,就可能带来高成本、难以逆转的影响,或法律与伦理问题。

对重要的数据子集分别统计,而不是只看总体平均值,例如语言、用户群、任务类型、数据来源、工具路径、后果等级与环境条件。很高的总分也可能掩盖系统在规模较小但非常重要的群体中的失败。

任务来源可以包括产品需求、领域专家提供的用例、历史事件、在符合法律与安全要求的前提下保留的生产记录、用户更正,以及有意构造的压力测试。合成用例可以扩大覆盖范围,但不能假定它们能够还原真实使用情况。

把用于日常迭代的开发集,与用于判断系统能否适应未见案例的留出测试集分开。围绕固定套件反复优化,会逐渐削弱它检验新行为的能力。可以用新发现的案例更新套件,同时保留一组稳定的回归测试用例。

没有任何一种评估器适合所有标准。

评估器 适用场景 重要局限
确定性规则或数据结构 格式、数值范围、授权、精确字段、不变量 无法判断编码规则之外的语义质量
可执行检查 代码、查询、模拟、环境状态、外部副作用 测试环境可能遗漏真实条件,或仅编码了不完整的需求
参考对比 分类、抽取、有已知答案的受限问题 参考集可能不完整,且可能惩罚有效的替代答案
人工评审 细微差别、领域正确性、后果、演变中的要求 成本高、速度慢、不一致,且受偏见或疲劳影响
基于模型的评估 可大规模运行的、按评分标准进行的比较或分类 继承模型偏差、可能被操纵,而且不能充当事实依据
用户或业务结果 真实有用性与外部效应 往往延迟、受混杂因素影响、稀疏,且受选择使用者所影响

当一个主张包含多个方面时,可以组合使用不同评估器。例如,研究型回答可能需要确定性的引文格式检查、来源核验、针对综合质量的领域评分标准,以及判断系统是否在证据不足时正确拒绝作答的单独测试。

OpenAI 的评估 API 文档建议进行任务特定的评估、使用具代表性的生产与专家数据、持续评估,并用人工反馈对自动评分进行校准。它还指出了模型裁判的“位置偏置”和“冗长偏置”(OpenAI, “Evaluation best practices”)。由于这是 OpenAI 产品文档中的建议,而非独立标准,请在本地任务上验证这些建议及任何评估器。

基于模型的评估器能以可承受的成本开展大规模语义评估,但其得分是由另一个可变模型生成的测量值。在将其用于发布决策之前:

  • 编写具体评分细则,并附带对重要区分的示例;
  • 建立一个经人工审阅的校准集;
  • 衡量一致性并检查分歧,而非只看平均分;
  • 测试对顺序、长度、风格、身份与提示注入(prompt injection)的敏感性;
  • 当更契合问题时,采用盲评或成对比较;
  • 对评估器的模型、提示、细则与参考材料进行版本管理;以及
  • 在评估器不确定或后果较高时,保留人工复审通道。

当任务分布、系统输出风格或评估器模型发生变化后,原先在某个数据集上得到的高一致性不一定还能保持。评估工具一旦变化,就需要重新校准。

可变行为需要多次试验,而不是个别案例

Section titled “可变行为需要多次试验,而不是个别案例”

一次任务运行只是一个样本,不能代表系统的可靠性。当行为可能变化时,应运行足够多次试验来回答实际产品问题,并记录模型、提示、上下文、工具、规则与环境的版本。

前一章关于不确定性的内容解释了 pass@kpass^k,以及为何候选生成不同于重复的有副作用执行。此处的评估原则更简单:

  • 当重复使用或抽样是产品的一部分时,进行多次试验;
  • 按与该使用方式相匹配的方式聚合结果;
  • 将运行间波动与配置或环境的有意更改区分开来;以及
  • 报告各类成功与失败的次数和失效模式,而不只是一个好看的平均数。

十个抽样草稿配合一个可靠的验证器可以构成有效的设计。若任一尝试都可能“下单生效”,那么十次购买尝试并不是一种可靠性方法。评估配置必须能代表实际的控制流。

离线任务必然不完整。生产环境会带来新用户、新输入、不断变化的数据、工具中断、策略变化,以及评估套件未预料到的行为。

使用生产证据来发现——而非自动定义——新的评估用例:

  • 明确的用户更正与申诉;
  • 失败或被放弃的任务;
  • 人工接管、改判与升级处理;
  • 意外的工具序列或重复重试;
  • 规则拦截与安全事件;
  • 结果反转或后续对账失败;以及
  • 输入、来源、成本或延迟的分布变化。

生产遥测必须遵循隐私、同意、访问与保留要求。追踪记录具有诊断价值,并不意味着可以无限期存储每条提示、每份文档或模型的内部推理内容。

早期生产机器学习研究提出了一个更普遍的观点:模型质量存在于由数据、代码、基础设施与监控共同构成的系统之中。因此,ML Test Score 不只关注离线模型指标,也评估系统的上线准备程度(Breck 等, 2017)。生成式系统同样需要这种系统视角,并将其扩展到开放式输出与多步操作。

选择 益处 成本或风险
范围明确且可执行的标准 快速且可重复的回归检查 可能优化容易测量的部分,而不是最重要的部分
综合性的人工评分标准 捕捉细微差别与不断变化的判断 成本高、不一致,而且难以持续运行
大型套件 更广覆盖与更好地发现稀有案例 维护成本、迭代更慢,且若用例薄弱则更易产生虚假信心
稳定套件 便于比较不同时期的结果 可能被过度针对,并逐渐偏离生产环境
频繁更新的套件 更好地覆盖新出现的失效 更难进行长期比较,而且标注可能受到污染
过程追踪评估 发现不安全路径并支持诊断 可能拒绝有效的替代路径,且提升数据敏感性
结果评估 衡量真正重要的效果 结果可能延迟、噪声大,或受系统之外因素影响

目标不是让评估用例越多越好,而是获得足以负责任地做出下一项决策的证据。

少量令人印象深刻的演示取代了明确标准与有代表性的用例。系统究竟改进还是退步,只能依靠主观争论。

一个公共模型分数被当作应用有效的证明,尽管其上下文、工具、策略与用户从未被测试。

正确性、安全性、成本、延迟、用户投入与恢复能力被平均成一个不再回答清晰问题的数字。

一个参考响应被当作开放式任务的唯一可接受答案。有效的多样性被惩罚,而用词相似但无支撑的响应却可能通过。

同一家族的模型在类似证据缺失下既产出又裁判答案,于是“吻合”被误当作独立验证。

套件奖励一种预期的工具序列,即使另一条安全路径也能达成要求的结果。系统学会“像测试一样”,而非解决任务本身。

在静态套件上的分数提升,但生产失败在变化。没有机制把事件、纠正或分布漂移纳入评估。

系统存储了大量追踪记录,但没有用于解读它们的标准。数据体量增长,却无法产出发布决策或工程启示。

在扩大模型的自主决策空间或系统可影响的外部范围之前,先写一份最小评估简报:

能力及目标用户:
任务结果:
支持与不支持的情况:
允许的变化:
不可接受的输出、过程与结果:
典型、边界、对抗和后果严重的任务:
每次试验记录的配置:
试验次数及汇总规则:
确定性评估器:
人工评估人员与评分标准:
模型评估器及其校准证据:
结果证据:
需要单独观察的重要类别:
评估支持的发布或升级处理决策:
可以补充新用例的生产信号:

如果团队暂时无法完成这份记录,仍然可以开展实验;但还不能据此断言系统能够可靠运行。

  • 受评估的主张是否在任务、用户、条件与后果上具有明确性?
  • 我们是否区分了基准、模型、组件、系统与生产结果层面的证据?
  • 标准是否在需要的地方同时覆盖输出、过程与结果?
  • 套件是否包含典型、边界、对抗与后果严重的用例?
  • 是否分别呈现了重要用户群、语言、任务、工具与风险类别的结果,而不是只给出总体结果?
  • 每个评估器是否与其所评分的主张相匹配?
  • 人工评分细则是否明确,且是否审视了评审者分歧?
  • 模型评估器是否在人工审阅用例上完成了校准,并针对已知偏差进行了测试?
  • 多次试验与汇总规则是否与实际产品行为保持一致?
  • 是否记录了模型、提示、上下文、检索、工具、策略与环境的版本?
  • 留出证据是否受到持续优化的保护?
  • 生产中的失败、更正与分布漂移能否纳入受治理的评估用例?
  • 评估结果是否用于支持一项明确的决策,而不只是生成一个仪表盘?