跳转到主要内容

你的 AI 功能需要一个无需部署的紧急开关 (Kill Switch)

阅读需 2 分钟Tian PanTian Pan

想象一下这个场景:凌晨 2:14,值班工程师的手机嗡嗡作响,你旗舰产品中的 AI 功能正自信地告诉企业客户,他们的账号是“西红柿汤”。模型供应商推送了一个路由变更,你的提示词被静默升级的分词器截断了,或者是检索索引针对一个损坏的 Parquet 文件重新生成了——原因现在还不重要。重要的是,距离有人截图输出并发布到 LinkedIn 只剩 10 分钟。

如果你唯一的对策是“回滚部署并等待 CI”,那你已经输了。标准的流水线回滚从报警到恢复需要 20 到 40 分钟,而糟糕的输出不会在绿色对勾渲染时礼貌地暂停。等到新容器恢复健康时,截图已经在信息流里传开了,支持信箱里塞满了 50 个工单,而你花了 6 个月建立的信任正被那些从未使用过该产品的人审查。

那些能在 5 分钟而不是 5 小时内控制此类事件的团队并不是靠运气。他们在需要之前就构建了一个紧急开关(Kill Switch)——这是一个允许值班工程师在几秒钟内禁用 AI 路径的原语,无需部署,无需合并,也无需任何人触碰生产环境的二进制文件。这篇文章将探讨这种专门针对 AI 功能的原语是什么样的,为什么确定性软件的版本不足以应对,以及在事故发生前的一天必须具备什么条件,才能让响应在事故发生的当晚奏效。

这种类型的故障,部署路径太慢了

十年经验的 Web 服务工程师通常会对“如何回滚错误的变更”有一个自信的答案:撤销提交、运行 CI、部署上一个制品、监控。这个答案适用于你的生产二进制文件是故障单元,且发布频率大约是每日一次的机制。它之所以有效,是因为部署是可预测的,错误的代码就是新的代码,且回滚目标是昨天在生产环境中运行的已知良好版本。

AI 功能同时在三个方面打破了这些假设。

首先,故障通常不在 你的 代码中。你的容器运行良好。但模型供应商在稳定的模型名称下轮换了权重,上游向量化服务开始返回 0.0 向量,或者安全分类器变得更加激进,现在正拒绝 30% 的合法请求。由于回归是搭载在他人的发布列车上而来的,因此没有可以撤销的提交。

其次,故障表现在 输出质量 上,而不是可用性上。端点返回 200,延迟正常,JSON 解析顺利。根据你现有告警关注的每一项指标,系统都是健康的。出问题的是输出的 含义,而你的流量仪表盘无法感知含义。

第三,回滚目标是模糊的。即使你重新部署了之前的容器,其背后的模型可能已经改变了。“昨天的二进制文件”不再等同于“昨天的行为”,因为行为始终是代码、提示词、模型、检索索引以及半打拥有各自时钟的上游服务的集合体。你可以发布上周的制品,但仍然会遇到这周的事故。

这些因素都使得“部署即回滚”路径比确定性服务更慢、更不可靠且更不精准。紧急开关的存在就是为了完全绕过这条路径。

开关实际需要做什么

AI 功能的紧急开关不是一个简单的布尔值。它是一组预先部署的行为,每个行为都由一个 Flag 控制,值班工程师可以在几秒钟内进行组合。最小可行方案包含四个成员。

第一个是 关闭并回退(off-with-fallback)。当 AI 路径被关闭时,功能不会返回错误或加载动画。它会返回一个确定性的响应——来自 AI 之前的关键词匹配的搜索结果,基于规则的草稿(而不是 LLM 编写的),或者是静态的常见问题解答(而不是对话式回答)。用户会察觉到功能变笨了,而不是功能消失了。核心点在于“关闭”不能意味着“损坏”——如果你唯一的回退方案是 500 错误,那么你的紧急开关只是另一种形式的停机。

第二个是 基于租户的范围(per-tenant scope)。AI 故障的影响范围在客户之间很少是均匀的。破坏某个租户索引的检索 Bug 对其他租户是不可见的。破坏受监管行业客户格式的提示词变更对其他人可能没问题。全局关闭是一把大锤;基于租户的关闭则是手术刀,而大多数实际事故需要的是手术刀。Flag 系统必须支持根据租户 ID、账户等级、区域或流量实际拆分的任何其他维度进行定位。

