> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mixroute.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LiteLLM

> Docker ComposeでLiteLLMをデプロイし、MixRouteにリクエストをルーティングする

## 概要

LiteLLMは、MixRouteの手前に内部プロキシとしてデプロイできます。アプリケーションはLiteLLMを呼び出し、LiteLLMはMixRouteにリクエストを転送するとともに、統合認証、モデル検出、ダッシュボード管理、仮想キー、および使用履歴を提供します。

LiteLLM公式のDocker Composeデプロイガイド：[https://docs.litellm.ai/docs/proxy/deploy](https://docs.litellm.ai/docs/proxy/deploy)

## Docker Composeでのデプロイ

3つのファイルを準備します。

```text theme={null}
.
├── .env
├── config.yaml
└── docker-compose.yml
```

`.env`:

```env theme={null}
MIXROUTE_API_KEY=<mixroute-api-key>
LITELLM_MASTER_KEY=<litellm-master-key>
LITELLM_SALT_KEY=<stable-random-salt-key>
POSTGRES_PASSWORD=<postgres-password>
```

| 変数 | 説明 |
| - | - |
| `MIXROUTE_API_KEY` | LiteLLMがMixRouteにリクエストを転送する際に使用するMixRouteのAPIキー |
| `LITELLM_MASTER_KEY` | APIアクセスとダッシュボードへのログインに使用するLiteLLM管理者キー |
| `LITELLM_SALT_KEY` | LiteLLMが保存済みキーを暗号化するために使用する、変更せずに保持するランダムな値 |
| `POSTGRES_PASSWORD` | Docker Compose内のPostgreSQLサービスのパスワード |

`docker-compose.yml`:

```yaml theme={null}
services:
  postgres:
    image: postgres:17
    container_name: litellm-postgres
    restart: unless-stopped
    environment:
      POSTGRES_DB: litellm
      POSTGRES_USER: litellm
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U litellm -d litellm"]
      interval: 5s
      timeout: 5s
      retries: 20
    volumes:
      - litellm-postgres-data:/var/lib/postgresql/data

  litellm:
    image: ghcr.io/berriai/litellm-database:main-stable
    container_name: litellm
    restart: unless-stopped
    depends_on:
      postgres:
        condition: service_healthy
    env_file:
      - .env
    environment:
      DATABASE_URL: postgresql://litellm:${POSTGRES_PASSWORD}@postgres:5432/litellm
      USE_PRISMA_MIGRATE: "True"
      STORE_MODEL_IN_DB: "True"
    command: ["--config", "/app/config.yaml", "--host", "0.0.0.0", "--port", "4000"]
    ports:
      - "4000:4000"
    volumes:
      - ./config.yaml:/app/config.yaml:ro

volumes:
  litellm-postgres-data:
```

| 変数 | 説明 |
| - | - |
| `DATABASE_URL` | ダッシュボード、仮想キー、利用記録、および永続化されるモデル設定用のPostgreSQL接続文字列 |
| `USE_PRISMA_MIGRATE` | `True`に設定すると、起動時にデータベースのマイグレーションを実行します。 |
| `STORE_MODEL_IN_DB` | `True`に設定すると、ダッシュボード/APIで行ったモデルの変更をPostgreSQLに永続化します。 |

LiteLLMを起動します。

```bash theme={null}
docker compose pull
docker compose up -d
```

## MixRouteに接続

MixRouteのベースURL:

```text theme={null}
https://api.mixroute.ai/v1
```

`config.yaml`でLiteLLMを設定します。

```yaml theme={null}
model_list:
  - model_name: o3-mini
    litellm_params:
      model: openai/o3-mini-2025-01-31
      api_base: https://api.mixroute.ai/v1
      api_key: os.environ/MIXROUTE_API_KEY
    model_info:
      mode: chat

  - model_name: openai/*
    litellm_params:
      model: openai/*
      api_base: https://api.mixroute.ai/v1
      api_key: os.environ/MIXROUTE_API_KEY

  - model_name: anthropic/*
    litellm_params:
      model: anthropic/*
      api_base: https://api.mixroute.ai
      api_key: os.environ/MIXROUTE_API_KEY

  - model_name: gemini/*
    litellm_params:
      model: gemini/*
      api_base: https://api.mixroute.ai/v1
      api_key: os.environ/MIXROUTE_API_KEY

litellm_settings:
  drop_params: true
  request_timeout: 600
  telemetry: false
  check_provider_endpoint: true

general_settings:
  master_key: os.environ/LITELLM_MASTER_KEY
  database_url: os.environ/DATABASE_URL
  store_model_in_db: true
```

| 設定 | 目的 |
| - | - |
| `openai/*` | OpenAI互換リクエストをMixRoute `/v1`にルーティングします。テキスト、埋め込み、画像、動画のAPIに適しています |
| `anthropic/*` | Anthropic互換リクエストをMixRoute経由でルーティングします。`/v1/messages`のパスはLiteLLMが処理します。 |
| `gemini/*` | MixRouteを通じてGemini互換リクエストをルーティングします |
| `check_provider_endpoint: true` | MixRoute `/v1/models`を通じてLiteLLMのモデル検出を有効にします |
| `drop_params: true` | 上流でサポートされていないパラメーターを除外し、プロバイダー間の互換性を高めます |
| `store_model_in_db: true` | ダッシュボードまたはAPIから行ったモデルの変更をPostgreSQLに保存します |
| `o3-mini` | 短いモデル名をMixRouteモデルIDに対応付けるエイリアスの例 |

`openai/`は、LiteLLMのOpenAI互換プロバイダーのプレフィックスです。上流のモデルがOpenAI製でなければならないという意味ではありません。

## クライアントの使用方法

OpenAI互換のベースURL：

```text theme={null}
<LITELLM_OPENAI_BASE_URL>
```

リクエストヘッダー：

```http theme={null}
Authorization: Bearer <LITELLM_API_KEY>
```

モデルを一覧表示：

```bash theme={null}
curl -sS <LITELLM_OPENAI_BASE_URL>/models \
  -H "Authorization: Bearer <LITELLM_API_KEY>"
```

リクエストでは、返されたモデルID（`openai/gpt-5.5`、`anthropic/claude-sonnet-5`、`gemini/gemini-2.5-flash`など）、またはエイリアス`o3-mini`を使用してください。

## 動作確認

```bash theme={null}
curl -sS <LITELLM_BASE_URL>/health/liveliness
```

```bash theme={null}
curl -sS <LITELLM_OPENAI_BASE_URL>/chat/completions \
  -H "Authorization: Bearer <LITELLM_API_KEY>" \
  -H "Content-Type: application/json" \
  --data '{
    "model": "openai/gpt-5.5",
    "messages": [{"role": "user", "content": "Return exactly OK"}],
    "max_tokens": 8
  }'
```

```bash theme={null}
curl -sS <LITELLM_BASE_URL>/v1beta/models/gemini/gemini-2.5-flash:generateContent \
  -H "Authorization: Bearer <LITELLM_API_KEY>" \
  -H "Content-Type: application/json" \
  --data '{
    "contents": [{"role": "user", "parts": [{"text": "Return exactly OK"}]}],
    "generationConfig": {"maxOutputTokens": 8}
  }'
```

Gemini `generateContent`は、LiteLLMのフロントエンドパス`/v1beta/models/gemini/<model-id>:generateContent`を使用します。上流のMixRouteのベースは`https://api.mixroute.ai/v1`のままです。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.