Gemini 画像生成

概要

AIone は Gemini 画像生成モデルに対応しており、OpenAI Compatible の /v1/chat/completions エンドポイントから統一的にアクセスできます。

これらのモデルはゲートウェイ内部で自動的に Gemini ネイティブの画像生成パイプラインに切り替わり、OpenAI 互換のレスポンスフォーマットに変換して返します。そのためリクエスト方法は統一されたままですが、画像生成関連のパラメータを追加で使用できます。

画像モデル一覧

モデル 最大解像度 速度 特徴 解像度の指定方法
gemini-3.1-flash-image-preview 4K (4096×4096) 高速 コスパ最高、512/1K/2K/4K の 4 段階対応 image_size パラメータ
gemini-3-pro-image-preview 1K (1024×1024) 中速 デフォルト 1K、安定した品質 デフォルト
gemini-3-pro-image-preview-2k 2K (2048×2048) 中速 Pro 品質 + 2K 解像度 モデル名に内蔵
gemini-3-pro-image-preview-4k 4K (4096×4096) 低速 Pro 品質 + 4K 解像度 モデル名に内蔵
gemini-2.5-flash-image 1K (1024×1024) 高速 前世代 Flash、1K のみ

モデル名が不明な場合は、GET https://api.portal.aiin1.ai/v1/models および Portal のモデル一覧ページを基準にしてください。


Gemini 3.1 Flash Image 接続ガイド

gemini-3.1-flash-image-preview は現在最もコストパフォーマンスの高い画像生成モデルで、image_size パラメータにより 4 段階の解像度(512 〜 4K)をサポートしています。

デフォルト 1K 解像度

image_size を指定しない場合、デフォルトで 1K (1024×1024) の画像が生成されます:

curl https://api.portal.aiin1.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {"role": "user", "content": "かわいい猫を描いてください"}
    ],
    "max_tokens": 4096
  }'

2K HD 画像の生成

curl https://api.portal.aiin1.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {"role": "user", "content": "かわいい猫を描いてください"}
    ],
    "max_tokens": 4096,
    "image_size": "2K"
  }'

4K 超高解像度画像の生成

curl https://api.portal.aiin1.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {"role": "user", "content": "かわいい猫を描いてください"}
    ],
    "max_tokens": 4096,
    "image_size": "4K"
  }'

注意: 4K 画像の生成には 2〜3 分かかる場合があります。"stream": true の使用を強く推奨します——ゲートウェイが 10 秒ごとに keepalive ハートビートを送信し、中間ネットワーク機器(NAT/ファイアウォール/プロキシ)による TCP アイドル切断を防止します。また、クライアントの HTTP タイムアウトを 600 秒以上に設定してください。

カスタムアスペクト比 + 解像度

aspect_ratioimage_size は組み合わせて使用できます:

curl https://api.portal.aiin1.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-nex-your-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {"role": "system", "content": "あなたはイラストレーターです。バナーカバーに適した画像を出力してください"},
      {"role": "user", "content": "かわいい猫を描いてください"}
    ],
    "max_tokens": 4096,
    "image_size": "2K",
    "aspect_ratio": "16:9",
    "temperature": 0.8
  }'

OpenAI Python SDK の例

from openai import OpenAI
 
client = OpenAI(
    api_key="sk-nex-your-key-here",
    base_url="https://api.portal.aiin1.ai/v1",
)
 
# 2K 画像を生成
response = client.chat.completions.create(
    model="gemini-3.1-flash-image-preview",
    messages=[{"role": "user", "content": "かわいい猫を描いてください"}],
    max_tokens=4096,
    extra_body={
        "image_size": "2K",
        "aspect_ratio": "16:9",
    },
)
 
# レスポンスの処理
# content は文字列(markdown 形式のインライン画像を含む場合あり)
print(response.choices[0].message.content)
 
# 画像データは独立した images フィールドで返される(テキストのみの場合はなし)
images = getattr(response.choices[0].message, "images", None)
if images:
    for img in images:
        base64_data = img["image_url"]["url"]  # data:image/jpeg;base64,...

OpenAI Node.js SDK の例

import OpenAI from "openai";
 
const client = new OpenAI({
  apiKey: "sk-nex-your-key-here",
  baseURL: "https://api.portal.aiin1.ai/v1",
});
 
const response = await client.chat.completions.create({
  model: "gemini-3.1-flash-image-preview",
  messages: [{ role: "user", content: "かわいい猫を描いてください" }],
  max_tokens: 4096,
  // @ts-ignore — 非標準パラメータは extra body 経由で渡す
  image_size: "2K",
  aspect_ratio: "16:9",
});
 
const content = response.choices[0].message.content;
// content は文字列(markdown 形式のインライン画像を含む場合あり)
// 画像をプログラムで抽出するには response.choices[0].message.images を使用

画像パラメータ詳細

image_size — 解像度

出力画像の解像度を制御します。K は大文字にしてください。小文字は拒否されます。

