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",
"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_size、aspect_ratio、imageConfig など)は extra_body で渡す必要があります。
画像生成で 500 エラーが返される
modelフィールドにopenai/プレフィックスが使用されていることを確認max_tokensが設定されていることを確認(推奨:4096)- 4K 画像生成は時間がかかります(2-3 分)— LiteLLM Proxy のタイムアウト設定が十分か確認
画像データはどこにあるか
contentフィールド:Markdown 形式の画像を含む()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で確認できます - 完全な命名規則は モデル命名規則 を参照してください