AI

LLM Gatewayツール比較:LiteLLM vs PortKey vs OpenRouter でAI APIを統合する

オープンソースラボ編集部2026年6月13日

LLM Gatewayツール比較:LiteLLM vs PortKey vs OpenRouter でAI APIを統合する

GPT-4・Claude・Gemini・Llama 3など数十のLLMを使うアプリケーションで、APIキー管理・コスト計測・ロードバランシング・フォールバック・レート制限・キャッシュを統一管理する**LLM Gateway(AIプロキシ)**が不可欠になっています。LiteLLM(OSS・最大シェア)・PortKey(フルマネージド+OSS)・OpenRouter(SaaSプロキシ)の3つが2026年のデファクトスタンダードです。

LLM Gatewayを使う理由

  • APIキー一元管理: 各LLMのAPIキーをGatewayが管理→アプリはGatewayの単一エンドポイントのみ
  • コスト最適化: リクエストのコスト計測・プロバイダー間ルーティング・セマンティックキャッシュでコスト削減
  • HA・フォールバック: OpenAI APIが落ちたらAnthropic Claudeに自動フォールバック→99.99%可用性
  • 観測性: すべてのLLMリクエストのログ・レイテンシ・トークン数・コストを一元可視化

主要ツールの概要

LiteLLM

2023年公開、Python製のOSSです。GitHubスター17k+。最大シェアのOSSLLMプロキシで、100+のLLMプロバイダー(OpenAI・Anthropic・Google・Azure・Ollama・Groq・Bedrock)をOpenAI互換のAPI形式に統一します。PythonライブラリとしてもProxyサーバーとしても使えます。

# docker-compose.yml: LiteLLM Proxy
version: "3.8"
services:
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    restart: unless-stopped
    ports:
      - "4000:4000"
    volumes:
      - ./litellm-config.yaml:/app/config.yaml
    environment:
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
      GOOGLE_API_KEY: ${GOOGLE_API_KEY}
      GROQ_API_KEY: ${GROQ_API_KEY}
      DATABASE_URL: postgresql://litellm:${DB_PASS}@postgres/litellm
      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}
    command: --config /app/config.yaml --port 4000 --detailed_debug

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: litellm
      POSTGRES_USER: litellm
      POSTGRES_PASSWORD: ${DB_PASS}

  redis:
    image: redis:7-alpine
# litellm-config.yaml: モデルルーティング・フォールバック設定
model_list:
  # OpenAI GPT-4o
  - model_name: gpt-4o
    litellm_params:
      model: openai/gpt-4o
      api_key: os.environ/OPENAI_API_KEY
      rpm: 500

  # Anthropic Claude(フォールバック用)
  - model_name: gpt-4o
    litellm_params:
      model: anthropic/claude-sonnet-4-6
      api_key: os.environ/ANTHROPIC_API_KEY
      rpm: 1000

  # Google Gemini
  - model_name: gemini-pro
    litellm_params:
      model: gemini/gemini-2.0-flash
      api_key: os.environ/GOOGLE_API_KEY

  # ローカルOllama(ゼロコスト)
  - model_name: llama3-local
    litellm_params:
      model: ollama/llama3.2
      api_base: http://ollama:11434

router_settings:
  routing_strategy: cost-based-routing
  enable_pre_call_checks: true
  retry_policy:
    TimeoutErrorRetries: 3
    RateLimitErrorRetries: 3
  fallbacks:
    - gpt-4o:
        - gpt-4o  # 自動フォールバック(1つ目が失敗→2つ目のgpt-4o=Claudeへ)

litellm_settings:
  success_callback: ["langfuse"]
  failure_callback: ["langfuse", "slack"]
  cache: true
  cache_params:
    type: redis
    host: redis
    port: 6379
# Python: LiteLLM経由でマルチプロバイダーLLMを呼び出す
from openai import OpenAI
import litellm
from litellm import completion, acompletion
import asyncio

