作者注:詳解 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 報錯核心原因
| 要點 | 說明 | 解決方案 |
|---|---|---|
| 報錯信息 | 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端點
簡單來說,你用了"文生圖專用通道"去調用一個"多模態對話模型",格式不匹配所以報錯了。
<!– 標題 –>
<!– 左側:模型分類 –>
<!– Imagen 模型 –>
<!– Gemini 圖片模型 –>
<!– 中間:API 端點 –>
<!– OpenAI 格式端點 –>
<!– generateContent 端點 –>
<!– 正確連線: Imagen → OpenAI 端點 –>
<!– 正確連線: Gemini → generateContent –>
<!– 錯誤連線: Gemini → OpenAI 端點 (紅色虛線 + 叉號) –>
<!– 紅色叉號 –>
<!– 右側:結果 –>
<!– 成功結果 1 –>
<!– 成功結果 2 –>
<!– 失敗結果 –>
<!– 連線:端點到結果 –>
<!– 底部總結區域 –>
<!– 關鍵信息卡片 –>
<!– 底部 –>
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 關鍵參數說明
<!– 標題 –>
<!– 左側:JSON 結構樹 –>
<!– 根節點 –>
<!– contents 節點 –>
<!– parts 節點 –>
<!– text 參數 –>
<!– inlineData 參數 (可選) –>
<!– generationConfig 節點 –>
<!– responseModalities (必需) –>
<!– imageConfig (可選) –>
<!– aspectRatio –>
<!– 右側:參數說明面板 –>
<!– responseModalities 說明 –>
<!– aspectRatio 說明 –>
<!– 寬高比選項表格 –>
<!– 響應數據說明 –>
<!– 底部說明 –>
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 編碼的內聯圖片數據。處理步驟:
- 從響應 JSON 的
candidates[0].content.parts中找到包含inlineData的部分 - 獲取
inlineData.data字段的 Base64 字符串 - 使用
base64.b64decode()解碼後保存爲圖片文件 inlineData.mimeType字段會告訴你圖片格式(通常爲image/png)
總結
Nano Banana 2 圖片 API 報錯的核心要點:
- 報錯原因明確:使用
/v1/images/generations(OpenAI 格式)調用 Gemini 圖片模型會觸發 "not supported model" 錯誤 - 切換到 generateContent:正確端點爲
/v1beta/models/gemini-3.1-flash-image-preview:generateContent - 設置 responseModalities:必須在 generationConfig 中包含
["TEXT", "IMAGE"],否則無法生成圖片
遇到 Nano Banana 2 API 報錯時,核心就是一句話:把 OpenAI 的圖片生成端點換成 Google 原生的 generateContent 端點。
推薦通過 API易 apiyi.com 快速測試 Nano Banana 2 和 Nano Banana Pro,平臺提供免費額度,支持 generateContent 格式直接調用,無需配置 Google Cloud 賬號。
📚 參考資料
-
Google Gemini 圖片生成文檔: Gemini API 官方圖片生成指南
- 鏈接:
ai.google.dev/gemini-api/docs/image-generation - 說明: 包含 generateContent 端點的完整參數說明和示例
- 鏈接:
-
Google generateContent API 參考: Gemini API 內容生成接口文檔
- 鏈接:
ai.google.dev/api/generate-content - 說明: generateContent 端點的請求和響應結構詳解
- 鏈接:
-
Google Gemini OpenAI 兼容性文檔: Gemini 與 OpenAI 格式的兼容說明
- 鏈接:
ai.google.dev/gemini-api/docs/openai - 說明: 瞭解哪些功能支持 OpenAI 兼容格式,哪些需要原生格式
- 鏈接:
作者: APIYI 技術團隊
技術交流: 歡迎在評論區討論 Nano Banana 2 圖片 API 調用問題,更多資料可訪問 API易 docs.apiyi.com 文檔中心
