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