LLM Gateway on Ubuntu — 複数AIプロバイダーを統一プロキシで管理

ローカルLLM

動作確認済み環境

Ubuntu 24.04.4 LTS / Python 3.12.13(python:3.12-slim Docker イメージで実測)/ LiteLLM 1.89.3 / 2026-06-21 確認

「ChatGPT と Claude を同じコードで切り替えたい」「社内のアプリが OpenAI API に直結していてプロバイダーを変えづらい」— こういった悩みを一発で解決するのが LLM Gateway(LLMゲートウェイ)です。

本記事では、Ubuntu 24.04 LTS 上で最も普及している OSS の LLM ゲートウェイ「LiteLLM」のセットアップ手順を、インストールから systemd 常駐化まで解説します。クライアント側コードを一切変えずに、OpenAI・Anthropic・ローカルの Ollama を切り替えられるようになるのが目標です。なお、LiteLLM 1.89.3 と Python 3.12.13 の組み合わせを実際にインストールし、バージョンと起動オプションを確認しています。

この記事のポイント

  • LiteLLM は pip install 'litellm[proxy]' 一発でセットアップ可能
  • OpenAI・Anthropic・Ollama など 100+ プロバイダーを OpenAI 互換 API で統一
  • config.yaml にモデル名とAPIキーを書くだけで複数プロバイダーを管理
  • systemd で常駐化すれば VPS 再起動後も自動で起動する
  • LiteLLM UI(Web ダッシュボード)でリクエストログとコストをリアルタイム確認できる

目次

  1. LLM Gateway(LiteLLM)とは何か
  2. インストール手順
  3. config.yaml を書く
  4. 起動して動作確認
  5. LiteLLM UI でダッシュボードを見る
  6. systemd で常駐化する
  7. よくあるエラーと解決策
  8. まとめ

LLM Gateway(LiteLLM)とは何か

LLM ゲートウェイは、複数の AI プロバイダーへのリクエストを 一本の統一 API(OpenAI 互換フォーマット) で受け付け、背後でそれぞれのプロバイダー向けに変換・転送するプロキシです。

LiteLLM リクエストルーティングの仕組み(概念図)
LiteLLM リクエストルーティングの仕組み(概念図)

クライアント(Python スクリプトや LangChain アプリ)は http://localhost:4000 にリクエストを送るだけ。「モデル名」として gpt-4oclaude-haikullama3-local などを指定すれば、LiteLLM がそれぞれのプロバイダー API に振り分けてくれます。

LiteLLM の設計上、config.yaml の 1 行を書き換えるだけでプロバイダーを切り替えられます。本番コードを変えずに翌週から Anthropic Claude に全リクエストを流す、といった運用が可能です。

LiteLLM が対応するプロバイダー

LiteLLM 対応プロバイダー一覧(公式ドキュメント準拠)
LiteLLM 対応プロバイダー一覧(公式ドキュメント準拠)

OpenAI・Anthropic だけでなく、AWS Bedrock・Azure OpenAI・Google Gemini・Groq・ローカルの Ollama まで、2026年6月時点で 100 以上のプロバイダーとモデルに対応しています(LiteLLM 公式ドキュメント参照)。

インストール手順

手順1:前提パッケージを確認する

Python 3.10 以上と pip が必要です。Ubuntu 24.04 LTS には Python 3.12 が標準で入っています。




ubuntu@server: ~
$ python3 –version
Python 3.12.13
$ pip –version
pip 25.0.1 from /usr/local/lib/python3.12/site-packages/pip (python 3.12)

手順2:venv を作成してLiteLLMをインストールする

システム Python を汚さないよう、仮想環境(venv)を使います。

LiteLLM pip install 実測ログ
LiteLLM pip install 実測ログ



ubuntu@server: ~
$ python3 -m venv /opt/llmgw
$ /opt/llmgw/bin/pip install ‘litellm[proxy]’
Collecting litellm[proxy]
Downloading litellm-1.89.3-py3-none-any.whl
Collecting openai anthropic httpx uvicorn …
Successfully installed litellm-1.89.3 openai-… uvicorn-…
$ /opt/llmgw/bin/litellm –version
LiteLLM: Current Version = 1.89.3

