SKIP TO CONTENT
全部文章
GUIDE·June 16, 2026·阅读约 4 分钟

当一个模型突然消失时,如何让你的 AI 应用活下来

作者:VCA Newsroom

本文为自动翻译,可能包含错误。 查看英文原文

每个在 AI 上做开发的人最终都会用惨痛的方式学到同一课:你所依赖的那个模型,并不保证一直在那里。它可能在流量高峰被限流、返回一个拒答、撞上过载错误,或者——就像 2026 年 6 月 Claude Fable 5 那样——因为与你的代码毫无关系的原因被整个关停。能扛过这些时刻的应用,靠的不是最好的提示词。靠的是它们为"模型不在了"这件事做了准备。

本指南将带你走一遍实用的、分层的韧性方案,无论你是直接调用单个供应商,还是通过一个网关来路由,它都适用。

第 1 步:永远不要硬编码单一模型

最常见的脆弱点,是把模型名直接写死在一个请求里。一旦那个字符串失效,所有调用就全部失败。换个做法:把你的模型定义为配置——一个小的优先级列表,而不是一个常量:

MODEL_CHAIN = [
    "claude-opus-4-8",      # primary
    "claude-sonnet-4-6",    # same provider, cheaper/faster
    "gpt-5.5",              # different provider entirely
]

仅此一个改动,就意味着在事故期间切换供应商只是改一处配置,而不是发一次代码部署。注意第三项是另一家厂商。同一供应商内的 fallback 能在单个模型宕机时保护你;跨供应商的 fallback 则能在整个供应商宕机——或被勒令下线——时保护你。

第 2 步:用一条 fallback 链,而不是单次尝试

这个模式很简单:按顺序依次尝试每个模型,失败就换下一个,只有当整条链都用尽时才抛出错误。

def call_with_fallback(messages):
    last_error = None
    for model in MODEL_CHAIN:
        try:
            return client.complete(model=model, messages=messages)
        except (RateLimitError, OverloadError, RefusalError) as e:
            last_error = e
            continue  # try the next model
    raise AllModelsFailedError(last_error)

基于什么去 fallback 很关键。在短暂退避后,对同一个模型重试一个瞬时的 overloaded(HTTP 529)错误是合理的。但一个鉴权错误或格式错误的请求会在每个模型上以相同方式失败——这些应该立即暴露出来,而不是把你整条链都烧掉。

第 3 步:当平台原生提供 fallback 时,就借助平台

你不一定都得自己手写。如今好几个平台已经在服务端做了这件事:

  • Anthropic 的 API 新增了一个 beta 版的 fallbacks 参数,能在单次往返中把一个被拒的请求重试到备用模型上——例如 Fable 5 就被配置为:当它的分类器拒绝某个请求时,回退到 Opus 4.8。计费跟随实际提供响应的那个模型。
  • OpenRouter 允许你按优先级顺序传入一个 models 数组;它会在上下文长度错误、内容审核标记、限流和宕机时自动故障转移,并按实际应答的那个模型的费率向你计费。
  • LiteLLM 提供了一个 Router,内置跨部署和跨厂商的重试、fallback 与负载均衡,你可以自托管以获得最大的控制权。

像 OpenRouter 或 LiteLLM 这样的网关给你一个跨众多供应商的统一端点,于是跨供应商的 fallback 不过是列表里多加一项,而不是要再集成一个 SDK。

第 4 步:加一个熔断器,让你快速失败

如果一个模型明显已经宕机,你可不想让每个请求都等到它超时才往下走。熔断器会跟踪近期的失败,一旦越过阈值,就在一段冷却期内完全跳过那个坏掉的模型。2026 年的生产团队通常落在连续五次失败触发熔断、约 60 秒冷却后再测试恢复这一档。在熔断器打开期间,流量直接流向链中的下一个模型——不浪费任何延迟。

第 5 步:想清楚"降级"对你的产品意味着什么

回退到更便宜的模型并不是免费的——质量会下降,你的提示词表现也可能不同。要为此做好计划:

  • 针对链中的每个模型测试你的提示词。 为某个模型调好的提示词,在它的 fallback 上可能产出明显更差的结果。
  • 在确实重要时告诉用户你已经降级(比如"正在以快速模式运行"),而不是默默地交付质量更低的结果。
  • 记录实际服务每个请求的是哪个模型,这样在事故之后你能看清 fallback 吸收了多少流量。

要点

韧性不是上线之后再拼接上去的功能——它是你早早加进去的一点点结构:用配置而非常量,用一条优先级链而非单次调用,用一个熔断器来快速失败,以及在每一层都测试过的提示词。在六月那次 Fable 5 关停中应用始终在线的团队,靠的不是运气。他们只是早已回答了每个 AI 开发者第一天就该问的那个问题:如果这个模型明天不在了,会发生什么?

Auto-generated by Vibe Coding Academy on June 16, 2026, grounded in the real sources linked above. We review for accuracy, but please verify time-sensitive details against the primary sources.

Build Blueprint · Creator

有想法?获取你的 AI 智能体可直接据此构建的规格说明。

描述任意产品,即可获得完整的构建蓝图——技术栈、数据模型、界面、API,以及可直接粘贴到 Claude Code 或 Cursor 的提示词。可导出为 PDF。

打开 Blueprint