|

解決 Nano Banana 2 圖片API報錯:3步切換 generateContent 正確調用格式

作者注:詳解 Nano Banana 2 圖片生成 API 報錯 not supported model for image generation 的根本原因,以及如何從 OpenAI 格式切換到 Google 原生 generateContent 格式正確調用

使用 Nano Banana 2 生成圖片時遇到 not supported model for image generation 報錯?這是目前開發者最常遇到的 Gemini 圖片 API 調用問題之一。本文將介紹報錯的根本原因和正確的調用方式,幫助你快速修復 Nano Banana 2 圖片 API 報錯。

核心價值: 讀完本文,你將理解 Gemini 圖片模型和 Imagen 模型的 API 調用差異,掌握 generateContent 端點的正確用法,3 步解決報錯問題。

<!– 標題 –> Nano Banana 2 圖片 API 報錯修復指南 從 OpenAI 格式切換到 generateContent 正確格式

<!– 分隔線 –>

<!– 左側:錯誤方式 –> &#10060; 錯誤方式

<!– 錯誤端點 –> POST /v1/images/generations { "model": "gemini-3.1-flash…" "prompt": "一隻可愛的橘貓…" }

<!– 錯誤響應 –> 500 Error not supported model for image generation

<!– 狀態標籤 –> &#128680; 請求失敗

<!– 右側:正確方式 –> &#9989; 正確方式

<!– 正確端點 –> POST /v1beta/models/…:generateContent { "contents": [{"parts": [ {"text": "一隻可愛的橘貓"}]}] "responseModalities": ["TEXT", "IMAGE"]

<!– 正確響應 –> 200 OK Base64 圖片數據 + 文字描述

<!– 狀態標籤 –> &#127912; 圖片生成成功

<!– 中間箭頭 –> &#10132;

<!– 底部說明 –> API易 apiyi.com | Nano Banana 2 圖片生成 API 調用指南


Nano Banana 2 圖片 API 報錯核心原因

要點 說明 解決方案
報錯信息 not supported model for image generation, only imagen models are supported 切換到 generateContent 端點
根本原因 OpenAI 格式端點只支持 Imagen 模型,不支持 Gemini 圖片模型 使用 Google 原生 API 格式
正確端點 /v1beta/models/{MODEL}:generateContent 替換 /v1/images/generations
必需參數 responseModalities: ["TEXT", "IMAGE"] 在 generationConfig 中設置

Nano Banana 2 圖片 API 報錯詳解

當你使用 OpenAI 兼容格式的 /v1/images/generations 端點調用 Nano Banana 2(gemini-3.1-flash-image-preview)或 Nano Banana Pro(gemini-3-pro-image-preview)時,系統會返回以下錯誤:

not supported model for image generation, only imagen models are supported
(request id: 20260315043447253411115cvUiXJMF)
new_api_error convert_request_failed, 500

這個報錯的核心原因在於:Gemini 圖片模型和 Imagen 模型是兩種完全不同架構的模型

  • Imagen 模型(如 imagen-3.0-generate-001)是專用圖片生成模型,使用 /v1/images/generations:predict 端點
  • Gemini 圖片模型(Nano Banana 系列)是多模態語言模型,能同時輸出文字和圖片,必須使用 :generateContent 端點

簡單來說,你用了"文生圖專用通道"去調用一個"多模態對話模型",格式不匹配所以報錯了。

<!– 標題 –> 圖片生成 API 調用路徑對比 不同模型類型 → 不同 API 端點

<!– 左側:模型分類 –> 模型類型

<!– Imagen 模型 –> Imagen 模型 imagen-3.0

<!– Gemini 圖片模型 –> Gemini 圖片模型 Nano Banana 系列

<!– 中間:API 端點 –> API 端點

<!– OpenAI 格式端點 –> OpenAI 格式端點 /v1/images/generations

<!– generateContent 端點 –> Google 原生端點 :generateContent

<!– 正確連線: Imagen → OpenAI 端點 –>

<!– 正確連線: Gemini → generateContent –>

<!– 錯誤連線: Gemini → OpenAI 端點 (紅色虛線 + 叉號) –>

<!– 紅色叉號 –> &#10007;

<!– 右側:結果 –> 調用結果

<!– 成功結果 1 –> &#9989; 200 成功

<!– 成功結果 2 –> &#9989; 200 成功

<!– 失敗結果 –> &#10060; 500 報錯 not supported model

<!– 連線:端點到結果 –>

<!– 底部總結區域 –>

<!– 關鍵信息卡片 –> &#128293; 報錯原因 Gemini 圖片模型是 多模態語言模型 不是專用圖片生成模型 無法用 OpenAI 圖片接口 進行調用

&#9989; 正確做法 使用 generateContent 端點 設置 responseModalities: [“TEXT”, “IMAGE”] 使用 contents + parts 請求結構

&#128161; 適用模型 Nano Banana 2 gemini-3.1-flash-image Nano Banana Pro gemini-3-pro-image 均需 generateContent

<!– 底部 –> API易 apiyi.com | 圖片生成模型 API 端點路徑對比


Nano Banana 2 圖片 API 正確調用格式

錯誤調用 vs 正確調用對比

對比項 ❌ 錯誤方式(OpenAI 格式) ✅ 正確方式(generateContent 格式)
API 端點 /v1/images/generations /v1beta/models/{MODEL}:generateContent
請求結構 prompt + size + n 參數 contents + generationConfig 結構
響應格式 圖片 URL 內聯 Base64 圖片數據
支持模型 DALL-E、Imagen 系列 Gemini 圖片模型(Nano Banana 系列)
輸出內容 僅圖片 文字 + 圖片(多模態輸出)

Nano Banana 2 圖片 API 錯誤請求示例

以下是會導致報錯的錯誤調用方式:

# ❌ 錯誤:使用 OpenAI 格式調用 Nano Banana 2
curl -X POST https://api.apiyi.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "prompt": "一隻可愛的橘貓在陽光下打盹",
    "size": "1024x1024",
    "n": 1
  }'