注意

litellm[proxy] は依存パッケージが多く、インストールに数分かかります。pip のバージョンが古い場合は pip install --upgrade pip を先に実行してください。

config.yaml を書く

LiteLLM の動作は config.yaml で定義します。どのプロバイダーをどの仮想モデル名で呼ぶか、APIキーをどう渡すかをここに書きます。

config.yaml の基本形(設定サンプル)
config.yaml の基本形(設定サンプル)



ubuntu@server: ~ — /opt/llmgw/config.yaml
$ mkdir -p /opt/llmgw && cat > /opt/llmgw/config.yaml << 'EOF'
model_list:
– model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: “os.environ/OPENAI_API_KEY”

– model_name: claude-haiku
litellm_params:
model: anthropic/claude-haiku-4-5
api_key: “os.environ/ANTHROPIC_API_KEY”

– model_name: llama3-local
litellm_params:
model: ollama/llama3.2
api_base: http://localhost:11434

litellm_settings:
drop_params: true
max_budget: 10.0 # 月$10 上限

general_settings:
master_key: “os.environ/LITELLM_MASTER_KEY”
EOF

os.environ/OPENAI_API_KEY という書き方が LiteLLM の書式です。APIキーをファイルに直書きせず、環境変数から読み込むのがポイントです。

環境変数ファイルを用意する




ubuntu@server: ~
$ cat > /opt/llmgw/.env << 'EOF'
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxx
LITELLM_MASTER_KEY=sk-linuxlab-your-key
EOF
$ chmod 600 /opt/llmgw/.env

セキュリティ注意

.env ファイルには APIキーが含まれます。chmod 600 でオーナーのみ読み書きできるよう権限を制限してください。git 管理下に置く場合は .gitignore に追記を忘れずに。

起動して動作確認

手順3:LiteLLM プロキシを起動する

LiteLLM 1.89.3 起動コマンドオプション(--help 実測出力)
LiteLLM 1.89.3 起動コマンドオプション(–help 実測出力)

docker で litellm --help を実行して確認した主要オプションは上の図の通りです。--port でリッスンポートを指定します(デフォルト 4000)。設定ファイルは --config で渡します。




ubuntu@server: ~
$ source /opt/llmgw/.env
$ /opt/llmgw/bin/litellm –config /opt/llmgw/config.yaml –port 4000
# 起動成功すると Uvicorn が http://0.0.0.0:4000 でリッスン開始
# LiteLLM: Proxy initialized with Config のメッセージが表示される

手順4:curl で動作確認する

LiteLLM が起動したら、別ターミナルから curl でリクエストを送って確認します。OpenAI API と全く同じフォーマットです。




ubuntu@server: ~ (別ターミナル)
$ curl -s http://localhost:4000/v1/chat/completions \
-H “Authorization: Bearer sk-linuxlab-your-key” \
-H “Content-Type: application/json” \
-d ‘{“model”: “gpt-4o”, “messages”: [{“role”:”user”,”content”:”hello”}]}’
# OPENAI_API_KEY が正しければ OpenAI から応答が返る
# model を “claude-haiku” に変えれば Anthropic に自動でルーティング

モデルを claude-haiku に変えてもリクエスト形式は同じです。クライアント側コードの変更なしにプロバイダーを切り替えられる — これが LiteLLM ゲートウェイの本質です。

ヘルスチェック




ubuntu@server: ~
$ curl http://localhost:4000/health
# {“status”: “healthy”} が返れば起動成功

LiteLLM の機能と UI

LiteLLM には Web ダッシュボードが付属しており、http://localhost:4000/ui でリクエスト数・レイテンシ・コストをリアルタイムに確認できます。公式ドキュメント(docs.litellm.ai)には設定例・API リファレンス・各プロバイダーのパラメータ対応表が網羅されています。

LiteLLM Proxy クイックスタートガイド(docs.litellm.ai — Playwright 実撮影)
LiteLLM Proxy クイックスタートガイド(docs.litellm.ai — Playwright 実撮影)

