← ディレクトリ設計 Claude Code統合 →

02 LLMルーティング — 複数LLMの使い分け設計

コストと品質を最適化するためのモデルルーティング設計パターン


なぜルーティングが必要か

最高品質のモデル(例: Claude Opus)をすべてのタスクに使うのは非効率です:

ルーティング設計で「タスクの重さに合ったモデル」を自動選択します。


3層ルーティング設計

タスク受信
    ↓
┌──────────────────────────────┐
│  Tier 1: 高品質モデル        │  複雑な設計・コードレビュー
│  (例: Claude Opus)           │  長文の文脈理解が必要なタスク
└──────────────┬───────────────┘
               │ 失敗 or コスト節約したい
               ↓
┌──────────────────────────────┐
│  Tier 2: バランス型モデル    │  通常の実装・質問応答
│  (例: Claude Sonnet)         │  多くの日常タスク
└──────────────┬───────────────┘
               │ 高速・大量処理が必要
               ↓
┌──────────────────────────────┐
│  Tier 3: 軽量モデル          │  要約・フォーマット変換
│  (例: Claude Haiku)          │  テストデータ生成・単純作業
└──────────────────────────────┘

自動委譲パターン

大量処理タスクは軽量モデルに自動委譲することでコストを削減:

タスク種別 推奨モデル 理由
要約・抽出 軽量 精度より速度とコストを優先
フォーマット変換 軽量 定型処理は高品質モデル不要
テストデータ生成 軽量 パターン生成は軽量モデルで十分
コードレビュー 高品質 見落としのない正確な判断が必要
アーキテクチャ設計 高品質 複雑なトレードオフの評価が必要
ドキュメント執筆 バランス 品質と効率のバランスが重要

ローカルプロキシパターン

注意: このパターンはWSL CLI版(Claude Code CLI)でのみ有効。 Windows Desktopアプリ版はエンドポイント変更不可のため、GLM/MiniMaxはMCPサーバー経由で委譲する別の方法を使う。

Claude Code CLIから複数のAPIプロバイダーを透過的に切り替えるには:

Claude Code CLI(WSL)
    ↓ HTTP
localhost:8787 (ローカルプロキシ / glm-rate-proxy)
    ↓
    ├── 通常時 → ZAI API (GLM-5.1)
    ├── ピーク時 → MiniMax API
    └── 429/5xxエラー時 → MiniMax API(フォールバック)

⚠️ 重要な制限: コンテキストウィンドウが上限に達した場合、Claude Code本体がAPIリクエストを送る前にエラー判定するため、プロキシに届かずフォールバックも発動しない。早めの /compact / /new-session が必要。

実装例(概念):

# proxy.py
import time
from fastapi import FastAPI

app = FastAPI()

def get_provider():
    hour = time.localtime().tm_hour
    if 15 <= hour < 19:          # ピーク時間帯
        return "provider_b"       # コスト削減プロバイダー
    return "provider_a"           # 通常プロバイダー

@app.post("/v1/messages")
async def route_message(request):
    provider = get_provider()
    return await forward_to(provider, request)

メリット:


CLAUDE.mdでのルーティング設定

## LLM利用ポリシー
- デフォルト: Claude Sonnet(バランス型)
- 複雑なタスク: ユーザー許可後にOpusを使用
- 大量処理: Haiku等の軽量モデルに自動委譲
- バッジ表示: レスポンス冒頭に使用モデルを明示

レート制限への対処

## settings.jsonでの設定例
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:8787"
  }
}

モデル選択の判断フロー

新しいタスクが来た
    ↓
複雑さを判定
    ├── 高複雑度(設計・レビュー)→ 高品質モデル
    ├── 中複雑度(通常実装)    → バランス型
    └── 低複雑度(定型・大量)  → 軽量モデル
    ↓
コスト制約を確認
    ├── 制約あり → 一段階下のモデルを検討
    └── 制約なし → そのまま実行
    ↓
実行 → 結果を評価
    └── 品質不足 → より高品質なモデルで再実行

コスト最適化のポイント

  1. プロンプトキャッシュ活用: システムプロンプトをキャッシュ
  2. バッチ処理: 複数リクエストをまとめて送信
  3. モデル階層の明確化: タスク種別ごとに使用モデルをルール化
  4. 不要なコンテキストを削除: /compact で履歴を圧縮