LiteLLM Proxy 連携

概要

LiteLLM Proxy は、統一された OpenAI 互換形式で複数の API プロバイダーのモデルを呼び出せる AI ゲートウェイミドルウェアです。本ガイドでは、LiteLLM Proxy で AIone をアップストリームプロバイダーとして設定する方法を説明します。

LiteLLM Proxy を使用せず AIone API を直接呼び出す場合は、クイックスタート を参照してください。


基本設定

LiteLLM Proxy の config.yaml に AIone をプロバイダーとして追加します:

model_list:
  # Claude モデル
  - model_name: claude-sonnet-4-6
    litellm_params:
      model: openai/claude-sonnet-4-6
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # GPT モデル
  - model_name: gpt-5.4
    litellm_params:
      model: openai/gpt-5.4
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # Gemini テキストモデル
  - model_name: gemini-2.5-pro
    litellm_params:
      model: openai/gemini-2.5-pro
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"

重要:モデル名のプレフィックス

model フィールドには openai/ プレフィックスを使用する必要があります(例:openai/claude-sonnet-4-6)。AIone は OpenAI 互換エンドポイント /v1/chat/completions を提供しているためです。

anthropic/gemini/ プレフィックスを使用すると、LiteLLM は Anthropic / Google の公式 API に直接接続し、AIone をバイパスします。


Gemini 画像モデルの設定

Gemini 画像モデルでは、imageConfig などのカスタムパラメータを透過的に渡す必要があります。LiteLLM Proxy はデフォルトでは非標準フィールドを転送しないため、extra_body を使用して設定します。

方法 1:config.yaml でパラメータをプリセット

デフォルトパラメータが固定の場合に適しています:

model_list:
  - model_name: gemini-image
    litellm_params:
      model: openai/gemini-3-pro-image-preview
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
      extra_body:
        aspect_ratio: "1:1"
        image_size: "4K"

方法 2:リクエストボディで動的にパラメータを渡す

リクエストごとにパラメータを変更する場合に適しています。カスタムパラメータを extra_body に配置します:

{
  "model": "gemini-image",
  "messages": [
    {"role": "user", "content": "宇宙服を着た猫を描いて"}
  ],
  "max_tokens": 4096,
  "extra_body": {
    "image_size": "4K",
    "aspect_ratio": "16:9"
  }
}

ネストされた imageConfig 形式も使用できます。両方の書き方は同等です:

{
  "model": "gemini-image",
  "messages": [
    {"role": "user", "content": "宇宙服を着た猫を描いて"}
  ],
  "max_tokens": 4096,
  "extra_body": {
    "imageConfig": {
      "aspect_ratio": "16:9",
      "image_size": "4K"
    }
  }
}

方法 3:Python SDK で extra_body を使用

from openai import OpenAI
 
# LiteLLM Proxy に接続
client = OpenAI(
    api_key="sk-your-litellm-key",
    base_url="http://localhost:4000/v1",  # LiteLLM Proxy アドレス
)
 
response = client.chat.completions.create(
    model="gemini-image",
    messages=[{"role": "user", "content": "宇宙服を着た猫を描いて"}],
    max_tokens=4096,
    extra_body={
        "image_size": "4K",
        "aspect_ratio": "16:9",
    },
)
 
# テキスト内容
print(response.choices[0].message.content)
 
# 画像データ(存在する場合)
images = getattr(response.choices[0].message, "images", None)
if images:
    for img in images:
        base64_data = img["image_url"]["url"]  # data:image/jpeg;base64,...

モデル名の簡略化

解像度ごとに個別の LiteLLM モデルエントリを作成する必要はありません。1 つのモデル名を設定し、リクエストパラメータで解像度を制御できます:

model_list:
  # 1 つのモデル名で image_size パラメータで解像度を制御
  - model_name: gemini-image
    litellm_params:
      model: openai/gemini-3-pro-image-preview
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"

リクエスト時に extra_body で解像度を指定:

{"extra_body": {"image_size": "4K"}}

優先順位ルール: 解像度サフィックス付きモデル名(例:-4k)と image_size パラメータを同時に使用した場合、パラメータが優先されます。サフィックスは image_size が指定されていない場合のみ有効です。


参照画像の入力

参照画像を渡す場合(画像編集やスタイル転写など)、外部 URL ではなく base64 データの使用を推奨します