クイックスタートガイドには config.yaml の最小構成・litellm --config コマンドの例・各プロバイダーへの切り替え方が順を追って説明されています。セットアップで詰まったときはまずここを参照するのが確実です。

LiteLLM Getting Started ドキュメント(docs.litellm.ai — Playwright 実撮影)
LiteLLM Getting Started ドキュメント(docs.litellm.ai — Playwright 実撮影)

PyPI 上の LiteLLM パッケージページ(pypi.org/project/litellm/)では最新バージョンと変更履歴が確認できます。2026年6月時点での最新安定版は 1.89.3(実測確認)でした。

LiteLLM PyPI ページ(pypi.org — Playwright 実撮影)
LiteLLM PyPI ページ(pypi.org — Playwright 実撮影)
著者アイコン
著者アイコン

公式ドキュメントによると、UI は /ui エンドポイントで提供され、モデル別のリクエスト数やレイテンシを確認できます。実際に localhost で起動する場合は http://localhost:4000/ui にアクセスします。

systemd で常駐化する

VPS を再起動しても LiteLLM が自動で起動するよう、systemd のサービスとして登録します。

手順5:専用ユーザーを作成する




ubuntu@server: ~
$ sudo useradd -r -s /bin/false -d /opt/llmgw llmgw
$ sudo chown -R llmgw:llmgw /opt/llmgw

手順6:systemd ユニットファイルを作成する




ubuntu@server: ~
$ sudo nano /etc/systemd/system/litellm.service



/etc/systemd/system/litellm.service
[Unit]
Description=LiteLLM LLM Gateway Proxy
After=network.target

[Service]
Type=simple
User=llmgw
WorkingDirectory=/opt/llmgw
ExecStart=/opt/llmgw/bin/litellm –config /opt/llmgw/config.yaml –port 4000
EnvironmentFile=/opt/llmgw/.env
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target

手順7:サービスを有効化・起動する




ubuntu@server: ~
$ sudo systemctl daemon-reload
$ sudo systemctl enable litellm
$ sudo systemctl start litellm
$ sudo systemctl status litellm
# Active: active (running) が表示されれば起動成功

よくあるエラーと解決策

①「Port 4000 is already in use」

ポート 4000 が他のプロセスに使われています。確認・終了するか、--port 8080 等で別ポートに変えます。




ubuntu@server: ~
$ sudo ss -tlnp | grep 4000
# 出力例: LISTEN 0 128 0.0.0.0:4000 … users:((“python3”,pid=XXXX,…))
$ sudo kill <表示された PID>

②「AuthenticationError: No API key provided」

環境変数が LiteLLM のプロセスに渡っていません。source /opt/llmgw/.env を実行してから再起動するか、systemd の EnvironmentFile= を確認してください。

③「LiteLLM: Model Not found」

config.yaml に書いた model_name と、リクエストで指定した model が一致していません。model_name: gpt-4o と書いたなら、クライアントでも "model": "gpt-4o" を指定します。

④ Ollama ローカルモデルへの接続失敗

Ollama が起動しているか確認します。LiteLLM と Ollama を別々に起動する必要があります。




ubuntu@server: ~
$ curl http://localhost:11434/api/tags
{“models”:[{“name”:”llama3.2:latest”,…}]}

まとめ

LiteLLM を Ubuntu 24.04 LTS 上でセットアップし、OpenAI・Anthropic・Ollama ローカルモデルを統一 API で扱えるゲートウェイを構築しました。

  • インストールは pip install 'litellm[proxy]' の一行
  • config.yaml でモデル名とプロバイダーを対応付け、APIキーは環境変数で管理
  • systemd に登録することで VPS 再起動後も自動起動
  • LiteLLM UI でリクエストログとコストをリアルタイム確認できる

本格的に VPS で運用するなら、ファイアウォールで 4000 番ポートを外部に開放せず、リバースプロキシ(Nginx 等)越しに HTTPS で公開するのがおすすめです。

VPS 選びに迷ったら、Ubuntu サーバー初期設定のまとめも参考にどうぞ。Docker ベースの LLM 環境については Ubuntu に Docker をインストールする手順をあわせて読むと理解が深まります。

コメント

タイトルとURLをコピーしました