第三个是 基于操作的范围(per-operation scope)。AI 路径很少是单一路径。它包括流式对话端点、后台摘要任务、自动补全、基于向量的搜索。它们共享基础设施但独立发生故障。因为其中一个表现异常而关闭整个“AI”功能的紧急开关在 75% 的情况下都是过度反应。每个高价值操作都需要自己的 Flag,每个 Flag 都需要自己的回退方案。

第四个是 自动激活(automatic activation)。值班工程师是响应链条中最慢的一环。即使是一个优秀的团队,从检测到通知再到确认并切换 Flag 的过程也很少能压缩到 5 分钟以内。对于故障信号可以自动化的场景——输出分布偏移、金丝雀集合上的评估分数骤降、拒绝率激增、幻觉分类器报警——紧急开关应该在信号超过阈值时自行触发,并在事后(而不是事前)通知人类。这就是 5 分钟和 5 秒钟控制事故的区别。

无人愿解决的检测难题

一个紧急开关的速度取决于触发它的信号。确定性软件工具包(deterministic-software toolkit)会给你 5xx 错误率、p99 延迟和异常计数;但对于 AI 功能,这三项指标可能非常平稳,而输出却已在悄无声息中崩溃。

对 AI 功能真正重要的信号是不同的,且更难进行埋点监测(instrument)。

输出分布偏移(Output-distribution shift)是核心手段。你对模型在近期窗口内的输出进行指纹提取——包括长度分布、拒绝率、top-k token 频率、输出到一小组预设类别的分类——并与基准线进行对比。平均输出长度的突增、拒绝率的翻倍或类别分布的偏移,都是上游发生了变化的强烈信号。检测器不需要知道哪里出了错,它只需要注意到系统的行为与一小时前在统计学上有所不同。

连续金丝雀(continuous canary)上的评估分数回退能捕捉到分布偏移漏掉的故障。你每隔五到十分钟针对生产环境运行一小组固定的评估集(五十到几百个用例),并跟踪分数。当分数低于设定的底线时,你会收到告警,并可选择自动触发紧急开关。金丝雀的规模是成本与灵敏度之间的杠杆;在实践中,“小而频繁”优于“大而稀少”。

分群质量仪表盘(Per-cohort quality dashboards)能发现特定用户细分领域中无声的回退。整体质量可能保持稳定,但某一个群体——如企业级客户、德语用户、负载异常的长尾账户——可能正在悄然崩溃。通过分群切分质量并在单分片出现回退时告警的监控层,可以在用户提交工单之前捕获这些问题。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

没人会写的 AI 系统 On-Call 运维手册

当故障模式是概率性的模型行为而非服务崩溃时,传统的 SRE 运维手册就会失效。本文将探讨 LLM 驱动系统的事故响应究竟是怎样的,以及哪些信号值得告警。

insider
ai-engineering
阅读需 12 分钟

你的值班轮换需要 AI 素养作为前提,否则不要在凌晨 2 点给任何人发报警

当其中一个服务是基于 LLM 的功能时,共享值班轮换机制会立刻失效。这里有一份关于 AI 素养前提、仪表板规范以及影子期运行手册的指南,能让 AI 团队在凌晨 2 点安稳睡觉。

insider
on-call
阅读需 11 分钟

你的 SRE 复盘模板遗漏了决定每次 LLM 故障的六个关键字段

传统的 SRE 复盘模板是为代码变更和基础设施故障设计的。对于 LLM 故障,真正发生变化的变量往往被遗漏了——如 Prompt 版本、模型选择切片、裁判配置、检索索引状态、工具 Schema 以及流量组合。本文提供了填补这一空白的模板字段和故障类别分类法。

insider
ai-engineering
阅读需 10 分钟

随机系统的值班响应:为何你的 AI 运行手册需要重写

传统故障响应假设故障是可复现的,但 LLM 驱动的系统并非如此。以下是如何针对非确定性 AI 重写告警方案、分类决策树和事后分析模板。

insider
ai-engineering
阅读需 10 分钟

思维的 p99:当模型决定你的请求耗时多久

推理模型使响应时间成为问题难度的函数,导致 p99 延迟激增至 p50 的 3-5 倍,超时调整也演变为成本问题。通过针对更小模型的对冲请求、按路由设置的推理开销上限以及感知难度的 SLO,可以将尾部延迟控制在合理范围内。

insider
llm