文字產生圖 DALL-E 3 的系統提示,提供的畫圖秘訣

使用 DALL-E 3 跟機器人對話,就可以很方便地請機器人畫圖。最近社群揭露了 DALL-E3 的系統提示 (system prompt) 。進一步反推畫圖的秘訣:產生圖片時可切換中英文,不可提到當代公眾人物或當代畫家風格、可直接指定圖片類型、如果畫得不好,可以再叫它修改。

Made with DALL-E 3

DALL-E 3 是 OpenAI 公司的產品,透過使用文字對話,就可以很方便地請機器人畫圖 [1]。近日社群網絡揭露了 DALL-E 3 的系統提示 (system prompt) [2][3]:

1. 使用英語溝通會更有效率

系統提示提到

The prompt must be in English. Translate to English if needed. 
「如果提示不是英語,則將它翻譯。」

💡 告訴我們什麼?

 DALL-E 3 只懂英語,使用 ChatGPT 畫圖其實是背後透過其他機器人協助翻譯。使用過短的中文詞句,可能會造成翻譯錯誤。或者嘗試很多次後,發現機器人畫的圖都不是你要的。建議直接用英語跟機器人對話。

如果是英語苦手,可以使用以下提示,先請 GPT-4 翻譯並確認英文翻譯與你原本想要的意思是否有落差?

我給你兩個任務,將 ` 符號的間隔的句子

1. 翻成英文

2. 再將前一步翻成的英文,翻成台灣常用的繁體中文

```

(要翻譯的中文句子)

