AI・機械学習
初級

モデルフォールバックルーティング(モデルフォールバックルーティング)

LLMプロバイダの障害・レート制限・タイムアウト発生時に、事前定義された優先順位に従って代替モデルへ自動切替するルーティング戦略。サービスの可用性を99.9%以上に維持するための基本的な耐障害設計。

0 回閲覧
0 いいね

モデルフォールバックルーティングとは

モデルフォールバックルーティング(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)が推奨される。

主要プラットフォームでのフォールバック設定

LiteLLM

router_settings:
  num_retries: 3
  timeout: 30
  fallbacks:
    - claude-sonnet: [gpt-4o, gemini-pro]
    - gpt-4o: [claude-sonnet, gemini-pro]

OpenAI SDK(Python)

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"}]
    )

Portkey AI Gateway

{
  "strategy": {"mode": "fallback"},
  "targets": [
    {"virtual_key": "openai-key", "override_params": {"model": "gpt-4o"}},
    {"virtual_key": "anthropic-key", "override_params": {"model": "claude-sonnet-4-6"}}
  ]
}

フォールバック時の注意事項

  1. プロンプト互換性: モデル間でシステムプロンプトやツール定義のフォーマットが異なる場合がある。LiteLLMは自動変換を提供するが、高度な機能(Vision、Tool Use)は互換性を事前確認する必要がある
  2. コスト管理: フォールバック先が高コストモデルの場合、障害時にコストが急増するリスクがある。コスト上限との連携が重要
  3. レスポンス一貫性: ユーザーとの対話途中でモデルが切り替わると、口調やコンテキスト理解が変わる場合がある
  4. 監視とアラート: フォールバックが頻発する場合はプライマリモデルの障害を示唆するため、フォールバック率の監視とアラート設定が必須

FAQ

Q1: フォールバックチェーンには何個のモデルを含めるべきですか?

A1: 2-3個が実用的です。1個では単一障害点が残り、4個以上は管理の複雑さとテスト負荷が増大します。異なるプロバイダ(Anthropic、OpenAI、Google)を混在させることで、特定プロバイダの全面障害にも対応できます。

Q2: フォールバック発生時にユーザーに通知すべきですか?

A2: 一般的にはユーザーへの通知は不要です。ユーザーにとっては「応答が返ってくること」が重要であり、内部のモデル切替は透過的に処理されるべきです。ただし、品質が明らかに低下するグレード降格フォールバック時は、「現在一部機能を制限して提供中」などの表示を検討してください。

Q3: すべてのフォールバック先も障害の場合はどうなりますか?

A3: 全フォールバック先が失敗した場合は、適切なエラーメッセージをユーザーに返す「グレースフルデグラデーション」を実装します。「現在AIアシスタントが一時的に利用できません。しばらくお待ちください」のような表示と、オペレーションチームへの即時アラートを組み合わせます。