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/ は /v1、gemini/ は /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 は認識しないトップレベルのフィールドを破棄するため、generationConfig は extra_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,...imageSize は 512 / 1K / 2K / 4K、aspectRatio は 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.content は null になります:
{
"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_base は https://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.content は null です。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で確認できます- 命名規則の詳細は モデル命名規則 をご覧ください