メインコンテンツまでスキップ

AIゲートウェイ:LiteLLM、OpenRouter、Portkey、Vercel

中級

製品が複数モデルと会話するようになった途端、直接SDKアプローチは崩壊する。各プロバイダには独自のキー、独自のレート制限、独自の停止スケジュール、独自の請求書がある。AIゲートウェイは、コードとあらゆるモデル — Claude、GPT、Gemini、Llama、Kimi、DeepSeek、ローカルの Ollama — の間に位置する小さなインフラで、「N個の脆い統合」を「自分が制御する一つのエンドポイント」に変える小片だ。このページは、2026年に本番で実際にデプロイされている4つのゲートウェイ — LiteLLM、OpenRouter、Portkey、Vercel AI Gateway — を比較し、キラーワークフローを示す:Claude Codeを自前のゲートウェイに向け、単一のプロキシがチーム全体のルーティング、予算、ロギング、フォールバックを扱えるようにする。

What you'll learn
  • AIゲートウェイとは何か、それが解決する5つの問題(多くのプロバイダを一つのAPIに;フォールバック;仮想キー;支出上限;可観測性)を理解する
  • LiteLLM、OpenRouter、Portkey、Vercel AI Gateway をレイテンシ、価格、セルフホスト性、それぞれが輝く場面で比較する
  • ANTHROPIC_BASE_URL と仮想キーで Claude Code を自前の LiteLLM プロキシ経由に配線し、チームで共有制限とログを得る
  • OpenRouter のフォールバックを設定し、Claude の障害時に 5xx を表示する代わりに GPT や Gemini に静かに昇格させる
  • 2026年3月の LiteLLM サプライチェーンインシデントを理解し、本番でバージョンを安全にピン留めする

問題:プロバイダごとに直接SDK一つはスケールしない

最初の Claude 統合は2行の変更で済む:pip install anthropicANTHROPIC_API_KEYを設定、完了。二つ目 — 例えば Anthropic がスロットルするとき GPT-5.4 にフォールバックしたい — で抽象化が壊れる。今、リクエスト形状が異なる2つのSDK、2つのダッシュボード、2つの請求書、APIキーの2つの回転ケイデンス、2セットのリトライロジックがある。3つ目に Gemini、4つ目にローカルの Ollama を加えれば、あらゆる製品判断(「このチームを月$500に制限」「レビュー用に全プロンプトをログ」「顧客に独自キー持ち込みを許可」)がプロバイダごとに N 実装になる。

AIゲートウェイはその配管を単一の場所に集約する。具体的には、本番ゲートウェイは以下を提供する:

  • 全プロバイダに単一のリクエスト形状。 ほとんどのゲートウェイは OpenAI Chat Completions API(または Anthropic Messages、または両方)を話し、裏で実プロバイダに翻訳する。
  • フォールバックとルーティング。 最初に Claude を試す;429 や 5xx なら呼び出し元に知らせず GPT や Gemini に再試行する。レイテンシ上限やコンテンツモデレーション拒否についても同様。
  • 仮想キー。 ユーザーごと・サービスごとのキーを発行し、モデルのサブセット、独自予算、独自レート制限にマップする — 不正スクリプトがアカウント全体を排出できないように。
  • 支出上限とロギング。 各リクエストがタグ付け、価格付け、保存される。Anthropic や OpenAI に触れずにキーを取り消せ、何がどこに送られたかをコンプライアンスに証明できる。
  • キャッシング。 プロンプトキャッシング(完全一致)とセマンティックキャッシング(近似一致)が繰り返しトラフィックを無料ヒットに変える。

すべてのチームがこの5つ全てを必要とするわけではない。しかしそのうち2つがロードマップに乗った瞬間、ゲートウェイを運用する方がプロバイダごとに再発明するより安い。


本番で出荷される4つのゲートウェイ

「勝者」は一つではない — 4つのリーダーは設計空間の異なるコーナー(セルフホスト vs ホスト型、オープンソース vs プロプライエタリ、ミニマリスト vs コントロールパネル)を占めている。

