跳到主要内容

回退级联:为什么你的 AI 功能需要五种故障模式,而非一种

· 阅读需 11 分钟
Tian Pan
Software Engineer

大多数 AI 功能发布时只有两种状态:正常工作和彻底挂掉。模型调用成功,功能就有响应;模型调用失败,用户就会看到错误。这相当于在构建 Web 服务时没有负载均衡、没有缓存,且只有一个数据库副本——在出事之前,它在技术上是可行的。

不同之处在于,工程师在 20 世纪 90 年代就学会了数据库弹性模式,并将其深刻内化。 AI 功能的弹性仍处于通过一次次生产事故进行艰难探索的阶段。一家支付处理器在一次时长 4 小时的 AI 停机中损失了 230 万美元。一家物流公司在其路由模型宕机时,错过了 30,000 个包裹的交付窗口。这两起失败都有一个共同的根本原因:当主模型不可用时,没有可以回退的方案。

解决方案并不是追求模型提供商更好的在线率——那是你无法控制的。解决方案是设计一套具有级联回退级别的 AI 功能,每一级都比上一级更简单、更便宜,这样模型失败就只是一个降级事件,而不是灾难性事件。

五级降级体系

传统的 Web 服务拥有规范的可靠性模式:副本、缓存、读副本、静态回退、熔断器。 AI 功能需要类似的体系,但由于故障模式差异巨大,这套模式需要从零开始重新构思。

这里有一套可行的五级体系:

第 1 级 —— 前沿模型(主模型):你所能获得的最佳模型,针对质量进行了优化。如 Claude Sonnet、GPT-4、Gemini Pro。基础延迟为 100–200ms,每 token 成本最高。这是理想路径。

第 2 级 —— 更便宜的模型(同一供应商):当主模型发生限流、延迟激增或错误率爬升超过阈值时,路由到同一供应商的更小模型。如 Claude Haiku、GPT-4o-mini。成本降低 50–70%,质量有可衡量的下降,但在语义上仍然合理。延迟降至 50–100ms。

第 3 级 —— 语义缓存命中:在调用任何模型之前,检查最近的请求是否足够相似,以便返回缓存的响应。针对缓存查询的嵌入(embedding)计算余弦相似度,通常以 0.85–0.95 以上作为有效阈值。一旦命中:模型成本为零,延迟从 1.67s 降至 52ms——缓存命中时的延迟降低了 96.9%。这一级严格来说并不是“回退”——它应该成为你每个请求路径的一部分,在命中时甚至不需要到达第 1 级。

第 4 级 —— 确定性回退:规则、模板、预计算响应。一个无法连接到任何模型的客户支持机器人仍然可以从查找表中返回 FAQ 答案。代码补全服务可以回退到基于 token 频率的建议。一个生产团队用梯度提升树取代了由 12 个深度学习模型组成的集成模型作为其回退级别——延迟从 200ms 降至 10ms,准确率虽然有可衡量的下降,但功能保持了运行。

第 5 级 —— 人工介入:对于涉及重大利害关系的决策,路由到人工审核队列。例如医疗、金融、法律背景下,一个错误的确定性回答比没有回答更糟糕。这里的工程要求是上下文保留:人工审核员需要看到 Agent 掌握了什么信息、它试图做什么,以及它为什么要升级到人工。

并非每个应用都需要全部五个级别。一个在找不到结果时以“未找到结果”优雅失败的文档搜索工具,可能只需要第 1、3 和 4 级。而在临床工作流中运行的病历摘要生成器可能需要全部五个级别。重点是进行有意识的设计,而不是默认只有两种状态。

触发每一级的信号

只有在有机制监控信号并决定何时降级时,回退级联才有用。主要有两类信号:置信度信号和延迟/错误信号。

延迟信号是最可靠的,因为它们不需要模型评估自己的输出。为每个级别设置超时预算,而不是设置全局超时。第 1 级在请求被重定向到第 2 级之前可能有 3 秒的时间。第 2 级有 2 秒的时间,然后检查缓存。如果缓存未命中,第 4 级在 100ms 内确定性地运行。这里的关键错误是为整个 LLM 调用设置单一的超时。流式响应的首个 token 时间(TTFT)为 1–3 秒,总响应时间为 30–120 秒。 5 秒的全局超时几乎每次都会切断非琐碎的响应。

错误率信号使用熔断器模式。当对提供商的失败率超过阈值时(例如过去 60 秒内 20% 的请求失败),熔断器开启,所有请求跳过第 1 级,直到探测请求成功。熔断器有三种状态:关闭(正常运行)、开启(所有请求跳过该提供商)和半开(探测请求测试恢复情况)。开启状态不是失败状态;它是系统在保护自己免受已检测到的降级依赖项的影响。

置信度信号比较棘手。 LLM 可以输出置信度 token,一些路由系统利用这些 token 来决定响应是否足够可信,可以返回给用户,还是应该交给人工。需要注意的故障模式是: LLM 表现出自我偏好偏差,即使替代方案客观上更好,也会给自己的输出打出比替代方案更高的分数。 GPT-4 在识别自身推理链错误方面的准确率仅为 52.9%。来自模型本身的置信度分数是弱信号;基于验证集或明确路由阈值衡量的置信度才是强信号。

运营问题:未经测试的降级方案等同于虚设

构建降级层级是工程层面的工作,而保持其正常运行则是大多数团队会忽略的运营纪律。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates