Multiple AIs, One API. Costs Cut by 90%.

Switch from expensive cloud APIs to local models instantly. No code changes. OpenAI, Google, Anthropic, xAI, Ollama, llama.cpp—all through one unified endpoint.

See How Much You Can Save

Gateway とは

Gatewayは、複数のLLMプロバイダーを統一APIで扱えるRust製プロキシサーバーです。
OpenAI互換のAPIフォーマットで、クラウドサービスとローカルモデルを区別なく利用できます。

Unified API Diagram

Unified API

Control all providers with the same standard interface. No more adapter hell.

High Performance Diagram

High Performance

Built in Rust. Async processing and GPU acceleration for maximum throughput.

Local Execution Diagram

Local Execution

Integrated llama.cpp support for privacy-first, offline model execution.

Gatewayが解決する課題

従来の問題

  • プロバイダーごとに異なるAPI
    OpenAI、Anthropic、Googleそれぞれで実装が必要
  • モデル切り替えに時間がかかる
    コード修正、テスト、デプロイのサイクルが必要
  • ベンダーロックイン
    特定のプロバイダーに依存してしまう
  • ローカルモデルの統合が困難
    llama.cppなどのローカル実行は別途実装が必要

Gatewayの解決策

  • 統一されたAPI仕様
    OpenAI互換のAPIで全プロバイダーにアクセス
  • 環境変数で即座に切り替え
    リクエストのprovider/modelパラメータを変更するだけ
  • プロバイダー独立
    アプリケーションコードは変更不要で切り替え可能
  • llama.cpp完全統合
    GPU加速、ビジョンモデル対応、クラウドと同じAPI

実装済みの機能

以下はすべて実装され、本番環境で使用可能です

Multi-Provider Support

6+ Providers Supported

Live

OpenAI, Anthropic, Google, xAI, OpenRouter, and MLX. Plus full local support via llama.cpp.

GPU Acceleration

GPU Accelerated

Live

Native CUDA and Metal support through llama.cpp integration. Multi-GPU and Flash Attention ready.

Structured Output

Structured Output

Live

JSON Schema validation handled server-side. Ensure your LLM outputs valid JSON every time.

Tool Use

Tool Use (Function Calling)

Live

Standardized function calling support across providers, including local models.

Multimodal Vision
Live

Multimodal (Vision)

Process images with vision-capable models. Automatically detects mmproj for local models.

Streaming & WebSocket
Live

Streaming & WebSocket

Server-Sent Events (SSE) and WebSocket support compatible with OpenAI Realtime API.

Logging & Analytics
Live

Request Logging

Comprehensive SQLite logging for tokens, latency, and errors. View stats in the admin dashboard.

Model Caching
Live

Model Caching

Smart weak-reference caching keeps models ready for rapid re-use without wasting memory.

Gatewayを使うメリット

コスト最適化の柔軟性

Gateway自体は自動コスト最適化機能を持ちませんが、プロバイダー切り替えが容易なため、手動でコスト最適化戦略を実装できます:

  • シンプルなタスク → llama.cppでローカル実行(APIコスト $0)
  • 標準的なタスク → GPT-4o-mini($0.15/1M tokens)
  • 高度な推論 → Claude Opus 4($15/1M tokens)

アプリケーション側でタスクの種類を判断し、適切なモデルを選択することで、大幅なコスト削減が可能です。

柔軟な切り替え

プロバイダーの障害やメンテナンス時に、手動で別のプロバイダーに即座に切り替え可能。自動フォールバックは未実装ですが、リクエストパラメータを変更するだけで切り替えできます。

実験の高速化

複数モデルの性能比較が容易。providerとmodelパラメータを変えるだけで、GPT-4o、Claude、Gemini、ローカルモデルを試せます。コードの再デプロイは不要です。

プライバシーとセキュリティ

機密データを扱うタスクはllama.cppでローカル実行。データが外部に送信されません。一般的なタスクはクラウドAPIで高速処理。

仕組み

1

アプリケーション

Gatewayに
1つのAPIコール

2

Gateway

指定されたプロバイダーに
ルーティング

3

任意のLLM

OpenAI, Claude,
Gemini, Grok, llama.cpp

コード例:モデル切り替え

bash
# OpenAI GPT-4o curl -X POST http://localhost:8080/v1/responses \ -H "Content-Type: application/json" \ -d '{"provider": "openai", "model": "gpt-4o", ...}' # ローカルモデル(無料)- providerとmodelを変えるだけ curl -X POST http://localhost:8080/v1/responses \ -H "Content-Type: application/json" \ -d '{"provider": "llama", "model": "qwen3-14b", ...}' # Anthropic Claude - providerとmodelを変えるだけ curl -X POST http://localhost:8080/v1/responses \ -H "Content-Type: application/json" \ -d '{"provider": "anthropic", "model": "claude-opus-4", ...}'

技術仕様

アーキテクチャ

  • 言語: Rust(高性能、メモリ安全性)
  • フレームワーク: Axum(非同期HTTPサーバー)
  • ランタイム: Tokio(非同期ランタイム)
  • llama.cpp統合: C APIの静的リンク、CMakeビルド
  • ログ: SQLite (gateway.sqlite)

主要APIエンドポイント

POST /v1/responses LLM推論(OpenAI互換)
GET /v1/realtime WebSocket Realtime API
GET /v1/llama/models ロード済みモデル一覧
POST /v1/llama/models/load モデル事前ロード
GET /admin 管理ダッシュボード

環境変数設定

bash
# サーバー設定 export GATEWAY_HOST=0.0.0.0 export GATEWAY_PORT=8080 # APIキー(使用するプロバイダーのみ設定) export OPENAI_API_KEY="sk-..." export ANTHROPIC_API_KEY="sk-ant-..." export GOOGLE_API_KEY="AIza..." export XAI_API_KEY="xai-..." # llama.cpp設定 export LLAMA_MODEL_DIR="/path/to/models" export LLAMA_GPU_LAYERS=-1 # -1=全層GPU, 0=CPUのみ export LLAMA_FLASH_ATTN=on # Flash Attention有効化

始め方

1

環境変数を設定

使用するプロバイダーのAPIキーを設定します。

bash
export OPENAI_API_KEY="sk-..." export ANTHROPIC_API_KEY="sk-ant-..." export GATEWAY_PORT=8080
2

Gatewayを起動

1コマンドで起動します。

bash
cd apps/Gateway cargo run --release
3

APIリクエストを送信

統一APIで任意のプロバイダーを使用できます。

bash
curl -X POST http://localhost:8080/v1/responses \ -H "Content-Type: application/json" \ -d '{ "provider": "openai", "model": "gpt-4o-mini", "input": [{"type": "message", "role": "user", "content": "Hello"}] }'

次のステップ

ローカルモデルを追加(llama.cpp)

管理ダッシュボード(/admin)でログを確認

モデル選択戦略を最適化

詳細ドキュメント

現在の制限と今後の計画

透明性を重視し、現状の制限を明示します

計画中

自動フォールバック機能

プロバイダー障害時の自動切り替え機能は未実装です。現在は手動でプロバイダーを切り替える必要があります。

計画中

スマートルーティング

タスク内容に応じた自動モデル選択機能は未実装です。アプリケーション側でロジックを実装する必要があります。

計画中

コスト分析ダッシュボード

トークン使用量は記録されますが、コスト計算や最適化提案機能は未実装です。手動で分析する必要があります。

計画中

Ollama統合

READMEに記載されていますが、現時点では未実装です。llama.cppは利用可能です。

Gatewayを試してみる

オープンソースで無料。今すぐ始められます。

ExtendedLMホームへ