ゲートウェイデプロイ価格モデル得意不向き
LiteLLMセルフホスト(Docker)またはSDK無料(OSS);Enterprise ティアで SSO/audit仮想キー、予算を持つチームプロキシ、トークンごとのマークアップなし、100+ プロバイダを一つの config で動作Postgres + Redis を運用する DevOps がないチーム
OpenRouterホスト型のみプロバイダ価格 + 約 5.5% クレジット購入手数料、リクエストごとのマークアップなし300+ モデルへのゼロオプスアクセスを一つのキーで;ユーザーがモデルを選ぶ製品に理想的セルフホストやデータレジデンシーが必要なコンプライアンス志向
PortkeyOSS ゲートウェイ(npx)またはホスト型クラウドOSS 無料;クラウドは使用量ティアサブミリ秒のゲートウェイレイテンシ、セマンティックキャッシング、ガードレール、カナリーテスト — 「コントロールパネル」の角度単に最もシンプルなキーアグリゲータを望むチーム
Vercel AI Gatewayホスト型のみプロバイダ価格、トークンマークアップなし;Vercel プランで無料AI SDK v5/v6 + Anthropic Messages + OpenAI Responses API 統合を望む、既に Vercel 上の開発者Vercel 外インフラまたはエアギャップ配備

最初に選ぶ重要な軸:セルフホスト vs ホスト型。データが VPC を出られない(規制業界、EU レジデンシー、企業プライバシーレビュー)なら、セルフホスト可能なゲートウェイが必要 — LiteLLM または Portkey OSS。誰かに運用を任せたいなら、OpenRouter か Vercel AI Gateway がワンクリックだ。

第二の軸:実際にどれだけのコントロールプレーンが必要か。Kimi K3 と Claude と Grok を3回のサインアップなしで並べて試したい一人製品なら、OpenRouter が全ストーリーだ。財務がチーム別月次支出、セキュリティが回転付き仮想キー、プラットフォームが Grafana メトリクスを望む20人の組織なら、LiteLLM または Portkey で構築することになる。


キラーワークフロー:Claude Code を自前の LiteLLM プロキシに向ける

Claude Code の最大の秘密は、ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKENを尊重することだ。それらをゲートウェイに設定すると、Claude Code はapi.anthropic.comに直接話しかけるのをやめる — あなたのプロキシに話しかけ、それがあなたが制御する認証で Anthropic(または他のどこか)に転送する。チームにとって、これは3つを同時に変える:

  • 開発者ごとに共有仮想キー一つ。 プロキシ UI でキーを発行・取り消しできる。.env ファイルに共有ルート認証情報はない。
  • 開発者ごとの予算とログ。 プロキシがすべてのリクエストにタグ付けするので、「昨日誰が$300使ったか」はインシデントではなくデータベースクエリだ。
  • モデルエイリアシング。 プロキシでclaude-sonnet-4-6をピン留めできるので、モデル非推奨化は1行の config 変更で、リポジトリ全体の grep ではない。

3ステップで最小プロキシを起動:

Guided walkthrough1 of 3
  1. 新しい venv または uv 経由で: uv tool install 'litellm[proxy]'。これはクライアント SDK と並んでゲートウェイサーバー(FastAPI + admin UI)を引き入れる。

これを動作させる config ファイル:

config.yaml — LiteLLM 背後の Claude Sonnet/Opus/Haiku

model_list:
- model_name: claude-opus-4-7
  litellm_params:
    model: anthropic/claude-opus-4-7
    api_key: os.environ/ANTHROPIC_API_KEY
- model_name: claude-sonnet-4-6
  litellm_params:
    model: anthropic/claude-sonnet-4-6
    api_key: os.environ/ANTHROPIC_API_KEY
- model_name: claude-haiku-4-5-20251001
  litellm_params:
    model: anthropic/claude-haiku-4-5-20251001
    api_key: os.environ/ANTHROPIC_API_KEY

litellm_settings:
master_key: os.environ/LITELLM_MASTER_KEY
# Optional: enable exact-match prompt caching
cache: true
cache_params:
  type: redis
  host: os.environ/REDIS_HOST

そして、任意の開発者のシェルから:

Claude Code をプロキシに向ける(開発者ごとの .env)

export ANTHROPIC_BASE_URL="https://llm.internal.example.com"
export ANTHROPIC_AUTH_TOKEN="sk-team-alice-9f4c..."   # a VIRTUAL key issued by the proxy

# now every Claude Code call goes through YOUR gateway
claude --model claude-sonnet-4-6

非自明な勝ち筋は仮想キーだ。マスターキーは管理者専用で、決してノートPCに出荷されない。各開発者は仮想キーを得る — 許可されたモデルだけにマップされ、独自の月次予算を持ち、基盤 Anthropic キーを回転させずに数秒で取り消せる。ノートPCが失われれば、Postgres の1行を殺す — チーム全体のアクセスではない。

