LiteLLM プロキシ連携

概要

LiteLLM Proxy は広く使われている AI ゲートウェイ・ミドルウェアで、複数のプロバイダーのモデルを統一された OpenAI 形式で呼び出せます。本ガイドでは、LiteLLM Proxy に AIone をモデルプロバイダーとして設定する方法を説明します。

LiteLLM Proxy を使わず AIone API を直接呼び出す場合は、クイックスタート をご覧ください。

本ガイドの例は LiteLLM 1.101 に基づいています。


基本設定

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.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.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.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"

ポイント: モデル名の接頭辞と api_base はセット

LiteLLM は model フィールドの接頭辞でどのプロトコルで送るかを決め、api_base で送り先を決めます。api_base が AIone を指していれば、接頭辞が何であってもリクエストが AIone を迂回することはありません。

接頭辞 LiteLLM が送るプロトコル 対応する api_base 用途
openai/ OpenAI Chat(/chat/completions) https://api.aiin1.ai/v1 テキストモデル、画像モデルの簡易生成
gemini/ Gemini ネイティブ(/models/{model}:generateContent) https://api.aiin1.ai/v1beta 画像モデルで解像度・アスペクト比を指定する場合

api_base のパスが異なる点に注意してください。openai//v1gemini//v1beta に対応します。LiteLLM は api_base の後ろに残りのパスを自動で付加するため、gemini/ 接頭辞に /v1 を組み合わせると 404 になります。


Gemini 画像モデルの設定

Gemini 画像モデルの解像度とアスペクト比は Gemini ネイティブのパラメータ generationConfig.imageConfig で渡すため、LiteLLM では gemini/ 接頭辞 + /v1beta を使います:

model_list:
  - model_name: gemini-image
    litellm_params:
      model: gemini/gemini-3.1-flash-image
      api_base: "https://api.aiin1.ai/v1beta"
      api_key: "sk-nex-your-key-here"

利用可能な画像モデルは「Gemini 画像生成」をご覧ください。よく使うのは gemini-3.1-flash-image(高速)と gemini-3-pro-image(品質が安定)です。

解像度とアスペクト比の指定

LiteLLM は認識しないトップレベルのフィールドを破棄するため、generationConfigextra_body に入れないと AIone に届きません。同等の 3 つの方法があります:

方法一: config.yaml でプリセット

解像度が固定の場合に適しており、クライアント側の変更は不要です:

model_list:
  - model_name: gemini-image-2k
    litellm_params:
      model: gemini/gemini-3.1-flash-image
      api_base: "https://api.aiin1.ai/v1beta"
      api_key: "sk-nex-your-key-here"
      extra_body:
        generationConfig:
          responseModalities: ["IMAGE"]
          imageConfig:
            imageSize: "2K"
            aspectRatio: "16:9"

方法二: リクエストごとに動的に渡す

リクエストごとに解像度が変わる場合に適しています:

{
  "model": "gemini-image",
  "messages": [
    {"role": "user", "content": "宇宙服を着た猫を描いて"}
  ],
  "extra_body": {
    "generationConfig": {
      "responseModalities": ["IMAGE"],
      "imageConfig": {"imageSize": "4K", "aspectRatio": "16:9"}
    }
  }
}

方法三: 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": "宇宙服を着た猫を描いて"}],
    extra_body={
        "generationConfig": {
            "responseModalities": ["IMAGE"],
            "imageConfig": {"imageSize": "2K", "aspectRatio": "16:9"},
        }
    },
)
 
for img in response.choices[0].message.images:
    data_url = img["image_url"]["url"]  # data:image/png;base64,...

imageSize512 / 1K / 2K / 4KaspectRatio は 14 種類に対応しています。取りうる値と実ピクセルの一覧は「Gemini 画像生成」をご覧ください。

省略形: サイズを指定せず画像が出ればよい場合は、OpenAI 形式の "modalities": ["image"]responseModalities を代用できます。LiteLLM が自動で変換します。


参照画像の入力