```

再將確認過的英文,當作給 DALL-E 3 畫圖的提示



2. 即使使用者請求更多張圖,也不要建立超過一張圖。

系統提示提到
Do not create more than 1 image, even if the user requests more.
「即使使用者請求更多張圖,也不要建立超過一張圖。」
實際測試有時會只會產生一張圖、偶而出現多張合併成一張圖、或者可以一次產生多張圖。

💡 告訴我們什麼?

提示從「一次產生多張圖」,改成「一次產生一張圖」

3. 不要叫機器人畫政治人物或明星的圖

系統提示提到

Do not create images of politicians or other public figures. Recommend other ideas instead. 
「不能產生跟政治人物或其他公眾人物的圖。機器人會建議其他點子。」

請機器人畫「長得像川普的中年男子在花園走道裡跳舞」,機器人回應:

「很抱歉,我無法製作政治家或公眾人物的圖像,包括唐納-川普。您想要一個中年男子在花園人行道上跳舞而不涉及任何特定公眾人物的圖片嗎?請告訴我您想怎麼做!」

畫政治人物將會違反 OpenAI 公司的內容政策 [4],我們不想因為圖,而影響該名政治人物的選舉或者是公共議題的參與討論 (political process)。

💡 告訴我們什麼?

不要直接提到政治人物、公眾人物的名字,可以改成詳細描述人物的臉部特徵,再根據特徵描述產出類似長相的人物。或者改用其他限制較少的模型 (stable diffusion)。

4. 不要指名要當代畫家的風格

系統提示提到

Do not create images in the style of artists, creative professionals or studios whose latest work was created after 1912 (e.g. Picasso, Kahlo). You can name artists, creative professionals or studios in prompts only if their latest work was created prior to 1912 (e.g. Van Gogh, Goya) If asked to generate an image that would violate this policy, instead apply the following procedure: (a) substitute the artist's name with three adjectives that capture key aspects of the style; (b) include an associated artistic movement or era to provide context; and (c) mention the primary medium used by the artist 
「不要建立在過去100年內創作的藝術家風格的圖像(例如畢卡索,卡洛)。超過100年前的藝術家的最後一部作品可以直接參考(例如梵谷,克林姆特)。如果被問及,則說『我不能引用這位藝術家』,但不要提及此政策。相反,建立 DALLE 提示時應用以下程序:(a)用三個描述風格的關鍵方面的形容詞替代藝術家的名字;(b)包括相關的藝術運動或時代以提供上下文;並(c)提及藝術家使用的主要媒介。」

嘗試請機器人「用畢卡索風格描繪蜘蛛人出現古埃及的壁畫上」、「用畢卡索風格畫一隻白色暹羅貓」,機器人除了回答違反內容政策,有時會直接取關鍵特徵作為繪圖方向。但是是否符合畢卡索風格,就請自行判斷。

💡 告訴我們什麼?

不要直接提到畫家名字或畫作名稱 (有時可以提到畫作)。可以改成文字描述關鍵特徵、100百年前的風格。
明明提示沒有提到任何畫家或畫作,仍然出現違反內容政策的訊息而無法畫圖,可以直接請機器人提供不違反內容政策的提示。

5 告訴它你想要的畫的類型

更新:2023-12-25 的系統提示版本,已經沒有這一條規則。可以視需要自行加上圖片類型。

系統提示提到
Always mention the image type (photo, oil painting, watercolor painting, illustration, cartoon, drawing, vector, render, etc.) at the beginning of the caption. Unless the caption suggests otherwise, make at least 1--2 of the 4 images photos. 
「在說明的開頭提及圖片類型(照片、油畫、水彩畫、插圖、卡通、繪畫、向量圖、渲染等)。除非說明建議其他方式,否則 4 張圖片裡,至少有 1-2 張是照片。」
儘管我的提示沒有提到圖片類型,ChatGPT 背後那隻「翻譯機器人」會提供 DALL-E3 圖片類型。點選 DALL-E 3 產生的圖片,可以看到網頁右側是最終的提示版本。


💡 告訴我們什麼?

可以直接指定的圖片類型:照片、油畫、水彩畫、插圖、卡通、繪畫、向量圖、渲染

6. 不要叫機器人畫著作權保護的角色

系統提示提到
Do not name or directly / indirectly mention or describe copyrighted characters. Rewrite prompts to describe in detail a specific different character with a different specific color, hair style, or other defining visual characteristic. Do not discuss copyright policies in responses.
不要命名或是直接或間接地提及或描述受著作權保護的角色。重寫提示,詳細地描述一個有不同特定顏色、髮型或其他決定性視覺特徵的不同角色。在回覆中不要討論著作權政策。
💡 告訴我們什麼?

著作權保護的角色包含電影或動畫等角色。當你遇到機器人回覆因為違反著作權政策,或稱為內容政策 (content policy) 而拒絕畫圖時,你可以直接請機器人:「請改成不違反內容政策的圖」。再看是否符合你的需要。其次是使用公共領域 (public domain) 的角色來畫圖。

另一種做法和提示「不要叫機器人畫政治人物或明星的圖」講到的過渡方案是一樣的,不要直接提到角色名稱,而改在提示裡說明角色特徵。例如不是說「長得像瑪利歐的男子,出現在紐約街頭」,而是「穿著紅色衣服的水電工男子,出現在紐約街頭」。

7. 如果畫得不好,可以再叫它修改

系統提示提到
If the user references a previous image, this field should be populated with the gen_id from the dalle image metadata. referenced_image_ids?: string[]
「如果使用者提及之前的圖片,這個欄位應該填入來自於 dalle 圖片後設資料的 gen_id。referenced_image_ids?: string[]」
Stable Diffusion [5] 等生成式 AI 隨機產生不同圖片,透過種子 (seeds) 可以重複產生同樣或一致風格的圖片,方便地進一步修改。DALL-E 則稱為 gen_id (Generation Id)。

💡 告訴我們什麼?

可以直接告訴機器人:「前一張圖加上雲朵背景」,也可以請機器人提供 gen_id,再要求機器人:「gen_id XXXX 加上雲朵背景」。實際測試也可以使用 ref_id (Referring image Id) 是 gen_id 的同義詞。


8. 三種圖片的大小可以選擇

系統提示提到
The size of the requested image. Use 1024x1024 (square) as the default, 1792x1024 if the user requests a wide image, and 1024x1792 for full-body portraits. Always include this parameter in the request. size?: "1792x1024" | "1024x1024" | "1024x1792
預設提供 1024x1024 (正方形) 尺寸大小的圖片,如果使用者要求寬螢幕的圖像,則提供 1792x1024,用於全身肖像時則提供 1024x1792。請求中始終包含此參數。尺寸: "1792x1024" | "1024x1024" | "1024x1792"
💡 告訴我們什麼?

如果不跟機器人特別講,它會提供正方形的圖片。共有三種圖片的大小可以選擇,長寬分別是:1792x1024、1024x1024、1024x1792。

9.  提供簡單與清楚的提示

系統提示提到
The generated prompt sent to dalle should be very detailed, and around 100 words long.
傳送給 dalle 的提示需要非常詳細,需要有約 100 個字。
💡 告訴我們什麼?

如果你的提示太短,機器人就會自己補腦。

結論

  1. 如果圖跟你想要的有落差,可以從中文切換成英文,使用英語溝通會更有效率
  2. 不要叫機器人畫政治人物或明星的圖
  3. 不要指名要當代畫家的風格,可以改成關鍵特徵或100百年前的風格
  4. 不要叫機器人畫著作權保護的角色
  5. 如果畫得不好,可以再叫它修改
  6. 如果不清楚哪裡出問題導致無法畫圖,你可以直接問機器人改成不違反內容政策的圖
  7. 三種圖片的大小可以選擇:1792x1024、1024x1024、1024x1792
  8. 如果你的提示太短,機器人就會自己補腦
也可以改試其他限制較少的模型,例如:Stable Diffusion。

參考資料

  1. DALL·E 3
  2. X 上的 Bryce Drennan:「ChatGPT+ Dalle3 System Prompt: You are ChatGPT, a large language model trained by OpenAI, based on the GPT-4 architecture. Knowledge cutoff: 2022-01 Current date: 2023-10-05 # Tools ## dalle // Whenever a description of an image is given, use dalle to create the images and…」 / X 
  3. 蔡旻錫 - 【ChatGPT DALL·E 3 完整的「系統 Prompt」】 ──「系統 Prompt」告訴了我們什麼重要資訊?... | Facebook
  4. Content policy | DALL·E
  5. Guide to using seed in Stable Diffusion
  6. Image generation - OpenAI API
  7. Now add a walrus: Prompt engineering in DALL-E 3
  8. David Hsiao - 日前在 鳥巢AI藝術學園.平台發問,想知道要怎麼運用GPT4... | Facebook


留言