跳到主要内容

05-灰度发布回滚与供应商治理

核对日期:2026-05-13。

不稳定项:模型版本、供应商数据政策、企业合规条款、区域可用性、SLA、价格、API 兼容性和安全规范变化较快;发布和采购前必须核对最新官方资料和合同条款。

1. 学习目标

本专题关注 AI 变更如何安全上线,以及供应商风险如何管理。LLM 系统的变更不仅是代码发布,还包括模型、Prompt、RAG 索引、工具 schema、安全策略和供应商能力变化。

学完后你应该能做到:

  • 为模型、Prompt、RAG 和工具变更设计发布门禁。
  • 设计离线 eval、内部灰度、小流量灰度、全量发布和回滚流程。
  • 定义质量、成本、延迟、安全和用户反馈的回滚阈值。
  • 评估供应商的数据、合规、SLA、价格、锁定和退出风险。
  • 建立 kill switch 和事故响应机制。

2. AI 变更类型

需要灰度的变更:

变更风险
模型升级输出格式、事实性、成本、延迟变化
Prompt 修改行为、语气、边界、结构化输出变化
RAG 索引更新召回、引用、拒答变化
chunk 策略调整token 成本和召回质量变化
rerank 模型变化证据排序变化
工具 schema 变化Agent 行为变化
路由规则变化质量和成本变化
安全策略变化误杀或漏拦截

任何影响模型看到什么、怎么推理、能做什么的变更,都应该进入发布治理。

3. 发布门禁

上线前至少通过:

门禁要求
离线 eval核心任务不下降,安全负例必须通过
结构化输出schema 通过率达标
引用校验RAG 引用支持率达标
成本预算单请求和日预算在阈值内
延迟p95 和首 token 延迟达标
安全prompt injection、越权、DLP 样例通过
回滚旧版本可恢复,kill switch 可用

门禁不应只看一个总体分数。高风险样例一票否决。

4. 灰度流程

推荐流程:

离线 eval
-> 开发/测试环境
-> 内部用户
-> 1% 真实流量
-> 10% 真实流量
-> 50% 真实流量
-> 全量

每一步观察:

  • eval 抽样通过率。
  • 用户负反馈。
  • 人工审核拒绝率。
  • P95/P99 延迟。
  • 单请求成本。
  • fallback / retry 比例。
  • 安全拦截。
  • schema 失败。

灰度要有停止条件,而不是只要没报错就继续放量。

5. A/B 测试

A/B 适合比较:

  • 两个 Prompt。
  • 两个模型。
  • 两种 RAG 检索策略。
  • 两种回答格式。

不适合:

  • 安全策略是否开启。
  • 高风险任务是否需要人工审核。
  • 未通过离线 eval 的模型。

A/B 指标:

  • 采纳率。
  • 编辑距离。
  • 任务完成率。
  • 投诉率。
  • 引用通过率。
  • 成本和延迟。

注意:A/B 中的用户和任务分布要可比,否则结论会偏。

6. 回滚设计

必须能回滚:

  • Prompt 版本。
  • 模型版本或路由规则。
  • RAG 索引版本。
  • chunk 策略。
  • rerank 模型。
  • 工具 schema。
  • 安全策略。
  • 前端入口。

回滚不是重新发版才开始想,而是变更设计的一部分。

回滚阈值示例:

指标阈值
安全负例失败立即回滚
核心 eval 下降超过 2%停止放量
P95 延迟上升超过 30%降级或回滚
单请求成本上涨超过 50%停止放量
用户负反馈翻倍回滚并复盘
schema 失败率超过阈值回滚 prompt 或 parser

7. Kill Switch

kill switch 用于事故止血。

维度:

  • 按功能关闭。
  • 按租户关闭。
  • 按模型关闭。
  • 按 provider 关闭。
  • 按工具关闭。
  • 按写入能力关闭。
  • 按高风险任务关闭。

示例:

disable_agent_write_tools = true
disable_provider_x = true
force_search_only_mode = true
disable_long_context_mode = true

Kill switch 需要权限控制和审计,避免被误用。

8. 供应商治理

评估维度:

维度要问的问题
数据保留输入输出会保存多久?
训练使用数据是否用于训练?
区域合规数据是否出境?
SLA可用性承诺是什么?
限流配额如何申请和扩容?
模型版本是否可能静默变更?
价格计费项和折扣规则是什么?
日志是否提供 request id 和审计能力?
安全密钥、权限、企业控制能力如何?
退出如何迁移到其他 provider?

不要把核心业务完全绑定在单一供应商的非标准能力上。抽象层能降低锁定,但也要保留高级能力入口。

9. 事故响应

常见事故:

  • 错误回答导致用户误操作。
  • 模型升级导致格式失败。
  • 供应商区域不可用。
  • 成本异常上涨。
  • 日志泄漏敏感信息。
  • Agent 工具越权。

响应流程:

发现 -> 分级 -> 止血 -> 通知 -> 定位 -> 修复 -> 回归 -> 复盘

止血优先:

  • 关闭入口。
  • 降级为搜索。
  • 回滚 Prompt。
  • 切换 provider。
  • 关闭工具。
  • 清理污染缓存。

10. 工程案例

10.1 Prompt 灰度失败

现象:客服草稿 Prompt v1.8 采纳率下降。

处理:

  • 灰度停在 10%。
  • 回滚到 v1.7。
  • 对失败样例做分类。
  • 发现 v1.8 过度简短,遗漏承诺边界。
  • 修改后重新离线 eval。

10.2 Provider 故障

现象:provider A timeout 飙升。

处理:

  • 熔断 provider A 的相关模型。
  • 低风险任务切 provider B。
  • 高风险任务进入人工处理。
  • 更新状态页和用户提示。
  • 事后复盘 SLA 和多供应商策略。

11. 常见反模式

反模式表现后果修正
模型升级直接全量没有 eval 和灰度质量回归发布门禁
Prompt 手工线上改无版本无回滚问题不可复现Prompt registry
只看错误率质量变差没人知道隐性事故质量和反馈指标
无 kill switch事故只能等发版扩大影响功能开关
供应商锁死使用私有能力无替代迁移困难抽象层和退出方案
合同不看数据条款数据被保留或用于训练合规风险采购前审查

12. 练习

为一次“RAG 问答 Prompt 升级”设计发布方案:

  • 变更内容。
  • 离线 eval 数据集。
  • 灰度比例。
  • 观察指标。
  • 回滚阈值。
  • kill switch。
  • 事故通知和复盘。

13. 验收题

  1. 为什么 AI 变更不能只按普通代码发布处理?
  2. 哪些变更必须进入发布门禁?
  3. A/B 测试适合比较什么,不适合比较什么?
  4. Prompt、模型、RAG 索引分别如何回滚?
  5. kill switch 应该按哪些维度设计?
  6. 供应商治理最关键的风险有哪些?