# 返回: not supported model for image generation

Nano Banana 2 圖片 API 正確請求示例

以下是正確的 generateContent 格式調用方式:

# ✅ 正確:使用 Google 原生 generateContent 格式
curl -X POST https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{
      "parts": [
        {"text": "一隻可愛的橘貓在陽光下打盹"}
      ]
    }],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"]
    }
  }'

🎯 技術提示: 通過 API易 apiyi.com 平臺調用 Nano Banana 2,無需單獨配置 Google Cloud 賬號,使用統一的 API Key 即可直接調用 generateContent 端點。


Nano Banana 2 圖片 API 快速上手

3 步修復 Nano Banana 2 圖片 API 報錯

第 1 步:更換 API 端點

將請求地址從 OpenAI 格式切換到 generateContent 格式:

# 錯誤端點
https://api.apiyi.com/v1/images/generations

# 正確端點(Nano Banana 2)
https://api.apiyi.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent

# 正確端點(Nano Banana Pro)
https://api.apiyi.com/v1beta/models/gemini-3-pro-image-preview:generateContent

第 2 步:修改請求體結構

從 OpenAI 的 prompt + size 參數,改爲 Google 原生的 contents + generationConfig 結構。關鍵參數:

  • contents.parts.text:圖片描述文本
  • generationConfig.responseModalities:必須設置爲 ["TEXT", "IMAGE"]

第 3 步:處理響應數據

generateContent 返回的圖片是 Base64 編碼的內聯數據,而非 URL。你需要從響應中提取並解碼圖片。

極簡 Python 示例

import requests
import base64

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com"  # API易統一接口

response = requests.post(
    f"{BASE_URL}/v1beta/models/gemini-3.1-flash-image-preview:generateContent",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    },
    json={
        "contents": [{"parts": [{"text": "一隻可愛的橘貓在陽光下打盹"}]}],
        "generationConfig": {"responseModalities": ["TEXT", "IMAGE"]}
    }
)

result = response.json()
for part in result["candidates"][0]["content"]["parts"]:
    if "inlineData" in part:
        img_data = base64.b64decode(part["inlineData"]["data"])
        with open("output.png", "wb") as f:
            f.write(img_data)
        print("圖片已保存爲 output.png")
    elif "text" in part:
        print("模型描述:", part["text"])

查看完整實現代碼(含錯誤處理和寬高比設置)
import requests
import base64
import os
from typing import Optional