ピクセル(正方形時) 対応モデル 備考
"512" 512×512 gemini-3.1-flash-image-preview 3.1 Flash のみ対応、サムネイル/下書き用
"1K" 1024×1024 全画像モデル デフォルト値(指定なし時)
"2K" 2048×2048 gemini-3.1-flash-image-previewgemini-3-pro-image-preview-2k HD
"4K" 4096×4096 gemini-3.1-flash-image-previewgemini-3-pro-image-preview-4k 超高解像度、生成時間が長い

Gemini 3 Pro Image との違い: gemini-3-pro-image-preview-2k-4k は解像度がプリセットされた独立したモデル名で、image_size パラメータは不要です。gemini-3.1-flash-image-previewimage_size パラメータで動的に解像度を切り替えます。

aspect_ratio — アスペクト比

出力画像のアスペクト比を制御します。指定なしの場合、モデルが自動的に決定します(通常 1:1)。

対応する値:

1:13:22:33:44:34:55:49:1616:921:91:44:11:88:1


汎用リクエストパラメータ

パラメータ 必須 説明
model string はい 画像モデル ID
messages array はい 会話メッセージの配列、OpenAI Chat Completions フォーマットに準拠
max_tokens integer 推奨 Gemini ネイティブの maxOutputTokens にマッピング、4096 推奨
image_size string いいえ 解像度、上の表を参照
aspect_ratio string いいえ アスペクト比、上の表を参照
temperature number いいえ 生成温度
top_p number いいえ 核サンプリング確率
top_k integer いいえ Top-K サンプリング
stream boolean いいえ 擬似ストリーミング、画像は生成完了後に一括返却

参考画像の入力

参考画像を渡す必要がある場合は、OpenAI スタイルのマルチモーダル messages.content を使用できます:

{
  "model": "gemini-3.1-flash-image-preview",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "この画像の構図を参考にして、窓辺に座る猫を描いてください"},
        {
          "type": "image_url",
          "image_url": {
            "url": "data:image/png;base64,iVBORw0KGgoAAA..."
          }
        }
      ]
    }
  ],
  "max_tokens": 4096,
  "image_size": "2K"
}

注意:

  • data: URI(base64)と https:// 公開 URL の両方をサポートしています
  • 公開 URL はゲートウェイが自動的にダウンロードし、Gemini ネイティブの画像入力に変換します(30 秒タイムアウト)
  • base64 形式を推奨:一部の CDN(Alibaba Cloud など)ではホットリンク防止やフォーマット変換の問題が発生する可能性があります。base64 が最も安定した方法です

レスポンスの説明

画像モデルのレスポンスには 2 つのフィールドがあります:content(文字列)と images(配列)。

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

モデルがテキストのみを返す場合(画像が生成されなかった場合)、通常のテキストモデルと同じレスポンスです:

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

画像を含むレスポンス

{
  "id": "chatcmpl-xxx",
  "object": "chat.completion",
  "model": "gemini-3.1-flash-image-preview",
  "choices": [
    {
      "index": 0,
      "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"
            }
          }
        ]
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 123,
    "completion_tokens": 456,
    "total_tokens": 579
  }
}

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

フィールド 説明
content string Markdown 形式のテキストとインライン画像(![image](data:...))、OpenAI spec 準拠
images array プログラム抽出用の構造化画像データ。テキストのみのレスポンスには含まれません
  • content は常に文字列で、ユーザーへの直接表示に適しています
  • 画像をプログラム的に処理(保存、転送など)するには、images フィールドを使用してください
  • 画像フォーマットは通常 JPEG(data:image/jpeg;base64,...)です。実際のフォーマットはモデルが返す MIME タイプに依存します
  • usage フィールドも返されるため、コンソールとレスポンスの両方で消費量を確認できます

制限事項と注意事項

  1. /v1/chat/completions のみ対応:Gemini 画像モデルは /v1/messages(Anthropic フォーマット)をサポートしていません
  2. ストリーミングは擬似ストリーミングstream: true に対応していますが、画像は生成完了後に単一の SSE イベントとして返されます(トークン単位のストリーミングではありません)。待機中は 10 秒ごとに keepalive ハートビートが送信されます
  3. 画像は images フィールドで返されるcontent は常に文字列です。画像をプログラム的に処理するには message.images フィールドを使用してください。content 内の markdown を解析する必要はありません
  4. モデル権限:API キーが対応する画像モデルへのアクセス権限を持っていることを確認してください
  5. タイムアウトとキープアライブ:4K 画像の生成には 2〜3 分かかる場合があります。4K リクエストには "stream": true の使用を強く推奨します——ゲートウェイが 10 秒ごとに keepalive ハートビートを送信し、中間ネットワーク機器(NAT/ファイアウォール/プロキシ)による TCP アイドル切断を防止します。また、クライアントの HTTP タイムアウトを 600 秒以上に設定してください
  6. image_size の大文字小文字:K は大文字にしてください("2K""4K")。小文字の "2k" は拒否されます。512 は K サフィックスなし
  7. 解像度の指定方法の違い:
    • gemini-3.1-flash-image-previewimage_size パラメータで指定("512" / "1K" / "2K" / "4K"
    • gemini-3-pro-image-preview:モデル名のサフィックスで指定(-2k / -4k)、またはベースモデル名でデフォルト 1K