OpenAI 標準のマルチモーダル messages.content で参照画像を渡すだけで、LiteLLM が Gemini ネイティブ形式に変換します:

{
  "model": "gemini-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "この画像の背景を星空に変えて"},
        {
          "type": "image_url",
          "image_url": {"url": "data:image/png;base64,iVBORw0KGgoAAA..."}
        }
      ]
    }
  ],
  "modalities": ["image"]
}

外部 URL ではなく base64 データを直接渡すことを推奨します。一部の CDN(Alibaba Cloud CDN など)はホットリンク制限や形式変換を行うため、直リンクでは取得できない場合があります。base64 はリクエスト本文に直接埋め込まれるため、ネットワークや CDN のポリシーに影響されません。

参照画像は prompt_tokens に計上されます。


レスポンス形式

gemini/ 接頭辞で呼び出した場合、LiteLLM は画像を message.images[] に格納し、message.contentnull になります:

{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": null,
      "images": [
        {
          "type": "image_url",
          "index": 0,
          "image_url": {"url": "data:image/png;base64,iVBORw0KGgoAAA..."}
        }
      ]
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 2,
    "completion_tokens": 1120,
    "total_tokens": 1122,
    "completion_tokens_details": {"text_tokens": 0, "image_tokens": 1120}
  }
}

プログラムで処理する場合は message.images を直接読み、content を解析しないでください。usage.completion_tokens_details.image_tokens が画像出力トークン数であり、課金の根拠です。


完全な設定例

複数のモデル系列を含む LiteLLM Proxy の完全な設定例:

model_list:
  # === Claude 系列 ===
  - model_name: claude-opus-4-6
    litellm_params:
      model: openai/claude-opus-4-6
      api_base: "https://api.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.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.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.aiin1.ai/v1"
      api_key: "sk-nex-your-key-here"
 
  # === Gemini 画像(注意: gemini/ 接頭辞 + /v1beta)===
  - model_name: gemini-image
    litellm_params:
      model: gemini/gemini-3.1-flash-image
      api_base: "https://api.aiin1.ai/v1beta"
      api_key: "sk-nex-your-key-here"
 
  - model_name: gemini-image-pro
    litellm_params:
      model: gemini/gemini-3-pro-image
      api_base: "https://api.aiin1.ai/v1beta"
      api_key: "sk-nex-your-key-here"
 
  # 4K ワイド固定の専用エントリ
  - model_name: gemini-image-4k-wide
    litellm_params:
      model: gemini/gemini-3.1-flash-image
      api_base: "https://api.aiin1.ai/v1beta"
      api_key: "sk-nex-your-key-here"
      extra_body:
        generationConfig:
          responseModalities: ["IMAGE"]
          imageConfig:
            imageSize: "4K"
            aspectRatio: "21:9"

よくある質問

画像モデルが 404 Not Found を返す

gemini/ 接頭辞の api_basehttps://api.aiin1.ai/v1beta でなければなりません。/v1 やドメインのみを指定すると 404 になります。LiteLLM は api_base の後ろに /models/{model}:generateContent を付加するため、パスが一致しなくなります。

generationConfig が効かず、常に既定サイズで出力される

LiteLLM は認識しないトップレベルのフィールドを破棄します。generationConfig は必ず extra_body の中に置いてください:

  • config.yaml: litellm_params.extra_body.generationConfig
  • リクエスト本文: トップレベルの extra_body.generationConfig
  • Python SDK: extra_body={"generationConfig": {...}}

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

gemini/ 接頭辞で呼び出すと画像は message.images[] にあり、message.contentnull です。images を走査して image_url.url(data URI)を取り出してください。

LiteLLM Proxy のタイムアウト

高解像度の生成は時間がかかります。LiteLLM Proxy の設定でタイムアウトを延ばしてください:

litellm_settings:
  request_timeout: 600  # 秒

モデル名が存在しない

  • litellm_params.model の接頭辞の後ろは AIone が対応するモデル ID である必要があります。一覧は GET https://api.aiin1.ai/v1/models で確認できます
  • 命名規則の詳細は モデル命名規則 をご覧ください