从声明到 Benchmark 契约

本节目标

从一个实际决策反推 Benchmark 的声明、被测对象、非目标、成功标准和版本边界,避免先收题再猜分数代表什么。

直觉解释

温度计只有在量程、校准和使用条件明确时才有意义。Benchmark 也一样:相同的“85 分”可能来自不同用户、不同提示、不同工具权限和不同评分器,无法直接比较。契约就是提前冻结测量条件,并说明证据能支持到哪里。

核心概念

  • Benchmark 声明:准备支持的、可证伪的比较结论。
  • system under test(SUT):实际被测边界;可能是裸模型,也可能是提示、检索、工具和重试组成的应用。
  • scenario:任务、用户、环境和适配方法的组合。
  • protocol:如何运行,包括输入、提示、预算、随机性、超时、重复次数和失败处理。
  • non-goal:本基准明确不测或不能推断的能力。
  • validity:当前设计是否真的支持预定解释,而不只是能算出数字。

先分清三类工程对象

对象主要问题数据时间尺度典型输出
评测体系某个产品改动是否达到开发、回归或发布目标?随产品快速迭代PASS/REVIEW/BLOCK与失败诊断
Benchmark设计哪个系统在冻结的长期协议下更好,结果能否跨团队复现?稳定版本与明确换版可比结果、报告卡和排行榜
运行监控线上真实流量现在是否健康、漂移或发生事故?连续流式SLO、告警、事件与回灌样本

同一case可以先用于产品回归,成熟后进入Benchmark;线上失败也可以脱敏后成为新case。但运行监控的自然流量、延迟标签和动态环境不能直接冒充冻结的跨系统比较。

从声明拆到能力与测量对象

“客服能力”太宽。先拆成可观察的能力,例如意图识别、信息检索、工具选择、参数正确、最终状态、安全拒绝和错误恢复,再为每项指定测量对象:输出文本、工具轨迹、数据库状态或资源记录。能力拆解不是为了凑更多分数,而是为了定位证据:若最终状态正确但发生越权读取,任务质量和安全必须分开评分。

分步骤方法

  1. 写出要做的决策,例如“为中文客服只读查询选择候选 Agent”。
  2. 指定目标用户、时间范围、语言、工具权限和部署环境。
  3. 明确比较对象及 SUT 边界:同一模型不同提示,还是不同完整系统。
  4. 写关键收益、不可接受风险和运行约束。
  5. 说明证据来源:真实留出、专家案例、合成压力集或在线回放。
  6. 写至少三个非目标,例如不评估退款写操作、不评估英文或不推断生产满意度。
  7. 把能力映射到可验证的输出、轨迹或环境状态,并写Unknown/失败处理。
  8. 为契约分配版本;任何会改变分数解释的修改都要升版本。

一个可操作的声明:

在 2026-Q3 中文订单查询场景、相同只读工具和调用预算下,比较候选与冻结基线的任务成功、越权风险、P95 时延和调用次数;证据来自按意图与输入状态分层的冻结离线集。该结果不代表退款写操作、其他语言或真实线上转化。

示例

下面的 Benchmark card 骨架把“题库”提升为契约:

id: order-agent-readonly # 供结果、报告和版本迁移稳定引用的 Benchmark 身份。
version: 1.0.0 # 改变任务含义、协议或评分时必须递增该版本。
claim: 比较中文只读订单查询的任务成功与风险 # 明确可由本 Benchmark 支持的唯一结论。
system_boundary: prompt + model + tools + retry_policy # 固定被测系统,避免把模型与完整应用混为一谈。
population: 2026-Q3 中文客服查询 # 描述证据覆盖的人群、时间与语言边界。
primary_metric: task_success # 指定排行榜的主质量指标,其他指标不能被它掩盖。
critical_gates:
  - no_write_action # 写操作属于不可由平均分抵消的安全硬门。
resource_metrics:
  - latency_ms # 记录端到端时延资源代价。
  - tool_calls # 记录工具使用规模,发现不必要的执行路径。
non_goals:
  - 退款写操作 # 明确不把只读证据外推到有副作用任务。
  - 英文任务 # 明确语言覆盖边界。
  - 线上满意度推断 # 离线测试不能直接证明线上业务效果。

常见错误与排查

  • 名字写“通用智能 Benchmark”:列不出目标用户和任务空间;缩小声明。
  • 模型与应用混测:一个系统带 RAG,另一个没有,却声称比较模型知识;重新定义 SUT。
  • 先看结果再改权重:等同于对测试集调参;冻结指标后再运行候选。
  • 单一总分承载一切:把关键风险设为 gate,其他指标独立报告。
  • 版本只改数据文件名:协议或 grader 改变也会改变含义,必须进入版本记录。

练习

  1. 把“比较两个 RAG 谁更好”改写为包含人群、语料时间、引用要求和非目标的声明。
  2. 分别为“裸模型”和“完整客服 Agent”画出 SUT 边界。
  3. 为一个 OCR Benchmark 写三个不能从分数推断的结论。

自测

  1. 为什么同一数据上的两个分数也可能不可比?因为提示、预算、工具、解码或 grader 可能不同。
  2. non-goal 是否只是免责声明?不是,它防止使用者把有限证据外推到未覆盖情形。
  3. 修正文案算不算升版本?若不改变输入、输出或评分含义,可只修补丁;若会改变解释,则需要显式版本变化。

小结与下一步

Benchmark 从声明和契约开始,题目与指标都要服务于预定决策。下一步用 任务空间、代表性与分层 把目标场景展开为可审计覆盖。

参考资料