どのプロバイダーもキーを発行します。3つ目を過ぎたあたりから、キーは便利な道具ではなくなり、構築して維持しなければならないシステムになり始めます。N個のプロバイダーがあり、それぞれに独自のベースURL、独自の認証ヘッダー、独自のレート制限セマンティクス、独自のエラーコード、独自の請求ページがあります。「ハードコードしたモデル」ではなく「利用可能な最良のモデル」にリクエストをルーティングしたいと思った瞬間、それはルーティングの問題になり、それを解決するのがゲートウェイです。
問題はAPIではなく、運用にある
生のAPI呼び出しは簡単です。複雑に積み重なるのは、その周辺のすべてです:
•認証情報の散在。 プロバイダーごとに1つのキー、それぞれ異なるスケジュールでローテーションされ、異なるシークレットマネージャーに保存される。
•レート制限。 各プロバイダーは異なる方法でスロットリングし、エラーレスポンスも一貫していないため、リトライロジックはそれぞれを特別扱いしなければならない。
•使用状況の可視性。 各プロバイダーが独自のダッシュボードを持つ。すべてを合わせた総支出を1か所で示す場所はない。
•フェイルオーバー。 プロバイダーAがダウンしたら、トラフィックをプロバイダーBに移すには、新しいキーと新しいエンドポイントで再デプロイする必要がある。
これらはどれもデモでは見えません。プロバイダーがダウンし、リトライキューが滞留している午前2時の本番環境で表面化します。
ゲートウェイとは実際に何なのか
ゲートウェイはアプリケーションとモデルプロバイダーの間に位置します。アプリは1つのエンドポイントに1つのキーで通信します。ゲートウェイは認証、ルーティング、レート制限、使用量の計測、フォールバックを処理します。コードから見ると、それはちょうど単一のLLM APIのように見えます。
+------------------+
| Your app |
+--------+---------+
| one key, one base URL
v
+--------+---------+
| LLM gateway |
| auth / routing |
| rate limiting |
| usage metering |
+--+-----+----+----+
| | |
v v v
Provider A B C
(GPT-4o) (DeepSeek) (Qwen)重要な設計上の決定は、ゲートウェイがインバウンド側でOpenAI互換プロトコルを話すことです。つまり、既存のSDKコードに新しいクライアントライブラリは不要です。ベースURLとキーを変更するだけで、通常どおりchat.completions.create呼び出しを書き続けられます。
1つのキー、1つのエンドポイント、多数のモデル
クライアント側の統合はこれだけです:
from openai import OpenAI
client = OpenAI(
base_url="https://api.token8341.com/v1",
api_key="sk-one-key-for-everything",
)
for model in ["gpt-4o", "claude-3-5-sonnet", "deepseek-chat", "qwen-max"]:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": "Reply with the word 'ok'"}],
)
print(model, "->", resp.choices[0].message.content)同じキーがカタログ内のすべてのモデルを認可します。4つのアカウントをプロビジョニングしたり、4つの残高を追跡したりする必要はありません。請求は1つの従量課金で、使用量はモデル別に分解されるため、トークンが実際にどこへ流れたかを確認できます。
ゲートウェイはまた、ルーティングをコード変更ではなく設定上の決定にします。大量トラフィックのレーンには安価なモデル、難しいレーンにはフロンティアモデルを使いたいですか?それは1か所でのマッピングです:
ROUTES = {
"summarize": "deepseek-chat",
"reason": "qwen-max",
"frontier": "gpt-4o",
}そしてフォールバックは、マルチベンダー統合ではなく、通常の制御フローになります:
def call_with_fallback(prompt, primary, backup):
try:
return ask(primary, prompt)
except Exception:
return ask(backup, prompt)ゲートウェイが必要なとき、必要でないとき
必要がないなら、ゲートウェイは引き受けるべきではないオーバーヘッドです。1つのプロバイダーと1つのモデルを使い、フェイルオーバー要件がないなら、直接キーを使うほうがシンプルで、それが正しい判断です。クリティカルパスに余分なホップと余分なベンダーを追加するにはコストがかかります。
ゲートウェイは、次の少なくとも1つが当てはまるときにその価値を発揮します:
•2つ以上のモデルを使い、それらを自由に切り替えたい。
•プロバイダーがダウンまたはレート制限されたときのフォールバックが必要。
•単一の請求と、モデル別の支出を確認できる単一の場所が欲しい。
•再デプロイせずに、ライブトラフィックでモデルをA/Bテストしたい。
これらのいずれかが当てはまるなら、運用上の節約は余分なホップを上回ります。適切に運用されたゲートウェイが実際に追加するレイテンシは数ミリ秒で、モデルの推論時間の隣では消えてしまうほど小さいものです。
マネージドかセルフホストか?
意図的に下す価値のある決定の1つは、独自のゲートウェイを運用するか、借りるかです。LiteLLMやone-apiのようなセルフホスト型ルーターは優れており、ルーティングテーブル、キー、ログを完全に制御できます。同時に、実行、監視、パッチ適用、高可用性維持が必要なサービスも抱えることになり、それはまさにあなたが手放そうとしていた運用上の負担です。
マネージドゲートウェイはこのトレードオフを逆転させます。内部の制御を手放す代わりに、それを運用しなくてよくなります:誰かがエンドポイントを稼働させ続け、上流のキーをローテーションし、プロバイダーの障害を吸収してくれます。小規模チームにとっては、通常それが正しい取引です。プラットフォームグループを抱える大規模チームにとっては、監査可能性だけを取ってもセルフホストの価値があるかもしれません。いずれにせよ、選択を可逆的に保つために、インバウンドの契約はOpenAI互換に保ちましょう。
SiCore TokenWorksはこのアイデアを中心に構築されています:1つのAPIキー、https://api.token8341.com/v1にある1つのOpenAI互換エンドポイント、そしてGPT-4o、Claude、Gemini、DeepSeek、Qwen、ERNIE、Doubao、Spark、Panguにまたがるカタログを、従量課金とモデル別に分解された使用量とともに提供します。