注意: 同じ env vars は Anthropic の Bedrock と Vertex 統合でも動作するが、実験的ベータ機能にはエッジケースがある。Bedrock 配備では、LiteLLM ドキュメントは~/.claude/settings.jsonCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1を設定してヘッダ互換性の問題を避けることを推奨している。


キラーワークフロー#2:OpenRouter による静かなフォールバック

何もホストしたくないなら、OpenRouter のフォールバック配列が「Claude が 429 を返したとき別のモデルに静かに再試行」への最短パスだ。順序付きリストを送れば、OpenRouter は上から下まで歩き、応答した最初のモデルを返す。

Claude → GPT → Gemini フォールバックを一つのリクエストで(OpenRouter)

import openai

client = openai.OpenAI(
  api_key="YOUR_OPENROUTER_KEY",
  base_url="https://openrouter.ai/api/v1",
)

response = client.chat.completions.create(
  model="anthropic/claude-sonnet-4.5",
  extra_body={
      # Ordered fallback. If the first model 429s, is down, or is
      # rejected by moderation, OpenRouter tries the next one.
      "models": [
          "anthropic/claude-sonnet-4.5",
          "openai/gpt-5.4",
          "google/gemini-2.5-pro",
      ],
  },
  messages=[{"role": "user", "content": "Explain B-trees in one paragraph."}],
)

# 'model' in the response tells you which one actually answered.
print(response.model, "->", response.choices[0].message.content)

初回の試みで人々が見逃す3点:

  • 請求は、頼んだモデルではなく応答したモデルに従う。 Claude が失敗し GPT-5.4 が応答したら、そのリクエストは OpenRouter の GPT-5.4 レートを支払う。
  • フォールバックは 5xx 以上でトリガーする。 レート制限、プロバイダダウン、コンテキスト長検証エラー、コンテンツモデレーション拒否のすべてが次のモデルに昇格する。最後は最も鋭いエッジ — あるプロバイダからの「モデレーション」拒否が、より寛容な別のものに静かにルーティングされることがあり、それが望みかどうかは別問題。フォールバックリストは ACL と同じ注意深さでレビューせよ。
  • modelsfallbacksは混在できない。 Anthropic 形式の Messages エンドポイントは異なるfallbacks配列を使う。同じリクエストで両方のキーを送ると 400 が返る。クライアントが話す形式を選んで固執せよ。

2026年3月の LiteLLM サプライチェーンインシデント:実際に何をすべきか

2026年3月24日 10:39 UTC、LiteLLM の2つの悪意ある PyPI リリース — v1.82.7 と v1.82.8 — が攻撃者によって公開された。攻撃者は LiteLLM の CI/CD パイプラインで動作するセキュリティスキャナTrivyの先行侵害を介してメンテナの PyPI 認証情報を盗んでいた。PyPI は 13:38 UTC(約3時間後)にパッケージを隔離した。露出ウィンドウ中、数万のダウンロードが発生した。ペイロードは永続化メカニズム(Python の呼び出しごとに実行され、認証情報を収穫し、systemd バックドアをインストールするlitellm_init.pthファイル)を持つ infostealer だった。帰属はTeamPCPとして追跡されるグループで、Trivy と Checkmarx KICS も侵害した。

任意の環境で LiteLLM を実行しているなら、これを一度適用し、プラットフォームプレイブックに保管せよ:

Guided walkthrough1 of 5
  1. v1.82.6 以前はクリーン。v1.83.0 以降(LiteLLM の再構築された CI/CD v2 パイプライン経由で公開)はクリーン。その間のものはアンインストールし、環境は汚染されたと見なせ。公式 Docker イメージ(ghcr.io/berriai/litellm)は侵害されていない — インシデントは PyPI のみ。

広い教訓は「LiteLLM を使うな」ではなく、「セキュリティスキャナを含むAIスタック内のあらゆる依存関係が配送ベクターになり得ると仮定せよ」だ。バージョンをピン留めし、イメージに署名し、ゲートウェイをモデルプロバイダのみに到達できるネットワークセグメントに配置せよ。


状況に応じた正しいゲートウェイを選ぶ

Guided walkthrough1 of 5
  1. 小規模チームで1〜2プロバイダ → ゲートウェイをスキップ;直接 SDK で十分。3+ プロバイダまたは「誰がキーを持つか」が重要なチーム → ゲートウェイ。DevOps とプライバシー要件があれば、LiteLLM または Portkey OSS をセルフホスト。他人に運用を任せたければ、OpenRouter(ホスト型のみ)または Vercel AI Gateway(そこにデプロイしていれば素晴らしい)。

