AI 学习笔记(十九):LLM 发布闸门、灰度与回滚最小实践
上一篇我们完成了故障演练(Game Day)的最小闭环。
但真正进入生产后,很多事故并不是“突然宕机”引发的,而是由一次看起来正常的发布慢慢放大。
这篇继续生产运维实践主线,聚焦一个高频痛点:
LLM 功能上线时,怎么用最小工程成本把风险关在发布闸门里。
先说结论:
- 没有发布闸门的 LLM 发布,本质上是“线上试错”
- 只看接口可用性远远不够,必须同时看质量与副作用
- 灰度不是目的,灰度后的“自动回滚条件”才是关键
1. 为什么 LLM 发布更需要闸门
传统后端发布里,指标常聚焦在错误率、延迟、资源使用。
LLM 场景还有两类常被忽略的风险:
- 语义质量退化:接口 200,但答案更差、更偏题、更不稳定
- 副作用升级:工具调用命中率上升,但错误写操作也上升
所以 LLM 发布不能只问“服务是否可用”,还要问:
- 输出质量是否仍在可接受区间
- 执行动作是否仍在可控边界
发布闸门的目标不是拖慢迭代,而是避免把“未知风险”直接推给真实用户。
2. 最小发布闸门:三层就够
如果你还没有成熟平台能力,先做三层闸门就能明显降风险:
Pre-check(发布前):静态检查 + 小样本回归评估Canary-check(灰度中):真实流量指标对比Post-check(灰度后):稳定窗口验收与自动放量/回滚
建议把每层都做成可执行、可审计的规则,不依赖“值班同学临场判断”。
3. 发布前闸门:先挡住明显坏版本
最小实践建议发布前至少过 4 条检查:
- Prompt / tool schema / 输出 schema 与线上契约兼容
- 核心评测集(如 50~200 条)质量分不低于当前基线
- 高风险策略(安全、权限、敏感动作)未回退
- 成本预算(token、工具调用)在阈值内
可落地的最小输出示例:
1 | { |
关键点:你不需要一开始就做复杂评测平台,但必须让“放行条件”结构化。
4. 灰度闸门:只看可用性会误判
Canary 阶段建议盯三组指标:
- 可用性:错误率、超时率、P95/P99
- 质量:关键任务成功率、结构化输出成功率、人工抽检得分
- 副作用:工具写操作失败率、人工接管率、异常告警数
一个常见错误是:可用性很好就继续放量。
但 LLM 场景下,质量和副作用劣化可能更先伤业务。
建议设置“硬失败条件”(任一命中即回滚):
- 结构化输出成功率低于基线 5%
- 高风险工具误调用率超过阈值
- 关键路径人工接管率超过预警线
5. 把回滚条件写成机器可判定规则
回滚不能依赖“大家觉得不太对”。
至少把条件写成配置,并由发布器自动执行。
1 | release_gate: |
规则要满足三个要求:
- 可被自动采集
- 可被自动判定
- 可被回溯审计
6. 最小回滚剧本:5 分钟内能执行
回滚剧本建议控制在 5 个动作内:
- 停止继续放量(冻结发布)
- 路由回切到上个稳定版本
- 高风险工具切只读或人工审批
- 触发关键路径冒烟验证
- 在值班频道广播状态和后续动作
如果回滚剧本超过 10 个手工步骤,事故时成功率会明显下降。
7. 版本切换建议:配置化优先于重发版
LLM 发布里很多风险来自 prompt、路由、策略。
这些内容尽量走配置版本,不要每次都重新发二进制包。
推荐最小版本对象:
prompt_versionprovider_route_versionpolicy_versiontool_permission_profile
这样可以做到:
- 快速切换
- 清晰追责
- 低成本复盘
8. 一周内可落地的推进节奏
如果你现在从零开始,可以按这 5 天推进:
Day 1:定义发布闸门与回滚阈值(先 4~6 条硬规则)Day 2:打通指标采集(可用性 + 质量 + 副作用)Day 3:接入 10% Canary 流程,支持自动冻结与回滚Day 4:做一次“失败发布演练”,验证回滚剧本Day 5:补齐复盘模板与责任人机制
做到这里,你的发布流程就从“人工盯盘”升级为“规则驱动”。
总结
LLM 上线风险控制的核心不是“完全不出问题”,而是:
- 问题能被快速发现
- 风险能被自动止损
- 系统能在可控时间内恢复
如果你这周只能先做一件事,我建议优先做:
把 Canary 的自动回滚阈值写成配置,并接入发布流水线。