前一篇寫數位分身時,我卡在一個很奇怪的地方:同一個「我和 AI 一起工作」的意圖,丟給不同圖片生成工具,結果可以差非常多。

後來我請 GPT 把最接近目標的那張圖反推成 Prompt,才發現生圖 Prompt 好像不是把想要的東西全部列出來,而是有一種比較穩的組織方式。這篇不是官方標準教學,比較像是我從那次踩坑裡整理出來的工作筆記。

Prompt 格式沒有唯一標準

我一開始以為應該可以找到一份「生圖 Prompt 標準格式」,例如每次都照某個固定欄位填就好。查了一圈官方文件後,答案比較微妙:有常見元素,但沒有單一標準格式。

OpenAI 的 GPT image prompting guide 直接提到,Prompt 可以是短句、描述性段落、JSON-like 結構、instruction-style,或 tag-based prompt。重點不是語法多漂亮,而是 intent 和 constraints 清楚,production 使用時則優先考慮好讀、好維護的 template。

Google 的 Gemini prompt design strategies 也把 prompt engineering 說成一個 iterative process,指南和 template 只是起點,要根據實際輸出繼續調整。到圖片生成時,Google Nano Banana Pro 的提示文章 建議補上 subject、composition、action、location、style,進階一點再加 camera、lighting、aspect ratio 和 reference inputs。

Midjourney 的 Prompt Basics 則更偏向創作工具的語氣:短而清楚的 prompt 通常比較好,不要把它寫成一長串規格書。但它也列出幾個值得控制的方向:subject、medium、environment、lighting、color、mood、composition。

所以我比較確定一件事:GPT 給我的格式不是某種神秘標準,但它跟官方文件裡反覆出現的元素是對得上的。

我整理出來的五段骨架

那次 GPT 反推出來的 Prompt,大致可以整理成這樣:

Intent → Style → Subject → Scene → Hard Constraints

第一段是 Intent,也就是這張圖到底要傳達什麼。我原本也會很直覺地先描述畫面:「一個人坐在桌前,旁邊有機器人」。但對模型來說,這只是物件清單,不一定知道整張圖要往哪個方向詮釋。

我後來會先寫這張圖的用途和氣質,例如「一張用在個人 blog author card 的數位分身圖,感覺是安靜、可信、正在和 AI 協作,而不是科技公司廣告」。這段放最前面,是因為後面的 style、pose、lighting 都應該服務這個意圖。

第二段是 Style。這裡不是單純寫「好看一點」,而是給模型一個品質錨點,例如 editorial portrait、soft 3D illustration、Apple keynote quality。這些詞不一定精準,但它們會把模型推向某個既有視覺系統。

第三段是 Subject,包含角色、服裝、姿勢、表情。如果有參考照片,我會明確寫 preserve features from the reference photo,但不會期待它精準複製臉。我的經驗是,參考照片很容易把模型拉向寫實路線,所以要同時提醒它保留原本的 illustration style。

第四段是 Scene,包含構圖、背景、道具和光線。這一段最像攝影或導演語言:eye-level angle、medium close-up、negative space on the right、soft diffuse lighting。它控制的不是「有哪些東西」,而是讀者第一眼怎麼看這張圖。

最後是 Hard Constraints,也就是不要出現什麼。這段在生圖裡比我原本想像的重要很多,尤其是不要文字、不要 logo、不要過度科幻 UI、不要 AI influencer 感。負面約束不是萬靈丹,但它可以把幾種常見歪路先擋掉。

寫效果,不要寫數量

這次最有用的教訓之一,是不要太相信模型會精準執行數量規格。

如果我寫「襯衫解開兩顆扣子」,模型不一定真的理解兩顆,甚至可能把衣服弄得很怪。比較好的寫法是描述效果:「open collar, relaxed but still neat」。也就是不要執著在實作細節,而是告訴模型最後看起來應該是什麼感覺。

這也呼應 Midjourney 文件裡的提醒:短 prompt 會讓模型自己的風格補上空白,細節越多控制越強,但也越可能讓整張圖變僵。我的體感是,生圖 Prompt 很像跟設計師 brief,不像寫 SQL。你可以定方向,但不能把每個 pixel 都交代完。

負面約束有時比正面描述更準

有些氣質很難正面描述。

例如「沉穩可信」這種詞,模型可能理解成西裝、抱胸、企業簡報風。但如果我寫 avoid AI influencer feeling、not a startup founder marketing portrait、no holographic dashboard,反而比較快把它從錯的方向拉回來。

這不是因為負面 prompt 比正面 prompt 高級,而是很多錯誤風格都有明確名字。當你說不要某種東西,模型有時比你說「我要一個剛剛好的感覺」更容易理解。

比較版本時,一次只改一個變數

我以前會很自然地叫模型「給我三個版本比較」,然後同時改風格、構圖、背景、角色姿勢。結果每一張都不一樣,根本不知道是哪個變數造成差異。

同一個角色設定,只改畫風後產生的 2x2 比較圖。這張也剛好示範了另一個坑:模型把 A/B/C/D 標籤和說明文字直接畫進圖片。

比較穩的做法,是固定其他 block,只改一段。例如只換 Style:

Version A: soft 3D illustration
Version B: editorial flat illustration
Version C: warm semi-realistic portrait

這很像前端調 UI:如果你同時改 font、spacing、color、border radius,最後很難知道到底是哪個改動讓畫面變好或變壞。生圖也是一樣,一次只動一個主要變數,才比較能收斂。

這份格式的定位

所以我現在不會把這套 Intent → Style → Subject → Scene → Hard Constraints 當成標準答案。它比較像一份可重複使用的生圖模板。

官方文件給我的結論是:格式可以自由,但 prompt 裡通常要交代清楚用途、主體、風格、構圖、光線和限制。GPT 當時給我的格式剛好把這些東西排成一個我看得懂、也改得動的順序。

這讓生圖變得比較不像下咒語,而是比較像在寫一份視覺 brief。它仍然不保證結果穩定,但至少當圖不對時,我知道可以回到哪一段改:是 intent 太模糊、style 太強、subject 被參考照帶歪,還是 constraints 沒有擋掉模型自己的壞習慣。

這大概是那晚最有價值的副產品。原本只是想生一張 blog 頭像,最後得到的反而是一份下次還能拿來用的溝通格式。