本番で出荷される一般的な組み合わせ:

  • 一人開発者/プロトタイプ: OpenRouter 直接。一つのキー、300+ モデル、完了。
  • 小規模チーム、Claude ファースト: LiteLLM プロキシに Anthropic + 一つのフォールバックプロバイダ、エンジニアごとの仮想キー、Redis プロンプトキャッシング。
  • Vercel ネイティブ製品: Vercel AI Gateway と AI SDK;エキゾチックなモデル用に OpenRouter をprovider-optionsフォールバックとして追加。
  • 規制対象/EU: VPC 内セルフホスト LiteLLM または Portkey OSS を、前面に Presidio PII マスキング付きで(リダクションパターンはClaude + ローカルモデルを参照)。
  • 繰り返しトラフィックが多い AI 製品: Portkey(セマンティックキャッシングは Portkey 自身のケーススタディでチャット風ワークロードのコスト削減 30〜50% を一般的に駆動 — 見出し数値を信じる前に自分のトラフィックで検証せよ)。

ゲートウェイが解決しないこと

ゲートウェイはミドルウェアだ — モデルに到達する方法を変えるが、どのモデルが正しいかは変えない。2つのことがまだ本気の作業を必要とする:

  • プロンプトポータビリティ。 Claude、GPT、Gemini は同じプロンプトに異なる答えを返し、システムプロンプト規約は変わる。ゲートウェイはフォールバックプロバイダ用にプロンプトを書き換えない — それがモデル間のプロンプト移植Cross-AI translationの役目だ。
  • 評価。 ゲートウェイは同じリクエストで2つのモデルを A/B するのを容易にする。しかしどちらが実際にあなたのタスクで良かったかは教えられない。デフォルトを切り替える前に本物の評価を実行せよ(評価を参照)。

よくある間違いは、ゲートウェイをインストールして「マルチモデル」完了と見なすことだ。ゲートウェイはトランスポート層だ;ポータビリティと評価はプロダクト層だ。


自己チェック

0/5
  1. プロバイダを2つ超えて使うようになった時点で、アプリとモデルプロバイダの間にAIゲートウェイを置く主な理由は?
  2. ANTHROPIC_BASE_URL で Claude Code を LiteLLM プロキシに向ける。ANTHROPIC_AUTH_TOKEN は何でなければならないか?
  3. OpenRouter のフォールバック配列は、最初のモデルが失敗すると次のモデルに昇格する。以下のどれでトリガーするか?
  4. 本番で LiteLLM をインストールする必要がある。2026年3月のインシデント後に安全なバージョンはどれか?
  5. Vercel 上の一人開発者で、午後に Claude、GPT、Gemini を試したい。ベストフィットは?
AIゲートウェイ一覧
Enter キーまたはスペースキーでカードを裏返します。左右の矢印キーでカードを移動できます。用語を表示しました。
1 / 9
Key takeaways
  • AIゲートウェイはアプリと全モデルの間に欠けていたルータ — 仮想キー、予算、フォールバック、ロギング、キャッシングをプロバイダごとにNではなく単一の実装にするために存在する
  • まず 2 つの軸で選べ:セルフホスト vs ホスト型(LiteLLM/Portkey OSS vs OpenRouter/Vercel)、ミニマリスト vs コントロールパネル(OpenRouter/Vercel vs LiteLLM/Portkey)
  • Claude Code キラーワークフロー:ANTHROPIC_BASE_URL を自前の LiteLLM プロキシに向け、開発者ごとの仮想キーを発行 — チームはルート Anthropic キーに触れず共有制限、ログ、ワンクリック取り消しを得る
  • OpenRouter の models[] 配列は静かな Claude → GPT → Gemini フォールバックへの最短パスだが、モデレーション拒否もフォールバックトリガーであることに注意 — リストを ACL のようにレビューせよ
  • 2026年3月の LiteLLM サプライチェーン攻撃後、v1.82.6 以前、または v1.83.0+ にピン留めせよ;pip より署名 Docker イメージを優先;プロキシを egress 許可リスト化せよ
  • ゲートウェイはトランスポートで製品ではない — 到達できるモデルの数にかかわらず、プロンプトポータビリティと評価はまだ本気の作業を要する

出典と参考文献

このサイトの関連: Claude + ローカルモデル:ハイブリッドパターン · モデル間のプロンプト移植 · Cross-AI translation · 評価 · プロバイダ間の AI コスト