LLMプロバイダの障害・レート制限・タイムアウト発生時に、事前定義された優先順位に従って代替モデルへ自動切替するルーティング戦略。サービスの可用性を99.9%以上に維持するための基本的な耐障害設計。
モデルフォールバックルーティング(Model Fallback Routing)とは、LLMへのリクエストが失敗した際に、事前に定義された代替モデル(フォールバック先)へ自動的にリクエストを再送信する耐障害性の仕組みである。「Plan B」を常に用意しておくことで、特定プロバイダの障害がサービス全体のダウンタイムに直結することを防ぐ。
| 障害パターン | HTTP ステータス | 発生頻度 | 典型的な原因 |
|---|---|---|---|
| レート制限 | 429 Too Many Requests | 高い | リクエスト集中・TPM/RPM上限到達 |
| サーバーエラー | 500 Internal Server Error | 中程度 | プロバイダ側の障害・メンテナンス |
| タイムアウト | 408/504 | 中程度 | 長文生成・サーバー過負荷 |
| コンテンツフィルタ | 400 Bad Request | 低い | 安全性フィルタによる拒否 |
| 認証エラー | 401/403 | 稀 | APIキー失効・権限不足 |
| モデル非可用 |
| 404 |
| 稀 |
| モデルの廃止・リージョン制限 |
フォールバックチェーンは「どのモデルが失敗したら、どのモデルに切り替えるか」を定義する優先順位リストである:
同じ性能ティアのモデル間で切り替える。品質維持を最優先する場合に採用。
例: Claude Sonnet 4.6 → GPT-4o → Gemini 2.5 Pro
障害時に下位ティアのモデルへ切り替える。可用性を最優先し、品質低下を許容する場合に採用。
例: Claude Opus 4 → Claude Sonnet 4.6 → Claude Haiku 4.5
まず同等品質のモデルを試し、それも失敗したら下位ティアに降格する。品質と可用性のバランスを取る設計。
例: Claude Sonnet 4.6 → GPT-4o → Claude Haiku 4.5
| 戦略 | 動作 | 適するケース |
|---|---|---|
| リトライ(再試行) | 同じモデルに再リクエスト | 一時的な429エラー、ネットワーク瞬断 |
| フォールバック(代替切替) | 別のモデルにリクエスト | 持続的な障害、500エラー、モデル非可用 |
| リトライ→フォールバック | まず再試行、失敗続きなら代替へ | 最も一般的な実装パターン |
実装では「3回リトライ後にフォールバック」が標準的な設定。リトライ間隔はExponential Backoff(1s→2s→4s)が推奨される。
router_settings:
num_retries: 3
timeout: 30
fallbacks:
- claude-sonnet: [gpt-4o, gemini-pro]
- gpt-4o: [claude-sonnet, gemini-pro]
from openai import OpenAI
client = OpenAI()
try:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}]
)
except Exception:
# フォールバック
response = anthropic_client.messages.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Hello"}]
)
{
"strategy": {"mode": "fallback"},
"targets": [
{"virtual_key": "openai-key", "override_params": {"model": "gpt-4o"}},
{"virtual_key": "anthropic-key", "override_params": {"model": "claude-sonnet-4-6"}}
]
}
A1: 2-3個が実用的です。1個では単一障害点が残り、4個以上は管理の複雑さとテスト負荷が増大します。異なるプロバイダ(Anthropic、OpenAI、Google)を混在させることで、特定プロバイダの全面障害にも対応できます。
A2: 一般的にはユーザーへの通知は不要です。ユーザーにとっては「応答が返ってくること」が重要であり、内部のモデル切替は透過的に処理されるべきです。ただし、品質が明らかに低下するグレード降格フォールバック時は、「現在一部機能を制限して提供中」などの表示を検討してください。
A3: 全フォールバック先が失敗した場合は、適切なエラーメッセージをユーザーに返す「グレースフルデグラデーション」を実装します。「現在AIアシスタントが一時的に利用できません。しばらくお待ちください」のような表示と、オペレーションチームへの即時アラートを組み合わせます。