ローカルLLMをAPIゲートウェイで束ねて使う方法【LiteLLM】

ローカルLLM

ローカルLLMを何種類も使い分けていると、「アプリごとにAPIの呼び方が違う」「モデルを切り替えるたびにコードを書き直す」という問題が出てきます。LiteLLMは、こうした複数のLLMを一つのOpenAI互換エンドポイントにまとめるAPIゲートウェイです。

設定ファイルにOllamaやOpenAI・Anthropicをリストアップするだけで、どのモデルへの呼び出しも同じURL・同じコードで扱えるようになります。実際にUbuntu 24.04.4 LTSでインストールして動かしたところ、litellm 1.89.0 は141プロバイダー・2,784モデルのコストマップに対応していることが確認できました(2026-06-15 実測)。

本記事では、ubuntu:24.04 公式イメージにLiteLLMを実際にインストールし、ホストで動いているローカルOllamaをゲートウェイ経由で呼び出すところまでを、すべて実測ログ付きで解説します。

この記事のポイント

  • LiteLLMはOllama・OpenAI・Anthropicなど141プロバイダーをOpenAI互換APIに統合するゲートウェイ(litellm 1.89.0 実測)
  • Ubuntu 24.04でのインストールは pip install 'litellm[proxy]' 1コマンド(PEP 668対策でvenvを使う)
  • config.yaml にモデルを列挙 → litellm --config config.yaml --port 4000 で即起動
  • 既存のOpenAIクライアントコードを書き換えずにローカルLLMへ切り替えられる(実測: 応答0.47秒)
  • Swagger UIが http://localhost:4000/ で、Admin UIが /ui で確認できる

目次

  1. LiteLLMとは
  2. 動作確認済み環境
  3. インストール手順
  4. config.yaml を作成する
  5. プロキシを起動する
  6. OpenAI互換APIとして使う
  7. WebUI(Swagger UI / Admin UI)で確認する
  8. よくあるエラーと解決策
  9. まとめ

LiteLLMとは

LiteLLMはOSSのLLMプロキシです。OllamaやOpenAI・Anthropic・Google Gemini・AWS Bedrockなど100を超えるプロバイダーへのアクセスを、単一のOpenAI互換エンドポイントに変換します。実際にコンテナ内でバージョンを叩いて数えたところ、litellm 1.89.0 が内部に持つプロバイダーは141種、コストマップに登録済みのモデルは2,784種でした。

LiteLLM 1.89.0 が内蔵するプロバイダー数とコストマップ(Ubuntu 24.04 実測)
LiteLLM 1.89.0 が内蔵するプロバイダー数とコストマップ(Ubuntu 24.04 実測)

ゲートウェイがあると何がうれしいのか、具体的な機能を整理します。

なにができるか 具体例
複数LLMの統合 Ollama・OpenAI・Anthropicを同じURLで呼び出せる
コード変更ゼロ base_url="http://localhost:4000" を指すだけで切り替え
コスト管理 2,784モデルのコストマップ内蔵、トークン課金を自動集計
ロードバランシング 同一モデルを複数エンドポイントで束ねてラウンドロビン
レート制限 APIキーごとにTPM/RPMのしきい値を設定できる

ローカルLLMとクラウドLLMを同じコードベースで扱えるため、「開発中はOllama(無料)、本番はClaude API」といった使い分けが簡単になります。仕組みとしては、クライアントは常にLiteLLMプロキシだけを見ていて、プロキシが config.yaml の設定に従って転送先を振り分けます。

LiteLLM ゲートウェイの構造(クライアント→プロキシ→各バックエンドの概念図)
LiteLLM ゲートウェイの構造(クライアント→プロキシ→各バックエンドの概念図)

動作確認済み環境

  • OS: Ubuntu 24.04.4 LTS(Docker公式イメージ ubuntu:24.04 で実行)
  • Python: 3.12.3(venv内)
  • LiteLLM: 1.89.0(2026-06-15 実測)
  • バックエンド: ホストで稼働中のローカルOllama(llama3.2:1b / qwen2.5:0.5b / gemma3:1b)
  • 検証方法: docker run ubuntu:24.04 コンテナ内でpip installし、実出力を取得

注意

本記事のコマンドはUbuntu 24.04 LTS(Python 3.12.3)で検証しています。litellm 1.84以降は Requires-Python >=3.10,<3.14 のため、Python 3.13以上の環境では古い版しか入らないことがあります。バージョンを揃えたいときは、本記事と同じくUbuntu 24.04(Python 3.12)で動かすのが確実です。

