持续评测、供应商漂移与治理
本节目标
学会把生产 Trace、用户反馈和供应商状态转成可审计的评测证据;识别供应商/API/行为/价格漂移;为继续、调查、暂停、降级、回滚和人工复核设置清晰边界。
为什么离线评测通过还不够
离线回归集只能代表已经收集和标注的分布。上线后可能出现新任务、节日峰值、标签延迟、工具状态变化、供应商容量问题和从未见过的攻击方式。因此发布不是评测的终点,而是一个新证据窗口的开始。
持续评测(continuous evaluation) 不是“每条线上请求都让另一个模型打分”。它是一套反复运行的闭环:
生产请求与 Trace
→ 按风险和任务分层采样
→ 最小化、脱敏、授权访问
→ 确定性检查 / 人工标注 / 经校准的自动评分
→ 与固定 release、rubric、grader 和策略比较
→ 继续、调查、暂停、降级、回滚或人工复核
→ 经审查的失败样本进入下一版回归集这条链中任何组件变化,都可能改变分数含义。评分器升级不能与应用升级混在一次比较中,否则无法知道“分数变了”是应用行为还是尺子变化。
五类常见漂移
| 漂移 | 例子 | 先看什么证据 | 可能动作 |
|---|---|---|---|
| API/契约漂移 | 字段、错误码、SDK 或弃用时间线变化 | 合同测试、SDK 锁文件、官方变更记录 | 阻断发布、适配后重测 |
| 服务漂移 | 错误率、限流、首 token 或尾延迟变化 | 网关 Metrics、供应商请求 ID、跨 release 对照 | 暂停扩大、切预验降级路径 |
| 行为漂移 | 模型名未变但任务/工具选择分布变化 | 固定回归集、Trace 轨迹、人工复核 | 调查、回滚或重新批准 |
| 经济漂移 | 价格、缓存计费或重试放大改变 | 价格策略版本、token/缓存/重试台账 | 暂停、重新做成本门 |
| 数据与控制面漂移 | 保留能力、数据区域或策略配置变化 | 当前合同、控制面导出、审批记录 | 停止敏感流量、治理复核 |
“漂移分数”只是线索,不能自己解释根因。比如输出长度变化可能来自 Prompt、用户分布、模型或工具返回;必须与 manifest 差异、时间线和对照组一起看。
线上信号如何进入决策
一个最小观察窗口应绑定:release_id、发布清单完整SHA-256、candidate gate完整SHA-256、观察窗口、样本量、任务/风险切片、Trace 完整性、数据处理策略、质量/安全结果、延迟、费用、供应商错误与降级路径状态。质量、安全和关键切片结果应保留可审计的分子与分母,零分母表示未知而不是零失败;只有率没有计数,无法检查覆盖和聚合是否自洽。短摘要只用于展示;完整摘要才可跨发布门、审计和线上窗口核验,且应进入Trace/受控Log而非Metric label。
决策顺序可采用风险优先级:
- 隐私、越权或明确安全失败:停止扩大,必要时回滚或禁用功能;
- 任务或高风险切片显著退化:回滚完整 manifest,保留证据;
- 供应商错误/行为漂移:只有备选路径已经用同一任务集、工具契约和数据边界验证,且当前 candidate 窗口的样本量、标签/关键切片覆盖、安全检查和新鲜度足以支撑自动动作时,才能降级;否则人工审查或暂停扩大;
- 延迟或费用超出策略:暂停扩大,先分解重试、排队、输出长度和缓存;
- 样本不足或标签未回流:保持范围并调查,不能把“尚未发现失败”写成成功;
- 全部门满足:按预注册阶梯继续,并保留持续观察。
不同信号可能冲突。动作应按风险升级,而不是投票取多数。例如质量正常但脱敏失败,不能因为五个性能指标都好就继续。
反馈不是天然真值
线上反馈常有以下偏差:
- 只有非常满意或非常不满的用户愿意点击反馈;
- 任务失败的用户可能直接离开,不会留下标签;
- “用户复制了答案”不等于答案正确;
- 退款、人工接管等结果可能几天后才发生;
- 自动评分器会受 Prompt injection、文风和长度影响;
- 人工标注者可能对 rubric 理解不一致。
因此要记录标签来源和延迟,按任务/风险切片报告覆盖率,用专家样本校准自动评分器,并定期测量标注一致性。生产样本先进入受控人工分诊,再经去重、脱敏、许可、泄漏检查和最小复现后才可接纳到下一版回归集;不能把全部日志或告警自动变成训练数据或冻结测试。
供应商故障时为什么不能随意换模型
备选模型即使“能力更强”,也可能:
- 不支持相同结构化输出或工具调用契约;
- 在同一 Prompt 下采用不同的拒绝和格式行为;
- 位于不允许的数据区域,或有不同保留条款;
- token 计数、上下文限制、缓存和费用口径不同;
- 没通过关键风险切片和副作用工具测试。
正确做法是事先维护 fallback manifest:固定备选供应商/模型、Prompt 适配、工具 schema、数据边界、任务回归集、成本门和批准者。运行时只能切到这个已验证单元。没有安全备选时,清楚地降级为只读、检索结果展示或人工流程,通常比“临时换一个模型”更可靠。
评测治理的最小记录
每次持续评测至少保留:
- release、数据集、rubric、grader、代码和策略版本;
- 样本选择条件、覆盖率、排除条件和数据处理依据;
- 自动与人工评分结果,以及校准/一致性证据;
- 样本级失败分类、关键切片和不确定性;
- 决策、理由、审批者、时间与证据指纹;
- 采取的流量动作、回滚/降级目标和复核时间。
人工审批不是免责按钮。审批者应看到固定 manifest 和证据,系统应记录“批准了什么”,而不是只记录一个人名。
其中“证据指纹”应明确区分:完整SHA-256用于跨系统绑定,短前缀仅用于人读。哈希证明的是被绑定内容未变,不证明内容真实、来源可信、访问已授权或审批已完成。
当前工具与版本提醒
截至 2026-07-22,OpenAI 官方 Evaluation best practices 强调任务特定评测、真实分布、持续评测及用人工反馈校准自动评分。其文档同时标明旧 Evals 平台正在弃用:计划于 2026-10-31 变为只读、2026-11-30 关闭;Graders 文档也说明相关工作流正在弃用。这里的日期是供应商当前公告,不是永久事实,迁移时必须重新检查官方弃用页。
MLflow的当前文档还区分经典ML的mlflow.models.evaluate()/EvaluationMetric与GenAI的mlflow.genai.evaluate()/Scorer,两套对象不可互操作;自动Trace评测当前只支持LLM judge,通常按采样/异步作业运行,也不会自动重评全部历史记录,不能替代确定性检查、人工检查或受控的冻结回归集更新。OpenTelemetry 的 GenAI semantic conventions 已迁移到独立官方仓库。它可以帮助统一 Trace 字段,但字段兼容性仍应通过固定实际修订/schema URL、契约测试和迁移记录管理。不要把观测标准的升级与应用 release 偷偷绑定在一起。
动手实践
使用 离线发布门项目与自测 的 online_observations.json:
- 分别运行健康、样本不足、供应商漂移、质量回归和成本退化观察;
- 对照脚本输出解释为什么动作不同;
- 将供应商漂移案例的
fallback_evidence改为null,确认系统从FALLBACK降为HUMAN_REVIEW;再篡改其中一个摘要,确认错绑会作为契约错误被拒绝; - 新增一个质量正常但脱敏失败的观察,验证隐私失败优先;
- 为每种动作写出执行者、证据保存和复核时间。
自测
- 为什么持续评测不等于对全部线上输出做模型评分?
- 为什么更换 grader 后不能直接与旧分数比较?
- 模型名没变时,哪些证据仍可支持“行为发生漂移”?
- 什么条件满足时才允许自动切换供应商?
- 为什么样本不足应产生
investigate,而不是continue?
掌握检查
- 能区分 API、服务、行为、经济和数据控制面漂移;
- 能为一个观察窗口列出版本、样本、质量、安全、性能和数据边界证据;
- 能解释反馈选择偏差、标签延迟和评分器漂移;
- 能设计已验证的 fallback manifest 与无备选时的功能降级;
- 能将持续评测结论写成可审计动作,而不是只有仪表盘分数。
小结与下一步
持续评测的价值不是持续地产生更多分数,而是用固定证据和风险优先级控制线上变化。出现用户影响或无法控制的漂移时,进入 事故响应与持续改进。
参考资料
以下动态资料均核验于 2026-07-22: