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_ratio と image_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-preview、gemini-3-pro-image-preview-2k |
HD |
"4K" |
4096×4096 | gemini-3.1-flash-image-preview、gemini-3-pro-image-preview-4k |
超高解像度、生成時間が長い |
Gemini 3 Pro Image との違い:
gemini-3-pro-image-preview-2kと-4kは解像度がプリセットされた独立したモデル名で、image_sizeパラメータは不要です。gemini-3.1-flash-image-previewはimage_sizeパラメータで動的に解像度を切り替えます。
aspect_ratio — アスペクト比
出力画像のアスペクト比を制御します。指定なしの場合、モデルが自動的に決定します(通常 1:1)。
対応する値:
1:1、3:2、2:3、3:4、4:3、4:5、5:4、9:16、16:9、21:9、1:4、4:1、1:8、8: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",
"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 形式のテキストとインライン画像()、OpenAI spec 準拠 |
images |
array | プログラム抽出用の構造化画像データ。テキストのみのレスポンスには含まれません |
contentは常に文字列で、ユーザーへの直接表示に適しています- 画像をプログラム的に処理(保存、転送など)するには、
imagesフィールドを使用してください - 画像フォーマットは通常 JPEG(
data:image/jpeg;base64,...)です。実際のフォーマットはモデルが返す MIME タイプに依存します usageフィールドも返されるため、コンソールとレスポンスの両方で消費量を確認できます
制限事項と注意事項
/v1/chat/completionsのみ対応:Gemini 画像モデルは/v1/messages(Anthropic フォーマット)をサポートしていません- ストリーミングは擬似ストリーミング:
stream: trueに対応していますが、画像は生成完了後に単一の SSE イベントとして返されます(トークン単位のストリーミングではありません)。待機中は 10 秒ごとに keepalive ハートビートが送信されます - 画像は
imagesフィールドで返される:contentは常に文字列です。画像をプログラム的に処理するにはmessage.imagesフィールドを使用してください。content内の markdown を解析する必要はありません - モデル権限:API キーが対応する画像モデルへのアクセス権限を持っていることを確認してください
- タイムアウトとキープアライブ:4K 画像の生成には 2〜3 分かかる場合があります。4K リクエストには
"stream": trueの使用を強く推奨します——ゲートウェイが 10 秒ごとに keepalive ハートビートを送信し、中間ネットワーク機器(NAT/ファイアウォール/プロキシ)による TCP アイドル切断を防止します。また、クライアントの HTTP タイムアウトを 600 秒以上に設定してください image_sizeの大文字小文字:K は大文字にしてください("2K"、"4K")。小文字の"2k"は拒否されます。512 は K サフィックスなし- 解像度の指定方法の違い:
gemini-3.1-flash-image-preview:image_sizeパラメータで指定("512"/"1K"/"2K"/"4K")gemini-3-pro-image-preview:モデル名のサフィックスで指定(-2k/-4k)、またはベースモデル名でデフォルト 1K