インストール手順

①パッケージを更新して Python venv を準備する

まずパッケージリストを更新し、Python仮想環境を作ります。Ubuntu 24.04はPEP 668(外部管理環境)により、システムのPythonへ直接 pip install するとエラーになります。これを避けるため、必ずvenv(仮想環境)を作ってからインストールします。




ubuntu@linuxlab: ~
$ sudo apt update
$ sudo apt install -y python3-pip python3-venv
$ python3 -m venv /opt/litellm_env
$ source /opt/litellm_env/bin/activate
(litellm_env) $

②litellm[proxy] をインストールする

litellm[proxy][proxy] 部分は、プロキシモード(FastAPI+Uvicornサーバー)に必要な追加依存を含むエクストラです。この1コマンドでOpenAI互換サーバーを立ち上げられるようになります。

litellm proxy エクストラの pip install 実行ログ(Ubuntu 24.04.4 LTS 実測)
litellm proxy エクストラの pip install 実行ログ(Ubuntu 24.04.4 LTS 実測)

実際にubuntu:24.04コンテナで実行したログがこちらです。litellm --versionCurrent Version = 1.89.0 が返ってきました。




ubuntu@linuxlab: ~ (ubuntu:24.04)
(litellm_env) $ pip install ‘litellm[proxy]’
Collecting litellm[proxy]
Downloading litellm-1.89.0-py3-none-any.whl
Collecting fastapi (from litellm[proxy])
Collecting uvicorn (from litellm[proxy])

Successfully installed litellm-1.89.0 openai-2.41.1 fastapi-0.137.0 uvicorn-0.49.0 …
(litellm_env) $ litellm –version
LiteLLM: Current Version = 1.89.0

このとき同時にインストールされた主要な依存パッケージは以下のとおりです(ubuntu:24.04 コンテナ内、2026-06-15 実測)。LiteLLM単体ではなく、プロキシサーバー一式(FastAPI+Uvicorn)が揃うことが分かります。

litellm proxy で同時に入る主要パッケージのバージョン一覧(Ubuntu 24.04 実測)
litellm proxy で同時に入る主要パッケージのバージョン一覧(Ubuntu 24.04 実測)
パッケージ バージョン(実測) 役割
litellm 1.89.0 ゲートウェイ本体(OpenAI互換プロキシ)
openai 2.41.1 OpenAI SDK(API互換の基盤)
fastapi 0.137.0 プロキシのHTTPサーバー
uvicorn 0.49.0 ASGIサーバー(FastAPIの実行基盤)
httpx 0.28.1 バックエンドへのHTTP通信クライアント
pydantic 2.13.4 設定・リクエストのバリデーション

③Docker Compose で動かす場合

VPSやサーバーに常駐させたい場合は、公式Dockerイメージを使うほうが管理が楽です。




ubuntu@linuxlab: ~
$ docker pull ghcr.io/berriai/litellm:main-latest
$ docker run -d \
–name litellm_proxy \
-p 4000:4000 \
-v $(pwd)/config.yaml:/app/config.yaml \
-e LITELLM_MASTER_KEY=”sk-my-secret-key” \
ghcr.io/berriai/litellm:main-latest \
–config /app/config.yaml –port 4000

config.yaml を作成する

config.yamlがLiteLLMの心臓部です。ここに「どのモデル名で受け付けて、どのバックエンドに転送するか」を記述します。今回の検証では、ホストで動いているローカルOllamaの3モデルを列挙しました。




ubuntu@linuxlab: ~
$ cat config.yaml
model_list:
– model_name: local-llama # ← クライアントが呼ぶ名前
litellm_params:
model: ollama/llama3.2:1b # ← ollama/ プレフィックスで転送
api_base: “http://localhost:11434”
– model_name: local-qwen
litellm_params:
model: ollama/qwen2.5:0.5b
api_base: “http://localhost:11434”
– model_name: local-gemma
litellm_params:
model: ollama/gemma3:1b
api_base: “http://localhost:11434”
general_settings:
master_key: “sk-linuxlab-demo-key”

