LLMルーターとは?1つのAPIで複数モデルを使い分ける仕組み
LLMルーターとは、1つのAPIエンドポイントで受けたリクエストを、条件に応じて複数のモデルやプロバイダに振り分ける仕組みのことです。呼び出す側はモデルIDを文字列で指定するだけで、その裏でどこに繋ぐかはルーターが決めます。
「モデルは1つ決め打ちでいいのでは」と思うかもしれません。実測データを見ると、その判断がかなり高くつくことがわかります。
なぜルーティングが要るのか:同じ質問でコストが2,500倍違う
FastMetalは、43個の課題を全カタログモデルに投げた比較コーパスを運用しています。2026年8月31日時点で53モデル、1,950件の実測結果があります。
このうち日本語の課題20問について、各モデルの回答にかかった出力コストを計算しました。1問ごとに「最も安いモデル」と「最も高いモデル」を比べると、その比は 中央値で約2,500倍 でした。最小でも747倍、最大は8,566倍です。
たとえば「SQLクエリの最適化」という1問では、こうなりました。
| モデル | 出力トークン | 所要時間 | この回答のコスト |
|---|---|---|---|
mistral-voxtral-mini-3b-2507 | 1,108 | 4.6秒 | 0.0093円 |
solar-pro4 | 1,114 | 44.7秒 | 0.024円 |
llm-jp-3.1-8x13b-instruct4 | 917 | 7.9秒 | 0.072円 |
deepseek-v4-flash | 3,026 | 61.4秒 | 0.097円 |
gpt-oss-120b | 2,901 | 13.3秒 | 0.229円 |
gpt-5.6-luna | 2,059 | 16.3秒 | 0.442円 |
anthropic-claude-haiku-4-5 | 1,184 | 7.4秒 | 1.094円 |
gemini-3.7-flash | 1,924 | 13.4秒 | 1.289円 |
glm-5.2 | 2,525 | 16.7秒 | 1.985円 |
anthropic-claude-sonnet-5 | 3,005 | 34.0秒 | 5.370円 |
anthropic-claude-fable-5 | 1,834 | 43.6秒 | 16.387円 |
anthropic-claude-opus-5 | 6,441 | 90.2秒 | 28.775円 |
同じ1問に対して、0.0093円から28.775円まで開きました。約3,092倍です。
注目してほしいのは、この差が単価の差より大きいことです。カタログの出力単価そのものの開きは約1,064倍ですが、実際に払う金額の開きは2,500倍になります。高いモデルほど長く書く傾向があるので、単価の差に文章量の差が掛け算されるからです。
念のため補足すると、この表は回答の質を測ったものではありません。anthropic-claude-opus-5 の90秒と6,441トークンは、難しい問題に丁寧に答えた結果でもあります。ここで言いたいのは「安いほうがいい」ではなく、全部を最上位モデルに投げる運用は、意識している以上に高くつく ということです。
ルーティングの3つの層
「ルーティング」と一言で言っても、実際には性質の違う3つの判断が重なっています。
1. モデル選択
どのモデルに投げるか。タグ付けや分類のような定型処理は小さいモデル、設計判断や長文の推敲は大きいモデル、という振り分けです。上の表がそのまま根拠になります。
これは自動化することもできますが、まずは用途ごとに手で決めるだけで効果が出ます。3,092倍の差は、賢い自動ルーターがなくても回収できる大きさです。
2. プロバイダ選択
同じモデルでも、提供元によって量子化、コンテキスト長、稼働率が違います。「Kimi K3」と一口に言っても、どの事業者のエンドポイントに当たるかで実際の挙動が変わります。
この層はハマりどころが多く、FastMetalの運用で踏んだ具体例はOpenRouterのProvider Routingとはにまとめてあります。
3. フォールバック
呼び先が落ちていたとき、あるいはモデルが提供終了になったときにどうするか。
これは想像上のリスクではありません。FastMetalのカタログでも、プレビュー提供だったモデルが予告なく終了し、しばらくエラーを返し続けたことがあります。モデルIDを1箇所に決め打ちしていると、その日にアプリが止まります。
ゲートウェイとの違い
LLMゲートウェイとLLMルーターは、ほぼ同じ文脈で使われる言葉ですが、指している範囲が少し違います。
- ゲートウェイ は入り口そのもの。認証、課金、ログ、レート制限といった横断的な機能を持ちます
- ルーター はゲートウェイの中にある、振り分けのロジック部分です
実際の製品ではこの2つは分離していないことが多く、FastMetalも1つのエンドポイントで両方を担っています。用語としての整理はAIゲートウェイとはを参照してください。
実際に切り替えてみる
ルーティングの実装で最初にやるべきことは、モデルIDをコードから追い出すことです。OpenAI互換のAPIなら、モデル指定は文字列1つなので、切り替えは設定値の差し替えで済みます。
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://api.fastmetal.ai/v1",
)
ROUTES = {
"classify": "japan-gemma-4-31b",
"draft": "anthropic-claude-haiku-4-5",
"review": "anthropic-claude-sonnet-5",
}
def ask(task: str, prompt: str) -> str:
res = client.chat.completions.create(
model=ROUTES[task],
messages=[{"role": "user", "content": prompt}],
)
return res.choices[0].message.content
print(ask("classify", "この問い合わせを分類してください:請求書が届きません"))
ROUTES を辞書にしておくだけで、モデルの入れ替えがコード変更ではなく設定変更になります。フォールバックを足すときも、この形なら候補を配列にするだけです。
大事なのは、候補が 同じリクエスト形式で呼べること です。プロバイダごとにSDKが違うと、切り替えのたびに書き換えが発生して、結局誰も切り替えなくなります。
まとめ
- LLMルーターは、1つのエンドポイントからモデル・プロバイダ・フォールバック先を振り分ける仕組みです
- 同じ日本語の課題で、モデル間の実コスト差は中央値2,500倍でした。単価差(1,064倍)より大きいのは、高いモデルほど長く書くためです
- まずは用途ごとにモデルIDを辞書で持つだけでも効果があります
- モデルは終了します。フォールバック先を決めておいてください
FastMetalは1つのAPIキーでカタログ全モデルを同じ形式で呼べます。コスト面の打ち手をまとめて知りたい場合はLLM APIのコストを下げる7つの方法もどうぞ。