def generate_image(
    prompt: str,
    model: str = "gemini-3.1-flash-image-preview",
    aspect_ratio: str = "1:1",
    output_path: str = "output.png",
    api_key: Optional[str] = None
) -> dict:
    """
    使用 Nano Banana 2 generateContent 端點生成圖片

    Args:
        prompt: 圖片描述
        model: 模型名稱
        aspect_ratio: 寬高比 (1:1, 16:9, 9:16, 4:3, 3:4)
        output_path: 輸出文件路徑
        api_key: API 密鑰

    Returns:
        包含文件路徑和模型描述的字典
    """
    api_key = api_key or os.getenv("APIYI_API_KEY")
    base_url = "https://api.apiyi.com"  # API易統一接口

    response = requests.post(
        f"{base_url}/v1beta/models/{model}:generateContent",
        headers={
            "Authorization": f"Bearer {api_key}",
            "Content-Type": "application/json"
        },
        json={
            "contents": [{"parts": [{"text": prompt}]}],
            "generationConfig": {
                "responseModalities": ["TEXT", "IMAGE"],
                "imageConfig": {"aspectRatio": aspect_ratio}
            }
        },
        timeout=60
    )

    if response.status_code != 200:
        raise Exception(f"API 請求失敗: {response.status_code} - {response.text}")

    result = response.json()
    candidates = result.get("candidates", [])
    if not candidates:
        raise Exception("未返回有效結果")

    output = {"text": "", "image_path": ""}
    for part in candidates[0]["content"]["parts"]:
        if "inlineData" in part:
            img_data = base64.b64decode(part["inlineData"]["data"])
            with open(output_path, "wb") as f:
                f.write(img_data)
            output["image_path"] = output_path
        elif "text" in part:
            output["text"] = part["text"]

    return output

# 使用示例
result = generate_image(
    prompt="一幅水墨風格的山水畫,遠處有薄霧繚繞的羣山",
    model="gemini-3.1-flash-image-preview",
    aspect_ratio="16:9",
    output_path="landscape.png"
)
print(f"圖片已保存: {result['image_path']}")
print(f"模型描述: {result['text']}")

建議: 通過 API易 apiyi.com 獲取 API Key,平臺提供免費測試額度,支持 Nano Banana 2 和 Nano Banana Pro 兩種 Gemini 圖片模型的 generateContent 調用。


Nano Banana 2 圖片 API 模型對比

瞭解不同圖片生成模型的 API 調用方式差異,可以幫助你避免類似的格式錯誤:

模型 代號 API 端點 調用格式 可用平臺
Nano Banana 2 gemini-3.1-flash-image-preview :generateContent Google 原生格式 API易等平臺
Nano Banana Pro gemini-3-pro-image-preview :generateContent Google 原生格式 API易等平臺
Imagen 3 imagen-3.0-generate-001 /v1/images/generations:predict OpenAI 兼容格式 API易等平臺
DALL-E 3 dall-e-3 /v1/images/generations OpenAI 格式 API易等平臺

Nano Banana 2 圖片 API 關鍵參數說明

<!– 標題 –> generateContent 請求結構詳解 Nano Banana 2 圖片生成 API 核心參數層級關係

<!– 左側:JSON 結構樹 –> 請求體 JSON 結構

<!– 根節點 –> {

<!– contents 節點 –> "contents" : [{

<!– parts 節點 –> "parts" : [{

<!– text 參數 –> "text" : "提示詞"

<!– inlineData 參數 (可選) –> "inlineData" (可選)

}] }],

<!– generationConfig 節點 –> "generationConfig" : {

<!– responseModalities (必需) –> "responseModalities" : ["TEXT", "IMAGE"] &#9888; 必需!

<!– imageConfig (可選) –> "imageConfig" : {

<!– aspectRatio –> "aspectRatio" : "16:9"

} } }

<!– 右側:參數說明面板 –>

<!– responseModalities 說明 –> &#9888; responseModalities (必需) 必須同時包含 "TEXT" 和 "IMAGE" &#10060; 僅 ["IMAGE"] 會導致請求失敗 &#9989; ["TEXT", "IMAGE"] 正確格式

<!– aspectRatio 說明 –> &#127912; aspectRatio 寬高比 (可選)

<!– 寬高比選項表格 –> 1:1 正方形 (默認)

16:9 橫版寬屏

9:16 豎版長圖

4:3 經典橫版

3:4 經典豎版

4:1 超寬

1:4 超長

8:1 極寬

1:8 極長

<!– 響應數據說明 –> &#128230; 響應數據結構