設定のポイントを整理します。

  • model_name: クライアントから呼び出すときに指定する名前(自由に決められる)
  • litellm_params.model: LiteLLM内部の転送先(プレフィックス + プロバイダーのモデル名)
  • api_base: Ollamaなどローカル起動のURLを指定(クラウドAPIには不要)
  • master_key: プロキシ自体の認証キー(Authorization: Bearer sk-... で認証)

クラウドのモデルを足す場合

同じ model_list に、OpenAIやAnthropicのモデルを並べて書くだけです。api_key を渡せばそのままクラウドへ転送されます。




ubuntu@linuxlab: ~
– model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: “sk-xxxx”
– model_name: claude-sonnet
litellm_params:
model: anthropic/claude-3-5-sonnet-20241022
api_key: “sk-ant-xxxx”

注意

LiteLLMをDockerコンテナで動かしているとき、localhost:11434 はコンテナ自身を指します。ホストのOllamaに繋ぐには api_basehttp://host.docker.internal:11434 に変えます(コンテナ起動時に --add-host=host.docker.internal:host-gateway を付けるのが確実)。今回の検証もこの方法でホストのOllamaに接続しました。

プロキシを起動する




ubuntu@linuxlab: ~
$ litellm –config config.yaml –port 4000 –host 0.0.0.0
LiteLLM: Proxy initialized with config, starting main application…
INFO: Started server process [1]
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:4000 (Press CTRL+C to quit)

起動後、ヘルスチェックとモデル一覧で稼働を確認します。実際に叩いたところ /health/liveliness"I'm alive!" を返し、/v1/models にはconfig.yamlの3モデルが並びました。




ubuntu@linuxlab: ~
$ curl http://localhost:4000/health/liveliness
“I’m alive!”
$ curl -s http://localhost:4000/v1/models -H “Authorization: Bearer sk-linuxlab-demo-key”
{“object”:”list”,”data”:[
{“id”:”local-llama”,”object”:”model”,…},
{“id”:”local-qwen”,”object”:”model”,…},
{“id”:”local-gemma”,”object”:”model”,…}
]}

OpenAI互換APIとして使う

LiteLLMプロキシへのリクエストはOpenAI APIのSDKやcurlがそのまま使えますbase_url をプロキシのURLに変えるだけです。実際に local-llama(=ローカルOllamaの llama3.2:1b)へ投げると、本物の応答が0.47秒で返ってきました。

LiteLLM ゲートウェイ経由でローカルOllamaを実呼び出しした実測ログ(Ubuntu 24.04)
LiteLLM ゲートウェイ経由でローカルOllamaを実呼び出しした実測ログ(Ubuntu 24.04)

①curlで呼び出す




ubuntu@linuxlab: ~
$ curl http://localhost:4000/v1/chat/completions \
-H “Content-Type: application/json” \
-H “Authorization: Bearer sk-linuxlab-demo-key” \
-d ‘{
“model”: “local-llama”,
“messages”: [{“role”: “user”, “content”: “what is Ubuntu?”}]
}’
{
“model”: “local-llama”,
“choices”: [{“message”: {“content”:
“Ubuntu is an open-source Linux distribution that allows users to
easily install and configure various applications.”}}],
“usage”: {“prompt_tokens”: 39, “completion_tokens”: 19, “total_tokens”: 58}
}

②PythonのOpenAI SDKで呼び出す

OpenAIの公式SDKでも、変えるのは base_urlapi_key の2行だけです。モデルを切り替えたいときは model="local-qwen" や、クラウドを登録していれば model="gpt-4o" に変えるだけで済みます。




ubuntu@linuxlab: ~
$ python3 – <<‘PY’
import openai
client = openai.OpenAI(
base_url=”http://localhost:4000/v1″, # LiteLLM プロキシ
api_key=”sk-linuxlab-demo-key”,
)
resp = client.chat.completions.create(
model=”local-llama”, # ← config.yaml の model_name
messages=[{“role”: “user”, “content”: “what is Ubuntu?”}],
)
print(resp.choices[0].message.content)
PY
Ubuntu is an open-source Linux distribution that allows users to easily …
著者アイコン
著者アイコン

正直、一番うれしいのは「Ollamaのコード」と「OpenAIのコード」を書き分けなくていいことです。開発中はローカルのllama3.2、本番はClaudeに切り替えるだけなので、コードが1本に保てます。日本語で投げた local-qwen も、ちゃんとゲートウェイ越しに日本語で返ってきました(軽量モデルなので内容は要確認ですが)。

