中級プラットフォーム / AI エンジニア

マルチベンダーの混在スタック:Opus が計画し、Qwen / DeepSeek が実行

エージェントの役割ごとに異なるベンダーのトップモデルを固定します。計画は Anthropic の Opus のまま、実行は Qwen3.8-Max / DeepSeek V4.1 Flash へ。クライアントの変更はゼロで、クロスプロトコル翻訳は自動です。

コミュニティが実際に不満を言っていること

Claude Code を Claude Opus でエンドツーエンドに動かすと高すぎます。一律に Sonnet へ落とすと計画やアーキテクチャ判断が目に見えて劣化し、手戻りのコストが増えます。開発者は他ベンダーのトップモデル(Qwen、DeepSeek)を混ぜたいのですが、クライアントは Anthropic プロトコルと claude-* のモデル名しか話せず、設定変更は全開発マシンに及ぶことになります。

さらに、計画ループ、メインの実行ループ、バッチのサブタスクでは、能力と価格に対する要件が本当に異なります。クライアント側の単一のモデル切り替えでは対応できません。

GateLLM の実現方法

GateLLM はイングレスゲートの後、ルーティングの前に、ID に基づいてモデル名を書き換えます。クライアントの変更はゼロです。計画とアーキテクチャ判断は claude-opus-5 のまま Anthropic へ直接向かい、メインの実行ループの claude-sonnet-* は DashScope の qwen3.8-max にマッピングされ、バッチのサブタスク(整形、コミットメッセージ、検索要約)は OpenAI 互換アップストリーム経由で deepseek-flash にマッピングされます。クロスプロトコル翻訳はゲートウェイが処理し、SSE ストリームと tool_call_id は往復で保持されます。

ルールはアクセスキーまたはキーグループに紐付き、チーム単位で有効になります。エグレスゲートは、対象がその ID の許可リストにあることを検証します。マッピングの設定は権限の付与ではありません。

実際に効果が出る 5 つのレバー

  • ID スコープのモデルマッピング:アクセスキー / キーグループに from → to を設定し、イングレス後・ルーティング前に書き換え。中間セグメントを捕捉する単一の * に対応し、ホットリロードされます
  • クロスプロトコル翻訳:Claude Code は Anthropic、Codex / OpenAI SDK は OpenAI で、ゲートウェイが DashScope / OpenAI / Gemini / Bedrock のアップストリームへ翻訳します。長時間の推論では :keep-alive、ストリーム断では _gateway_warning を付与
  • リクエストヘッダーによる条件付きルーティング:同じ from を X-Tenant などで異なる対象へ(完全一致 / 前方一致 / 正規表現 / 存在 / 不在)。条件付きルールを先に、無条件をフォールバックにし、最初の一致を採用。カナリアにも使えます
  • プランモード検出:Claude Code のプランモードは Plan mode is active / Exited Plan Mode のマーカーを挿入します。最後の位置を比較するスクリプトがルーティングを切り替え、計画は Opus、実行はコスト効率の良いモデルへ
  • 権限と可観測性:エグレスゲートが対象の許可リストを検証し(マッピング ≠ 権限)、ログのモデル列に MM タグとホバー時の元 → マッピング後を表示。統計と課金はマッピング後の実際のモデル名で配賦するため、混在スタックのコストを一目で比較できます
詳細手順:ID スコープのモデルマッピング設定(docs)

FAQ