# LiteLLM Proxy経由(既存OpenAIコードをURLだけ変更)
client = OpenAI(
    api_key='sk-your-litellm-master-key',
    base_url='http://localhost:4000/v1',
)

def chat_with_fallback(prompt: str, preferred_model: str = 'gpt-4o') -> str:
    '''フォールバック付きでLLM APIを呼び出す'''
    response = client.chat.completions.create(
        model=preferred_model,
        messages=[{'role': 'user', 'content': prompt}],
    )
    return response.choices[0].message.content

async def parallel_llm_comparison(prompt: str) -> dict:
    '''複数LLMの回答を並列で比較取得'''
    tasks = [
        acompletion(model='openai/gpt-4o', messages=[{'role': 'user', 'content': prompt}]),
        acompletion(model='anthropic/claude-sonnet-4-6', messages=[{'role': 'user', 'content': prompt}]),
        acompletion(model='gemini/gemini-2.0-flash', messages=[{'role': 'user', 'content': prompt}]),
    ]
    results = await asyncio.gather(*tasks, return_exceptions=True)
    return {
        'gpt-4o': results[0].choices[0].message.content if not isinstance(results[0], Exception) else str(results[0]),
        'claude': results[1].choices[0].message.content if not isinstance(results[1], Exception) else str(results[1]),
        'gemini': results[2].choices[0].message.content if not isinstance(results[2], Exception) else str(results[2]),
    }

def get_cost_summary() -> dict:
    '''今月のLLMコストをモデル別に取得(LiteLLM Proxy API経由)'''
    import requests
    headers = {'Authorization': f'Bearer sk-your-master-key'}
    resp = requests.get('http://localhost:4000/global/spend', headers=headers)
    return resp.json()

# 使用例
answer = chat_with_fallback('PythonでRustよりも優れている点を3つ挙げてください')
print(answer)

cost = get_cost_summary()
print(f'今月のLLM費用: ${cost.get("total_cost", 0):.2f}')

PortKey

2023年公開のOSSプロキシです(GatewayはOSS、フルマネージドSaaSあり)。GitHubスター7k+。AI Gatewayに特化した高機能プロキシで、LLMリクエストのA/Bテスト・セマンティックキャッシュ・Guardrails(プロンプトインジェクション検知・PII検出)・バジェット管理・仮想APIキーが特徴です。

# Python: Portkey SDKでLLMルーティング・A/Bテスト
from portkey_ai import Portkey

portkey = Portkey(
    api_key='pk-xxxxx',
    virtual_key='openai-virtual-key-xxxxx',  # 各プロバイダーのAPIキーをPortkey管理
)

# A/Bテスト: 50%の確率でGPT-4o vs Claude Sonnet
response = portkey.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Hello'}],
    config={
        'strategy': {'mode': 'ab_test'},
        'targets': [
            {'provider': 'openai', 'model': 'gpt-4o', 'weight': 0.5},
            {'provider': 'anthropic', 'model': 'claude-sonnet-4-6', 'weight': 0.5},
        ],
    },
)
print(response.choices[0].message.content)

OpenRouter

クラウドSaaSのLLMプロキシです(OSSなし)。最多200+モデルへの単一APIアクセスを提供し、コスト最適化ルーティング・Pay-As-You-Goモデルで手軽にマルチLLMプロバイダーを使えます。OSSではないですが比較のため掲載します。

# Python: OpenRouter APIを使う(OpenAI互換)
from openai import OpenAI

client = OpenAI(
    base_url='https://openrouter.ai/api/v1',
    api_key='sk-or-v1-xxxxx',  # OpenRouter APIキー
)

response = client.chat.completions.create(
    model='anthropic/claude-sonnet-4-6',  # OpenRouter経由でClaude使用
    messages=[{'role': 'user', 'content': 'Tell me about LLM gateways'}],
    extra_headers={'HTTP-Referer': 'https://myapp.example.com', 'X-Title': 'My App'},
)
print(response.choices[0].message.content)

機能比較表

