簡短回答
三句話講完:
- 「能看圖」和「能出圖」是兩件事。絕大多數新對話模型都能讀圖片(這就是通常說的「多模態」),但它們不能生成圖片;能出圖的是另一類專門的圖片模型。
- 真正「一個介面同時返回文本和圖片」的,只有 Gemini 出圖系——
gemini-3-pro-image(Nano Banana Pro)、gemini-3.1-flash-image(Nano Banana 2)等,響應裡文本段和圖片段是混排的。 - 其餘場景都是編排:對話模型 + 獨立出圖介面兩個 API 協作,或者用
gpt-5.5+ Responses 原生image_generation工具,讓模型自己決定什麼時候畫。
先分清兩件事:圖片「進」和圖片「出」
大部分困惑來自「多模態」這個詞——它在 API 語境裡預設指輸入側,也就是「你能給模型喂圖片」, 而不是「模型能給你產出圖片」。這兩件事的模型池、端點、計費方式完全不同:所以客戶問「有沒有多模態對話 API」時,如果他要的是上傳圖片讓模型分析,答案是「幾乎全都支援」;
如果他要的是讓模型畫一張圖,那是完全另一批模型。問清楚這一句,能省掉後面一大半溝通成本。
想拿到圖片,一共四條路
A. 獨立出圖介面 —— 絕大多數場景選這條
A. 獨立出圖介面 —— 絕大多數場景選這條
最標準、最便宜、最好排查的一條路。GPT-Image、FLUX、Seedream、Grok Imagine 都走這裡。響應裡 FLUX / Seedream 一般回
data[0].url,GPT-Image 系回 data[0].b64_json。
這條路不返回任何對話文本——它就不是對話介面。模型全表見影像與影片生成模型,
各模型的端點、超時、輸出格式差異見圖片 API 呼叫須知與最佳實踐。B. Gemini 出圖系 —— 唯一原生「文本 + 圖片」同出的一類
B. Gemini 出圖系 —— 唯一原生「文本 + 圖片」同出的一類
Nano Banana 系列(完整說明見 Nano Banana 系列開發指南。
gemini-3-pro-image / gemini-3.1-flash-image 等)走 Gemini 原生端點,
響應的 candidates[0].content.parts 是一個異構陣列:裡面可能只有圖片段,
也可能文本段和圖片段混排。這就是「一個介面既給文字又給圖」的那一類。但有個坑必須提前知道:段數和順序都不做保證。實測出現過三種排列:所以
parts[0] / parts[1] 這類寫死下標的取法一定會間歇性失敗。正確寫法是按欄位特徵篩選,
並取最後一個 inlineData(複雜任務下模型會返回多張圖,最後一張才是最終稿):C. Responses 原生 image_generation 工具 —— 讓 Agent 自己決定畫不畫
C. Responses 原生 image_generation 工具 —— 讓 Agent 自己決定畫不畫
調 模型自己判斷要不要畫,圖片以 base64 放在響應
POST /v1/responses,模型用 gpt-5.5,請求裡掛上原生出圖工具:output 陣列的 image_generation_call 項裡,
和正常的文本輸出並列。這是 OpenAI 側最接近「會畫畫的聊天模型」的形態。詳見原生工具出圖。D. 圖片模型的對話端點 —— 形似對話,本質仍是圖片模型
D. 圖片模型的對話端點 —— 形似對話,本質仍是圖片模型
gpt-image-2-all / gpt-image-2-vip 支援用 /v1/chat/completions 呼叫,圖片以 Markdown
連結的形式塞在 choices[0].message.content 裡。看起來像「一個對話介面既迴文字又出圖」,但它並不是會畫畫的聊天模型——底下仍然是圖片模型
套了一層對話 schema,沒有通用對話能力。另外它只讀最後一條 user 訊息裡的 image_url 作底圖,
assistant 歷史裡的圖會被忽略。這條路不再主推,新接入請走 A。想做「邊聊邊出圖」的產品,推薦怎麼搭
大多數 Agent / 產品要的其實不是「一個萬能介面」,而是一條清晰的編排鏈。推薦這樣搭:1
對話模型判斷意圖
用你本來就在用的對話模型(
gpt-5.5、claude-opus-5、gemini-3-pro 等)處理使用者輸入,
判斷這一輪到底是「聊天」還是「要出圖」。需要的話讓它以結構化輸出返回一個標誌位。2
讓對話模型寫出圖提示詞
這一步價值很高:使用者說的是「給我搞個海報」,而出圖模型需要的是完整的畫面描述。
讓對話模型把口語需求改寫成規範的英文/中文提示詞,出圖品質會明顯更穩。
3
調出圖介面拿圖
走路線 A 的
/v1/images/generations。拿到 url 或 b64_json 後落到你自己的物件儲存。4
把圖回填進對話
把圖片連結以 assistant 訊息的形式接回對話歷史,使用者體驗上就是「邊聊邊出圖」。
怎麼確認某個模型吃不吃圖片
1
① 查模型詳情頁
開啟
/models/<模型名>,看頂部規格表裡「輸入模態」那一行——含「圖片」就支援識圖。
這是最快的判斷方式。2
② 拿不準就實測一條
發一條最小的帶圖請求,看返回:
3
③ 認報錯原文
純文本模型會明確報錯,上游原文是
Model do not support image input
(語法就是這樣,不是筆誤)。看到這一句就說明該模型不吃圖片,換模型即可。五個常見誤區
誤區一:多模態模型 = 能生成圖片
誤區一:多模態模型 = 能生成圖片
不成立。 多模態在 API 語境裡預設指輸入側能力。
gpt-5.5 能看懂你發的設計稿,
但它自己吐不出一張圖——想讓它出圖,得靠工具呼叫(路線 C)或另外調出圖介面(路線 A)。誤區二:出圖模型也能當聊天模型用
誤區二:出圖模型也能當聊天模型用
不成立。 圖片模型沒有通用對話能力,別拿
gpt-image-2 去做客服問答。
即便是支援對話端點的 -all / -vip(路線 D),底下也仍然是圖片模型。誤區三:responseModalities 帶上 TEXT 就一定會返回文本段
誤區三:responseModalities 帶上 TEXT 就一定會返回文本段
反向不成立。 宣告
responseModalities: ["TEXT", "IMAGE"] 不保證響應裡一定有文本段,
模型也可能只給圖片。反過來倒是有用:顯式宣告 ["IMAGE"] 可以減少多餘的文本段。誤區四:在 parts[0] 和 parts[1] 之間來回改能修好取圖
誤區四:在 parts[0] 和 parts[1] 之間來回改能修好取圖
修不好。 寫死下標的兩種寫法是互補的——圖片必落在
[0] 或 [1],
無論選哪個,都存在拿不到圖的請求。改下標只是把失敗的請求換了一批,
只有按欄位特徵遍歷篩選才穩定。誤區五:給 /v1/images/generations 傳參考圖就能做圖片編輯
誤區五:給 /v1/images/generations 傳參考圖就能做圖片編輯
不成立,而且是靜默失敗。 以 Grok Imagine 為例:向生成端點傳
image / image_url / images,
實測會返回 200 並正常出一張圖,但參考圖被靜默丟棄、並照常計費——你拿到的是純文生圖結果。圖片編輯必須走 /v1/images/edits(Grok Imagine 側還要求 multipart/form-data,傳 JSON 會硬報 400)。相關文件
影像理解(識圖)API
圖片輸入側的完整指南:支援的模型、URL / base64 兩種傳法、多圖輸入、常見報錯
影像與影片生成模型
圖片輸出側的模型全表與價格,判斷「哪些模型能出圖」看這裡
Nano Banana 系列開發指南
Gemini 出圖系的正確接法,含 parts 遍歷取圖、多圖輸出、mimeType 處理
原生工具出圖
用 Responses API 的 image_generation 工具讓模型自主出圖,含額外工具呼叫費說明
圖片 API 呼叫須知與最佳實踐
各出圖模型的端點、超時、輸出格式對照矩陣
如何選擇合適的 AI 模型?
按場景、成本、速度三個維度的選型指南