LESSON 30分

ストーリー

田中VPoE
サービングインフラの基本がわかったところで、AI API Gatewayの詳細設計に入ろう。ルーティング、フォールバック、キャッシュの具体的な実装方法を見ていく
あなた
LiteLLMを導入する方針ですが、実際にどう設定すればいいですか?
田中VPoE
LiteLLMはOpenAI互換のAPIインターフェースを提供するプロキシだ。設定ファイル1つで複数プロバイダへのルーティングやフォールバックを実現できる。具体的なコードを見ながら理解しよう

AI API Gatewayの詳細設計

ルーティング設計

ユースケースの特性に応じて最適なモデルにルーティングします。

ルーティング基準説明
ユースケース別サービスの要件に応じたモデル選択CS-AI→GPT-4o、FAQ Bot→Claude
複雑度別リクエストの複雑さで振り分け簡単な質問→mini、複雑な分析→フルモデル
コスト別予算制約に応じたモデル選択月末予算残少→低コストモデル
レイテンシ別応答速度要件で振り分けリアルタイム→高速モデル
# LiteLLM ルーティング設定
model_list:
  # CS-AI用: 高品質モデル
  - model_name: cs-ai-primary
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      max_tokens: 4096
      temperature: 0.3

  # CS-AI用: フォールバック
  - model_name: cs-ai-fallback
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  # FAQ Bot用
  - model_name: faq-bot-primary
    litellm_params:
      model: anthropic/claude-3-5-sonnet-20241022
      api_key: os.environ/ANTHROPIC_API_KEY

  # 簡易応答用(低コスト)
  - model_name: lightweight
    litellm_params:
      model: openai/gpt-4o-mini
      api_key: os.environ/OPENAI_API_KEY

router_settings:
  routing_strategy: "least-busy"
  num_retries: 2
  timeout: 60
  retry_after: 5

フォールバック設計

フォールバックチェーン

フォールバックチェーン設計:

リクエスト到着


Primary Model (GPT-4o)
    │ 成功 → レスポンス返却
    │ 失敗(タイムアウト/エラー/レート制限)

Secondary Model (Claude 3.5 Sonnet)
    │ 成功 → レスポンス返却(フォールバック使用をログ記録)
    │ 失敗

Tertiary Model (GPT-4o-mini)
    │ 成功 → レスポンス返却(品質低下の可能性をログ記録)
    │ 失敗

Degraded Mode
    │ キャッシュ応答があれば返却
    │ なければ定型エラーメッセージ

Error Response
    │ 「現在サービスを利用できません」
    └── インシデントアラート発報

フォールバック設定

# フォールバック設定例
router_settings:
  fallbacks:
    - model_name: cs-ai-primary
      fallback_models:
        - cs-ai-fallback
        - lightweight

  # コンテキストウィンドウ超過時のフォールバック
  context_window_fallbacks:
    - model_name: cs-ai-primary    # 128K tokens
      fallback_models:
        - cs-ai-long-context       # より大きなコンテキスト対応モデル

  # コンテンツフィルタ発動時のフォールバック
  content_policy_fallbacks:
    - model_name: cs-ai-primary
      fallback_models:
        - cs-ai-fallback           # 別プロバイダで再試行
フォールバック条件対応
HTTPエラー (5xx)即座に次のモデルへ
タイムアウト設定値超過で次のモデルへ
レート制限 (429)バックオフ後にリトライ、それでも失敗なら次へ
コンテキスト超過より大きなコンテキストのモデルへ
コンテンツフィルタ別プロバイダで再試行

キャッシュ設計

キャッシュ戦略

キャッシュ種別説明ヒット率の目安
完全一致キャッシュ同一プロンプト+パラメータのキャッシュ5-15%
セマンティックキャッシュ意味的に類似したリクエストのキャッシュ15-30%
RAGコンテキストキャッシュ検索結果のキャッシュ(LLM呼び出し前)20-40%
キャッシュの判定フロー:

リクエスト到着


┌─────────────────┐    ヒット
│ 完全一致キャッシュ │ ────────→ キャッシュ応答を返却
│ チェック          │
└────────┬────────┘
         │ ミス

┌─────────────────┐    ヒット
│ セマンティック     │ ────────→ キャッシュ応答を返却
│ キャッシュチェック  │           (類似度スコアも記録)
└────────┬────────┘
         │ ミス

    LLM API呼び出し


    キャッシュに保存

キャッシュ設定

# Redis キャッシュ設定
litellm_settings:
  cache: true
  cache_params:
    type: redis
    host: redis-cluster.internal
    port: 6379

    # 完全一致キャッシュ
    ttl: 3600              # 1時間

    # セマンティックキャッシュ(オプション)
    similarity_threshold: 0.95  # 類似度95%以上でヒット

    # キャッシュ除外条件
    cache_control:
      no_cache_services:
        - "cs-ai"          # 顧客対応は常に最新応答
      no_cache_params:
        temperature_gt: 0.5  # temperature > 0.5はキャッシュしない
設計ポイント説明
TTL設計ユースケースに応じてTTLを調整。FAQ→長め、CS→短めまたはキャッシュなし
キャッシュキーモデル名+プロンプト+主要パラメータのハッシュ
除外条件パーソナライズが必要な応答、高temperatureのリクエストは除外
容量管理LRU(Least Recently Used)で古いエントリを自動削除

レート制限と優先度制御

サービス別レート制限

# レート制限設定
general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY

  # グローバル制限
  max_parallel_requests: 200

  # サービス別の予算・制限
  internal_user_budget:
    cs-ai:
      max_budget: 500000       # 月50万円
      max_parallel_requests: 100
      tpm_limit: 1000000       # 100万トークン/分
    faq-bot:
      max_budget: 250000       # 月25万円
      max_parallel_requests: 50
      tpm_limit: 500000
    code-review:
      max_budget: 350000       # 月35万円
      max_parallel_requests: 30
      tpm_limit: 300000

優先度キューイング

優先度サービス制限到達時の挙動
CriticalCS-AI他サービスを制限してでもリソース確保
HighFAQ Botキューイングして順次処理
NormalCode Reviewキューイング、必要に応じて遅延許容
Lowバッチ処理空きリソースがあるときのみ処理

監視と可視化

Gateway メトリクス

メトリクス説明アラート閾値
リクエスト数単位時間あたりのリクエスト数急増/急減を検知
エラー率4xx/5xxの割合> 5%
レイテンシ P9595パーセンタイルの応答時間> 10秒
キャッシュヒット率キャッシュから応答した割合< 10%(想定以下)
フォールバック率フォールバックが発動した割合> 10%
トークン使用量入出力トークンの合計日次予算の80%到達

まとめ

ポイント内容
ルーティングユースケース・複雑度・コスト・レイテンシに応じてモデルを振り分ける
フォールバックPrimary→Secondary→Tertiary→Degradedの段階的フォールバックを設計する
キャッシュ完全一致+セマンティックキャッシュでコスト削減とレイテンシ改善を両立
レート制限サービス別の予算・並列数・TPM制限で公平なリソース配分を実現する

チェックリスト

  • LiteLLMのルーティング設定方法を理解した
  • フォールバックチェーンの設計パターンを把握した
  • キャッシュ戦略(完全一致・セマンティック)の使い分けを理解した
  • サービス別のレート制限と優先度制御を設計できる

推定読了時間: 30分