WebUI(Swagger UI / Admin UI)で確認する

LiteLLMプロキシが起動している状態でブラウザから http://localhost:4000/ を開くと、OpenAPI仕様のSwagger UIが表示されます。タイトルに LiteLLM API 1.89.0 と出ており、利用可能なエンドポイントをブラウザ上で確認・テストできます。

LiteLLM Proxy の Swagger UI(http://localhost:4000/ をPlaywrightで実撮影)
LiteLLM Proxy の Swagger UI(http://localhost:4000/ をPlaywrightで実撮影)

また、http://localhost:4000/ui へアクセスすると、Admin UIのログイン画面が表示されます。デフォルトのユーザー名は admin、パスワードは config.yamlmaster_key(または環境変数 LITELLM_MASTER_KEY)です。ログインすると管理画面から使用状況の確認やモデルの管理ができます。

LiteLLM Admin UI のログイン画面(/ui をPlaywrightで実撮影)
LiteLLM Admin UI のログイン画面(/ui をPlaywrightで実撮影)

注意

Admin UIのデフォルト認証は master_key がそのままパスワードになります。VPSなど外部から見える環境で --host 0.0.0.0 起動するときは、master_key を推測されにくい値にし、必要ならファイアウォールで4000番を絞ってください。

よくあるエラーと解決策

①「externally-managed-environment」— venvを使っていない

エラー例

error: externally-managed-environment(This environment is externally managed)

解決策: Ubuntu 24.04ではPEP 668により、システムのPythonへ直接 pip install できません。python3 -m venv /opt/litellm_env で仮想環境を作り、source で有効化してからインストールします。

②「Connection refused」— プロキシが起動していない

エラー例

ConnectionRefusedError(111, 'Connection refused')

解決策: プロキシが起動しているか確認します。




ubuntu@linuxlab: ~
$ curl http://localhost:4000/health/liveliness
# 応答がなければ litellm –config config.yaml –port 4000 を再実行

③「APIConnectionError」— Ollamaに接続できない

エラー例

litellm.APIConnectionError: OllamaException - Failed to connect to http://localhost:11434

解決策: Ollamaが起動しているか、api_base のURLが正しいか確認します。LiteLLMをDockerで動かしている場合、localhost はコンテナ自身を指すので、ホストのOllamaには host.docker.internal を使います。




ubuntu@linuxlab: ~
$ curl http://localhost:11434/api/tags
# Ollamaが起動していれば {“models”: […]} が返ってくる
$ ollama serve &
# 起動していない場合は上記コマンドで起動する

④「AuthenticationError」— masterキーが一致しない

リクエストヘッダーの Authorization: Bearer に設定した値と、config.yaml の master_key(または環境変数 LITELLM_MASTER_KEY)が一致しているか確認します。

⑤起動時に「Port already in use」




ubuntu@linuxlab: ~
$ lsof -i :4000
# ポート4000を使っているプロセスを確認
$ kill -9 <PID>
# または別ポートで起動: litellm –config config.yaml –port 4001

まとめ

LiteLLMを使うと、ローカルLLM(Ollama)とクラウドAPI(OpenAI・Anthropic等)を単一のOpenAI互換エンドポイントに束ねることができます。今回はすべてubuntu:24.04の実環境で検証しました。

  • インストールは pip install 'litellm[proxy]' 1コマンド(Ubuntu 24.04 / Python 3.12.3でlitellm 1.89.0を確認)
  • Ubuntu 24.04ではPEP 668のためvenvを作ってからインストールする
  • config.yamlにモデルをリストアップし、litellm –config config.yaml –port 4000 で起動
  • OpenAIクライアントの base_url を変えるだけで既存コードがそのまま動く(実測: ローカルOllamaへ0.47秒で応答)
  • 141プロバイダー・2,784モデルに対応(litellm 1.89.0 実測)
  • Swagger UIは http://localhost:4000/、Admin UIは http://localhost:4000/ui

ローカルLLMを使った開発をさらに発展させたい場合は、VPS上でOllamaとLiteLLMを常時稼働させるのも選択肢の一つです。自宅PCを常時起動せずに、いつでもどこからでも自分のLLMゲートウェイへアクセスできるようになります。VPS選びの参考に、各社の比較記事もあわせてご覧ください。

本格的にVPSで運用するなら、東京リージョンがありGPUプランも選べるVPS比較ガイドもチェックしてみてください。

コメント

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