能力契约与选择对象

本节目标

把“选一个好模型”改写为可验证的任务、系统边界和候选变更单元。

核心概念

能力契约不是厂商功能清单,而是模型在指定输入分布、调用配置和 runtime 中必须满足的可观察行为。最小契约包含:

维度必须写清的问题可验证证据
task用户真正要完成什么?失败代价是什么?case、期望 outcome、严重度
input语言、长度、模态、脏值与对抗输入是什么?冻结样本与切片
output自由文本、schema、引用还是 tool proposal?validator、rubric、环境终态
systemprompt、RAG、工具、预算和重试怎样固定?harness 版本与配置 hash
operations延迟、吞吐、成本、区域、保留和 SLA 是什么?telemetry 与合同证据
change unit比较模型权重、模型 ID,还是完整系统版本?可回滚 release manifest

模型、prompt、工具描述、采样参数和检索器会互相作用。若一次同时改变它们,就无法把差异归因给模型。

选择对象必须能重新辨识

请求中的模型别名不一定是固定快照:有的供应商把 latest 指向可替换的当前版本,有的把版本 ID 固定到某个模型快照;即使权重不变,路由、安全层或其他服务基础设施也可能改变可观察行为。因此不要只在报告里写“用了某某模型”。每个 trial 至少记录请求的模型标识、响应中实际返回的模型/版本(接口提供时)、端点/区域、API/adapter 版本、日期和采样配置。模型生命周期、能力声明或运行时控制面变更后,应重新运行契约测试,而不是沿用旧结论。

为什么需要

公开 benchmark 只能覆盖有限场景。HELM 的方法价值在于显式列出场景、指标和缺口,而不是提供一个可直接采购的总榜。你的任务可能包含内部术语、特殊权限和真实副作用,公开均值无法代替这些证据。

同时要先建立非 LLM baseline:规则、搜索、较小模型或固定 workflow。若它已经达到质量与风险要求,增加更强模型未必有净收益。

怎样实现

先写一页 decision brief:

decision: 为工单分流与受限工具建议选择生成模型  # 用一句话限定这次决策服务的业务场景。
unit: pinned-model-id + prompt-v7 + tool-schema-v3  # 把模型、提示和工具契约一起固定,避免只比较模型名。
must:  # 列出任何一项不满足就不能入围的硬约束。
  - 中文工单结构化输出通过 JSON Schema  # 先要求输出形状可由程序验证。
  - 只能从 allowlist 提议工具  # 防止模型临时发明或越权选择工具。
  - 数据不用于训练且保留不超过约定天数  # 将数据处理承诺写成可核验条件。
measure:  # 列出比较候选时要收集的原始指标。
  - 严重工单召回率  # 关注高影响工单不能被漏掉。
  - schema 通过率与 tool 参数正确率  # 分开检查格式正确与动作参数正确。
  - p50/p95 延迟、单 trial 成本  # 同时记录典型、尾部延迟和单次成本。
gate:  # 给关键指标设置是否允许继续的最低门槛。
  - task_success >= 0.75  # 任务成功率低于此值时不能进入下一轮选择。
  - structured_output_valid >= 0.95  # 仅当结构化输出是 required capability 时才启用此门槛。
  - tool_success >= 0.90  # 仅当工具调用是 required capability 时才启用此门槛。
baseline: 规则分类器 + 人工处理  # 用较简单且可回退的现有方案作为比较基线。
rollback: 回到上一 release manifest  # 明确失败后恢复到哪份已验证发布记录。

候选发现可以参考模型卡、官方目录和公开 benchmark;入围则必须通过你自己的契约与硬门槛。capabilities: [structured-output] 只能说明候选值得探测,不能代替实测 schema 通过率。

常见失败

  • 用“通用智能更强”代替任务和失败定义。
  • 把模型名当选择对象,却在候选间使用不同 prompt、重试或工具。
  • 用 latest 或预览别名完成评测,却把它当作可长期复现的固定版本。
  • 只与其他 LLM 比,不保留规则/人工 baseline。
  • 把 demo 成功当能力证明,没有冻结 case 和失败切片。
  • 未固定模型 ID、日期和 serving 配置,结果无法复现。

怎样验证

让未参与设计的人仅凭 brief 回答:什么候选会被淘汰、什么指标决定上线、怎样复跑、怎样回滚。若答案依赖口头补充,契约仍不完整。

实践任务

选一个真实 Agent 步骤,写出 10 个典型 case、5 个困难 case、3 个禁止动作和一个非 LLM baseline。为每个 case 指定 outcome 证据,不允许使用“感觉更好”。

参考资料