響應包含兩種 parts: inlineData.data Base64 圖片

text 模型文字描述

<!– 底部說明 –> API易 apiyi.com | generateContent 圖片生成請求參數結構

generateContent 端點支持豐富的圖片生成參數:

參數 說明 是否必需 示例值
contents.parts.text 圖片描述提示詞 ✅ 必需 "一隻橘貓在陽光下"
responseModalities 響應模態設置 ✅ 必需 ["TEXT", "IMAGE"]
imageConfig.aspectRatio 圖片寬高比 可選 "1:1", "16:9", "9:16"
contents.parts.inlineData 參考圖片(圖生圖) 可選 Base64 圖片數據

💡 重要提示: responseModalities 必須同時包含 "TEXT""IMAGE",僅設置 ["IMAGE"] 會導致請求失敗。這是因爲 Gemini 圖片模型是多模態模型,始終同時輸出文字描述和圖片。


常見問題

Q1: 爲什麼 Nano Banana 2 不能用 OpenAI 格式調用?

Nano Banana 2(gemini-3.1-flash-image-preview)是基於 Gemini 的多模態語言模型,它的圖片生成能力是通過"對話生成"實現的,而非專用的"文生圖接口"。OpenAI 格式的 /v1/images/generations 端點專爲 DALL-E 和 Imagen 等專用圖片生成模型設計,無法處理 Gemini 模型的多模態請求結構。通過 API易 apiyi.com 平臺調用時,需要根據模型類型選擇對應的端點格式。

Q2: Nano Banana 2 和 Nano Banana Pro 圖片 API 有什麼區別?

兩者都使用 generateContent 端點,調用格式完全相同。主要區別在於:

  • Nano Banana 2(Flash 版):生成速度更快,約 3-5 秒,適合批量生成和快速原型
  • Nano Banana Pro:圖片質量更高,文字渲染準確率達 94%,適合精細設計和商業用途

在 API易 apiyi.com 平臺上兩個模型均可使用,只需在端點 URL 中切換模型名稱即可。

Q3: generateContent 返回的圖片數據如何處理?

與 OpenAI 格式返回圖片 URL 不同,generateContent 返回的是 Base64 編碼的內聯圖片數據。處理步驟:

  1. 從響應 JSON 的 candidates[0].content.parts 中找到包含 inlineData 的部分
  2. 獲取 inlineData.data 字段的 Base64 字符串
  3. 使用 base64.b64decode() 解碼後保存爲圖片文件
  4. inlineData.mimeType 字段會告訴你圖片格式(通常爲 image/png

總結

Nano Banana 2 圖片 API 報錯的核心要點:

  1. 報錯原因明確:使用 /v1/images/generations(OpenAI 格式)調用 Gemini 圖片模型會觸發 "not supported model" 錯誤
  2. 切換到 generateContent:正確端點爲 /v1beta/models/gemini-3.1-flash-image-preview:generateContent
  3. 設置 responseModalities:必須在 generationConfig 中包含 ["TEXT", "IMAGE"],否則無法生成圖片

遇到 Nano Banana 2 API 報錯時,核心就是一句話:把 OpenAI 的圖片生成端點換成 Google 原生的 generateContent 端點

推薦通過 API易 apiyi.com 快速測試 Nano Banana 2 和 Nano Banana Pro,平臺提供免費額度,支持 generateContent 格式直接調用,無需配置 Google Cloud 賬號。


📚 參考資料

  1. Google Gemini 圖片生成文檔: Gemini API 官方圖片生成指南

    • 鏈接: ai.google.dev/gemini-api/docs/image-generation
    • 說明: 包含 generateContent 端點的完整參數說明和示例
  2. Google generateContent API 參考: Gemini API 內容生成接口文檔

    • 鏈接: ai.google.dev/api/generate-content
    • 說明: generateContent 端點的請求和響應結構詳解
  3. Google Gemini OpenAI 兼容性文檔: Gemini 與 OpenAI 格式的兼容說明

    • 鏈接: ai.google.dev/gemini-api/docs/openai
    • 說明: 瞭解哪些功能支持 OpenAI 兼容格式,哪些需要原生格式

作者: APIYI 技術團隊
技術交流: 歡迎在評論區討論 Nano Banana 2 圖片 API 調用問題,更多資料可訪問 API易 docs.apiyi.com 文檔中心

Similar Posts