---
id: llm-gateway
title: LLM Gateway 連携
category: advanced
order: 150
keywords: [LLM Gateway, LiteLLM, プロキシ, モデル, Virtual Keys]
---

## LLM Gateway とは

LLM Gateway は、複数の物理 GPU / llama-server バックエンドへの呼び出しを 1 か所に集約する OpenAI 互換のプロキシです。MAESTRO は自身を Gateway として動かせるほか、外部の LiteLLM Proxy を Gateway として使うこともできます。

主な価値:

- ルーティングの一元化: 複数バックエンドへ least-busy で振り分け、空いている GPU に送る
- 仮想キー管理: チームごとに発行する API キー (virtual key) で利用を分離・追跡
- 観測性: すべての LLM 呼び出しが 1 か所に集まる

直接接続 (各 worker が GPU を直に叩く) でも 1 インスタンス内のロードバランスはできますが、複数の MAESTRO が同じ GPU プールを共有すると互いの占有を知らずに衝突します。Gateway を間に挟むとこれを解消できます。個人利用や専有 GPU しか使わない場合は Gateway は不要です。

## どこで設定するか

admin は 設定 → LLM → Gateway Server で同一プロセス Gateway を設定します (admin 専用)。設定変更は hot reload され、サーバー再起動は不要です。設定画面全般は [設定](./17-settings.md) を参照してください。

このフォームには 2 つのブロックがあります。

- Enable Gateway トグル + ステータスバッジ
- Backends — 物理バックエンドのリスト
- Virtual Keys — 仮想キーの発行・rotate・revoke

`config.yaml` では `gateway` セクションに対応します (キーは snake_case)。

### Backends

バックエンドを 1 件以上追加します。各行のフィールド:

| フィールド | 意味 |
|---|---|
| `id` | バックエンド識別子 (例 `gpu-rtx-a`)。`x-aao-backend-id` / `/v1/models` に現れる |
| `endpoint` | llama-server の URL (例 `http://gpu-host:8080/v1`) |
| `model` | 厳密一致ルーティングに使うモデル名 (例 `qwen3:8b`) |
| `max_slots` | 同時スロット数 (llama-server の `-np` と合わせる) |
| `api_key` | バックエンドが bearer を要求する場合のみ (任意) |

注意: フォームに入力した `api_key` は `config.yaml` に平文で保存されます。`${VAR}` 形式の環境変数参照を使いたい場合は、フォームではなく `config.yaml` を直接編集してください (フォーム保存では literal 文字列になります)。

## Virtual Keys

Gateway を経由してアクセスするためのクライアント側 bearer キーです。Gateway Server フォーム内の Virtual Keys セクションで発行・管理します。

要点:

- 形式は `sk-aao-*`。発行時に生キーが一度だけ表示され、以後は再表示できません (失くしたら rotate / revoke + 再発行)
- DB には hash のみ保存される
- チーム単位で発行し、`allowed_models` でモデルを絞れる
- 月次 token 予算 (`tokens_budget`) と RPM レート制限 (`rate_limit_rpm`) を設定可能。超過時はそれぞれ HTTP 402 / 429 で拒否される
- rotate は新キー発行 + 旧キー失効をアトミックに行う

`config.yaml` の `gateway.virtual_keys[]` に書いたキーは起動時に DB へ idempotent に import されます (bootstrap / バックアップ用途)。通常の運用では UI / admin API での発行が推奨です。

## 外部 LiteLLM Proxy を使う場合

MAESTRO 内蔵 Gateway の代わりに、リファレンス実装の LiteLLM Proxy を Gateway として使うこともできます。クライアント側 (MAESTRO worker) は Gateway の URL と virtual key を worker の `endpoint` / `api_key` に設定するだけです。

LiteLLM の構築手順・モデル定義・料金体系・Enterprise 機能といった運用詳細はこのページには含めていません。`docs/aao-gateway-overview.md` (内蔵 Gateway の機能概要と運用パターン) および LiteLLM の公式ドキュメントを参照してください。

## 監視

Gateway / Worker いずれも Prometheus 互換の `/metrics` を公開できます (デフォルト有効)。team / backend / key prefix などのラベルで per-team の利用量・レイテンシ・バックエンド稼働を集計できます。`/metrics` は機密情報を含むため、内部ネットワークに限定して公開してください。

詳細な metric 一覧・Grafana クエリ例・scrape 設定は `docs/aao-gateway-overview.md` を参照してください。
