05 マルチLLMルーティング — 8プロバイダを使い分ける
AIには得意・不得意と料金があります。NexusCoreは8種類のAIプロバイダに対応し、仕事の種類ごとに最適なAIへ振り分ける仕組みを持ちます。
振り分けの考え方
flowchart TB
A["新しい仕事が来る"] --> B{"どんな種類?"}
B -->|"コードを書く"| C["得意なAIへ(高精度寄り)"]
B -->|"文章を要約する"| D["速く安いAIへ"]
B -->|"レビューする"| E["別系統のAIへ(書いたAIと被せない)"]
C --> F["共通の窓口が応答を統一 🔄"]
D --> F
E --> F
3つの設計ポイント
- 共通の窓口: どのAIを選んでも、フレームワーク内部では同じ形式で話せる。AIを替えても他の部分は壊れない
- 仕事別の振り分け: 設定ファイルで「コーディングはこのAI・レビューはこのAI」と指定できる
- 書く係と検品する係は別のAI: 同じAIに書かせて検品させると、「自分のコードだから正しい」という思い込みがAIにも起きるため
予算の見える化
AIの利用には料金がかかるため、使った分の記録と予算の上限管理もこの層で行います。高価なAIを大量に使う仕事と、安いAIで十分な仕事を区別するのがコスト設計の要です。
技術的な土台
<details><summary>▶ 技術的にどうなっているか</summary>
- 対応プロバイダ: OpenAI / Anthropic / Google / DeepSeek / GLM / MiniMax / Moonshot / OpenRouter の8系統
- プロファイル:
llm_profiles.pyに9種の用途プロファイル・task_model_map.pyでタスク種別→モデルを対応付け - 環境変数
NEXUS_TASK_MODEL_*でコミット済みコードを触らずにモデル配置を変更できる(デッドキー是正の実績あり) - RoutedLLM ラッパで予算チェック(BudgetManager)・トークン記録・JSONL呼び出しログを一元化
- フォールバック: 一次モデルが失敗したときの代替モデル設定・レート制限時のリトライは共通層(urllib3 Retry)で実装
</details>