{
  "model": "gemini-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "背景を星空に変更して"},
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/jpeg;base64,/9j/4AAQ..."
          }
        }
      ]
    }
  ],
  "max_tokens": 4096,
  "extra_body": {"image_size": "2K"}
}

なぜ base64 を推奨するのか?

AIone サーバー(香港ノード)は、一部の CDN(Alibaba Cloud CDN など)からの画像ダウンロードでネットワーク問題やホットリンク防止制限に遭遇する場合があります。base64 はリクエストボディに画像を直接埋め込むため、ネットワークや CDN ポリシーの影響を受けず、最も安定した方法です。


レスポンス形式

AIone は Gemini 画像モデルのレスポンスを OpenAI 互換形式で提供します:

テキストのみのレスポンス

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "モデルのテキスト応答です"
    }
  }]
}

画像を含むレスポンス

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "生成した画像です:\n\n![image](data:image/jpeg;base64,/9j/4AAQ...)",
      "images": [
        {
          "type": "image_url",
          "index": 0,
          "image_url": {
            "url": "data:image/jpeg;base64,/9j/4AAQ...",
            "detail": "auto"
          }
        }
      ]
    }
  }]
}

2 つのフィールドの役割:

フィールド 説明
content string Markdown 形式のテキスト + 画像、OpenAI spec 準拠
images array プログラム抽出用の構造化画像データ

重要: LiteLLM の openai/ ハンドラーは純粋なパススルーモードで動作し、content から画像を自動抽出しません。アプリケーションで画像をプログラム的に処理する必要がある場合は、images フィールドを使用してください。


完全な設定例

複数のモデルタイプを含む完全な LiteLLM Proxy 設定:

model_list:
  # === Claude ===
  - model_name: claude-opus-4-6
    litellm_params:
      model: openai/claude-opus-4-6
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  - model_name: claude-sonnet-4-6
    litellm_params:
      model: openai/claude-sonnet-4-6
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # === GPT ===
  - model_name: gpt-5.4
    litellm_params:
      model: openai/gpt-5.4
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # === Gemini テキスト ===
  - model_name: gemini-2.5-pro
    litellm_params:
      model: openai/gemini-2.5-pro
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # === Gemini 画像 ===
  - model_name: gemini-image
    litellm_params:
      model: openai/gemini-3-pro-image-preview
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  - model_name: gemini-image-flash
    litellm_params:
      model: openai/gemini-3.1-flash-image-preview
      api_base: "https://api.portal.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"

よくある質問

extra_body パラメータが反映されない

正しいパススルー方法を確認してください:

  • config.yaml の場合litellm_params の下に extra_body を追加
  • リクエストボディの場合:トップレベルの extra_body フィールド内にパラメータを配置
  • Python SDK の場合extra_body={} パラメータを使用

LiteLLM はデフォルトで認識できないトップレベルフィールドを破棄します。すべての非標準パラメータ(image_sizeaspect_ratioimageConfig など)は extra_body で渡す必要があります。

画像生成で 500 エラーが返される

  • model フィールドに openai/ プレフィックスが使用されていることを確認
  • max_tokens が設定されていることを確認(推奨:4096)
  • 4K 画像生成は時間がかかります(2-3 分)— LiteLLM Proxy のタイムアウト設定が十分か確認

画像データはどこにあるか

  • content フィールド:Markdown 形式の画像を含む(![image](data:...)
  • images フィールド:構造化された base64 画像データを含む
  • LiteLLM の openai/ ハンドラーは画像を自動抽出しません — images フィールドを直接読み取ってください

LiteLLM Proxy のタイムアウト

4K 画像生成には 2-3 分かかる場合があります。LiteLLM Proxy 設定でタイムアウトを延長してください:

litellm_settings:
  request_timeout: 600  # 秒

リクエストで "stream": true の使用も推奨します。AIone ゲートウェイは 10 秒ごとに keepalive ハートビートを送信し、中間ネットワーク機器による接続切断を防ぎます。

モデル名が見つからない

  • litellm_params.model のモデル名は AIone がサポートするモデル ID と一致する必要があります
  • 完全なリストは GET https://api.portal.aiin1.ai/v1/models で確認できます
  • 完全な命名規則は モデル命名規則 を参照してください