比較項目LiteLLMPortKeyOpenRouter
OSSセルフホスト✅(OSS Gateway)❌ SaaSのみ
対応モデル数100+100+200+
セマンティックキャッシュ
Guardrails限定
GitHub Stars17k+7k+N/A

LLM Gatewayは/categories/llm-toolsの中核インフラとして、LlamaIndex・LangChainのRAGパイプラインからのLLM呼び出しをLiteLLM Proxy経由にするだけでコスト計測・フォールバック・キャッシュを自動適用できます。DevOpsカテゴリ/categories/devopsのKubernetes上でLiteLLM ProxyをDeploymentとして運用し、HorizontalPodAutoscalerで負荷に応じてスケールさせる大規模AI基盤構成が採用されています。

FAQ

Q. LiteLLMでOpenAIからAnthropicへのフォールバックを設定するには?

A. litellm-config.yamlのfallbacks設定でフォールバックチェーンを定義します。設定例: router_settings.fallbacksgpt-4o → claude-sonnet-4-6 → gemini-2.0-flashの順に自動フォールバック。条件別フォールバック: content_policy_fallbacks(コンテンツポリシー違反時)・context_window_fallbacks(コンテキスト長超過時)・TimeoutErrorRetries(タイムアウト時のリトライ回数)をそれぞれ設定。動作: ①OpenAI APIが503を返す→②自動的にAnthropicにリクエスト転送→③成功したらそのレスポンスを返す→④失敗したらGeminiへ。ログ: LangFuse・Heliconeなどの観測ツールと連携してフォールバック発生をトレース。

Q. LiteLLMでセマンティックキャッシュを使ってコストを削減するには?

A. Redisとのセマンティックキャッシュ(embedding類似度ベース)を設定してAPIコストを削減します。設定: litellm_settings.cache_params.type: semanticembedding_model: text-embedding-ada-002similarity_threshold: 0.95。効果: 「東京の天気は?」と「今の東京の気温は?」は意味が類似(コサイン類似度>0.95)→2回目は実際のLLM APIを呼ばずキャッシュ応答→費用ゼロ。コスト削減効果: ユースケースによって30〜70%のAPIコスト削減が報告されている。キャッシュ有効期間: ttl: 3600(1時間)→頻繁に変わる情報は短いTTLを設定。

Q. LiteLLMのバーチャルキー(Virtual Key)でチームごとにAPIコストを管理するには?

A. LiteLLM ProxyのVirtual Keyでチーム・プロジェクトごとに予算上限を設定します。①Admin UI(http://localhost:4000/ui)でVirtual Keyを発行→チームA・チームB・プロジェクトXに個別キーを渡す②各キーに予算上限設定: budget_id: team-a-budgetmax_budget: 50.0(月$50まで)・budget_reset_at: 2026-07-01T00:00:00Z③超過時: チームAが$50を超えるとBudgetExceededErrorを返す→チームBには影響なし④ダッシュボード: LiteLLM UI(またはGrafana連携)で各チームの消費コストをリアルタイム監視。

Q. LiteLLMをKubernetesで本番運用するには?

A. Helm Chartでの水平スケール・PostgreSQL + Redis・HTTPS Ingress・ReadinessProbeの設定が重要です。①helm repo add litellm https://helm.litellm.aihelm install litellm litellm/litellm --values values.yamlvalues.yaml: replicaCount: 3resources.requests.memory: 512Miimage.tag: main-latest③LoadBalancer Ingress + TLS証明書でHTTPS終端④readinessProbe: httpGet: path: /health/readinessで各Podの健全性チェック→HorizontalPodAutoscaler(minReplicas: 3maxReplicas: 10・CPU/QPSベース)でオートスケール⑤外部PostgreSQL(RDS/CloudSQL)とRedis ClusterをSTATEFULとして別管理→LiteLLM Podはステートレスで安全にスケール。

まとめ

ユースケース推奨ツール
OSS・セルフホスト・100+モデル・フォールバックLiteLLM
A/Bテスト・Guardrails・セマンティックキャッシュPortKey
セットアップ不要・200+モデル・SaaSOpenRouter

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。