Gateway とは
Gatewayは、複数のLLMプロバイダーを統一APIで扱えるRust製プロキシサーバーです。
OpenAI互換のAPIフォーマットで、クラウドサービスとローカルモデルを区別なく利用できます。
Unified API
Control all providers with the same standard interface. No more adapter hell.
High Performance
Built in Rust. Async processing and GPU acceleration for maximum throughput.
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
実装済みの機能
以下はすべて実装され、本番環境で使用可能です
6+ Providers Supported
LiveOpenAI, Anthropic, Google, xAI, OpenRouter, and MLX. Plus full local support via llama.cpp.
GPU Accelerated
LiveNative CUDA and Metal support through llama.cpp integration. Multi-GPU and Flash Attention ready.
Structured Output
LiveJSON Schema validation handled server-side. Ensure your LLM outputs valid JSON every time.
Tool Use (Function Calling)
LiveStandardized function calling support across providers, including local models.
Multimodal (Vision)
Process images with vision-capable models. Automatically detects mmproj for local models.
Streaming & WebSocket
Server-Sent Events (SSE) and WebSocket support compatible with OpenAI Realtime API.
Request Logging
Comprehensive SQLite logging for tokens, latency, and errors. View stats in the admin dashboard.
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で高速処理。
仕組み
アプリケーション
Gatewayに
1つのAPIコール
Gateway
指定されたプロバイダーに
ルーティング
任意のLLM
OpenAI, Claude,
Gemini, Grok, llama.cpp
コード例:モデル切り替え
技術仕様
アーキテクチャ
- 言語: 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 | 管理ダッシュボード |
環境変数設定
始め方
環境変数を設定
使用するプロバイダーのAPIキーを設定します。
Gatewayを起動
1コマンドで起動します。
APIリクエストを送信
統一APIで任意のプロバイダーを使用できます。
現在の制限と今後の計画
透明性を重視し、現状の制限を明示します
自動フォールバック機能
プロバイダー障害時の自動切り替え機能は未実装です。現在は手動でプロバイダーを切り替える必要があります。
スマートルーティング
タスク内容に応じた自動モデル選択機能は未実装です。アプリケーション側でロジックを実装する必要があります。
コスト分析ダッシュボード
トークン使用量は記録されますが、コスト計算や最適化提案機能は未実装です。手動で分析する必要があります。
Ollama統合
READMEに記載されていますが、現時点では未実装です。llama.cppは利用可能です。