Fallback Strategy

Fallback Strategy 是当主 LLM Provider 不可用时自动切换到备用 Provider 的策略。它是 AI Service 高可用的关键保障。

#type / concept #status / evergreen #tech / ai #tech / architecture

[!info] related notes

Fallback Strategy

一句话定义

Fallback Strategy 是当主 LLM Provider 不可用时自动切换到备用 Provider 的策略。OpenAI 限流了?切 Anthropic。Anthropic 超时了?切本地模型。

它解决什么问题

LLM Provider 不是 100% 可靠的:

  • API 限流(429)
  • 服务故障(500)
  • 网络超时
  • 区域性中断

没有 Fallback,一个 Provider 挂了整个服务就不可用。

核心原理

Fallback 链

请求 → OpenAI (主)
         │ 失败

       Anthropic (备1)
         │ 失败

       本地模型 (备2)
         │ 失败

       返回错误

Python 实现

class FallbackChain:
    def __init__(self, providers: list[LLMProvider]):
        self.providers = providers

    async def chat(self, messages, model, **kwargs) -> ChatResponse:
        errors = []
        for provider in self.providers:
            try:
                return await provider.chat(messages, model, **kwargs)
            except RateLimitError as e:
                errors.append((provider.name, "rate_limit"))
                continue
            except TimeoutError as e:
                errors.append((provider.name, "timeout"))
                continue
            except Exception as e:
                errors.append((provider.name, str(e)))
                continue

        raise AllProvidersFailedError(errors)

带优先级的 Fallback

class PrioritizedFallback:
    def __init__(self):
        self.chains = {
            "high_quality": [OpenAIProvider("gpt-4"), AnthropicProvider("claude-sonnet")],
            "balanced": [OpenAIProvider("gpt-4-mini"), AnthropicProvider("claude-haiku")],
            "cheap": [OpenAIProvider("gpt-4-mini")],
        }

    async def chat(self, messages, quality_tier="balanced", **kwargs):
        chain = self.chains[quality_tier]
        for provider in chain:
            try:
                return await provider.chat(messages, **kwargs)
            except Exception:
                continue
        raise AllProvidersFailedError()

常见设计模式

1. 同模型 Fallback

OpenAI 的 GPT-4 → OpenAI 的 GPT-4-mini(降级但不换 Provider)

2. 跨 Provider Fallback

OpenAI → Anthropic(换 Provider)

3. 本地 Fallback

云端 API → 本地模型(兜底)

常见坑

  1. 不做 Fallback: 单 Provider 依赖
  2. Fallback 链太长: 每个 Provider 都试一遍,延迟累积
  3. 不做错误区分: 限流和认证失败的处理方式不同
  4. Fallback 后不记录: 不知道哪个 Provider 经常失败

参考资料

创建于 2026/6/30 更新于 2026/7/15