讓生成AI更懂你:掌握Prompt提示的要點,打造完美Prompt

Sean Yeh
Python Everywhere -from Beginner to Advanced
15 min readDec 14, 2023

--

Leiden, Molenbuurt, Dutch, photo by Sean Yeh

時代就像跑馬燈一般迅速的變化,半世紀以來AI人工智慧的發展雖然起起落落,但其技術日新月異,如今可說是到了另一個高點。尤其是自從OpenAI在2022年11月30日公布了ChatGPT之後,全世界都為之瘋狂,這項技術在短短五天內就吸引了超過100萬的使用者註冊,這速度簡直破紀錄,比起TikTok、Facebook、Instagram還要快得多。ChatGPT如此爆炸性的成長,不免讓人好奇,這背後到底有何魅力?

不過,雖然大家都對ChatGPT趨之若鶩,街頭巷尾隨便攔下一個人詢問,似乎都會告訴你他或她「聽過ChatGPT」。但真正能夠充分利用ChatGPT的人卻不多。可以說90%的多數人只是將ChatGPT當成一種新奇的玩具來娛樂,來當作茶餘飯後的消遣與聊天話題,而沒有真正深入去探索它的潛力。

在剩下的10%人之中,有9%的人會將它作為職場工作上或家庭生活上的工具,最後只有極少數(1%)的人意識到,透過ChatGPT代表的這項生成式AI技術可以成為開創新事業的尚方寶劍。

為何會產生這種現象呢?筆者認為,問題可能出在大多數人並「不知道」如何有效地與生成AI溝通。他們可能只是一時好奇嚐鮮,隨意地輸入幾個字句看看有什麼反應,而沒有去暸解生成式AI技術的本質與特性,去選擇合適的指令提示(Prompt)與之互動,這就像是有了一把鑰匙卻不知道怎麼開啟寶箱一樣。

因此,學會如何正確使用Prompt指令提示,就成為了能否成晉升為那10%中的一員的關鍵。有效而精準的Prompt對於與AI模型溝通至關重要,它可以讓AI模型更準確地理解您的需求,並提供符合您期待的回應。所以,這篇文章將會帶大家一起探索如何精準地使用Prompt指令提示,讓您也能成為那些能夠善用AI,從中獲益的少數人之一。讓我們開始來學習如何與AI更有效地溝通吧。

Prompt的基本概念

小時候在看《哈利波特》或者是《梅林傳奇》等故事時,大家是否總會被那些魔法師們念出來的咒語給吸引?

這些咒語就像是一種神奇的指令,一念出來,就能召喚出各種奇妙的魔法效果。其實,在我們現實生活中,也有類似的「咒語」,那就是我們今天要聊的「Prompt」。在人工智慧的世界裡,「Prompt」又稱為「指令」、「提示」,在與生成式AI模型互動中扮演著至關重要的角色。

還記得筆者小時候與家裡的可愛的毛小孩 — 貓、狗 — 玩耍時,會對牠們喊道:「坐下」,然後牠們就真的乖乖坐下了吧?實際上,這跟Prompt的概念很像。在與生成式AI模型進行溝通時,我們給AI模型的指令提示,就像是對寵物說出「坐下」一樣,這些指令提示會引導AI模型進行特定的動作或回應。

換句話說,Prompt是使用者提供給AI模型的命令或提示,目的是引導AI模型產生特定的回應與輸出。這些Prompt指令提示可以是文字描述、也可以是個問題或是指令提示,甚至可以是更複雜的命令組合。

使用者提供給AI模型的Prompt品質對AI模型的回應有著直接且顯著的影響。為什麼指令提示對輸出品質的影響會這麼大?要回答這個問題前,我們需要先理解生成式AI模型是如何運作?

以現在流行的ChatGPT為例(性質上為生成式AI模型),它的運作方式就像是一場「文字接龍」遊戲(如以下示範:「我」的接龍)。當使用者的你我給它一個起始的字、詞或句子,它就會根據這個提示,按照一定的機率規則,選出人類最希望出現的下一個字、詞或句子,一個接著一個,最後產生一連串的文字。這過程就像是在玩一個大家輪流接龍的遊戲,每個人的詞都會影響後續的故事走向。

#「我」的接龍

輸入:我
輸出:我愛

輸入:我愛
輸出:我愛吃

輸入:我愛吃
輸出:我愛吃牛

輸入:我愛吃牛
輸出:我愛吃牛肉麵

所以,當我們跟AI互動的時候,提供的Prompt就顯得非常重要。如果我們的提示或指令很精確、很清楚,AI模型就能更精準的給出更貼切的回應。

就像是魔法師念出一個好的咒語,魔法效果就會很棒。但如果我們的提示或提示指令模糊不清或者有誤,就可能得到一個我們意料之外的結果。這就好比是念錯咒語或者是因口齒不清、念不清咒語一般,產生魔法效果也會大打折扣。

請務必記住這個原則:「垃圾進,垃圾出」(Garbage in, garbage out)。在提供給AI模型的Prompt要越清楚、越精確,才能讓我們與AI模型的溝通過程中產生更好的效果。換句話說,一個清晰、明確的Prompt指令提示有助於AI模型準確地解釋使用者的意圖,並藉此產生更符合期望的結果。反之,一個模糊或含糊不清的Prompt指令提示可能導致AI模型產生不準確或離題的回應,這不僅影響使用者體驗,還可能導致不必要的誤解或錯誤。

因此,學會如何設計一個有效的Prompt指令提示是實現高品質結果的關鍵。透過精心設計的Prompt指令提示,我們不僅能夠提高AI模型的回覆品質,還能夠在各種場合中更加有效地利用AI技術。

打造優質Prompt的關鍵原則

想要打造出優質Prompt指令提示,需要考慮明確性、具體性、精確性,並且發揮創造力,同時也要給AI模型一些「思考的時間」。這對於想要學會有效的跟AI溝通來說是非常重要的。

明確、具體與精確性的指令提示

要有效地與AI溝通,我們需遵循以下原則:明確性、具體性與精確性來打造打造優質Prompt。明確性要求我們清楚直接地表達需求,避免含糊不清的語言,讓AI能準確理解我們的意圖。具體性則是在指令提示中加入細節,如同畫畫時的細膩描繪,使得AI的回應更加生動、精確。最後,精確性強調使用合適的詞彙和語法,這有助於AI更好地理解我們的需求,提高溝通的效率和產出的質量。

以下是明確性的例子:

# 明確性 

-不清晰:「幫忙寫點關於科學的東西。」
-清晰:「請寫一篇介紹太陽能板如何運作的文章。」

-不清晰:「我要個旅遊計劃。」
-清晰:「請提供一個為期三天,遊覽台北市主要景點的旅遊計劃。」

以下是具體性的例子:

# 具體性 

-不具體:「我想吃晚餐。」
-具體:「我想在台北市找一家評價超過四星的義大利餐廳。」

-不具體:「寫首詩吧。」
-具體:「請創作一首描繪冬季雪景的五行詩。」

以下是精確性的例子:

# 精確性

- 精確:「請查詢2023年台灣的GDP成長率預測值。」
- 精確:「提供五道適合高中生的物理力學相關選擇題。」

這些例子清晰展示了明確性、具體性和精確性在提升與AI互動效果中的重要性。當我們在溝通時遵循這些原則,不僅可以提高AI的回應質量,也能使我們的需求得到更準確和有效的滿足。

設定風格

除了設定人物角色外,我們還可以設定風格。這個風格可以指的是某大師的風格,也可以指的是一般性的風格。例如,我可以指定模型以「春上春樹」的風格來替我寫文章,也可以要求文章的風格必須「充滿溫暖的氣息」。在指令提示中加上不同的風格,可以產出完全不同的輸出結果。

創造性:啟發AI的無限潛能

使用創新而非傳統的方式來提出Prompt指令提示,進而激發AI模型產出更獨特、更有創意的輸出。在與AI的溝通中,結合一點創意思考可以開啟新的可能性,將日常的問題轉化為開放性的探索,或將不同領域的概念融合,創造出意想不到的結果。

# 創造性 例1 : 

- 創造性:「寫一篇結合科幻與歷史元素的短篇故事。」

# 創造性 例2 :

- 創造性:「如果我是一個時間旅行者,你會給我什麼旅行建議?」

# 創造性 例3:

- 創造性:「描述一個只存在於夢境中的神秘城市。」

以上例子,我們可以看到創造性Prompt不僅能帶來有趣和不同尋常的輸出,還能促進我們對AI的創新應用。當我們在與AI的溝通中加入創造性元素時,就能開啟一段探索無限可能的奇妙旅程。

讓模型有時間思考:優化ChatGPT的回應

吳恩達(Andrew Ng)與Isa Fulfordy 在網站DeepLearning.AI 上的ChatGPT Prompt Engineering for Developers 課程中提到,大型語言模型在處理我們的問題時,需要一點時間來思考。好幫助大型語言模型給出更好的答案。

如果我們問的問題太多太複雜,AI模型可能要花更長的時間來想。這就像我們寫作文,如果題目太長太難,也是要多花點時間來想。所以,最好是把問題簡化,直接問重點,這樣AI模型回答起來會更快。

有時候我們可能會直接問AI模型對某件事對不對。這樣子有時候會讓AI模型隨便給個答案。更好的方法是,讓AI模型先嘗試解決問題,然後再看看它的答案跟我們的是不是一樣,這樣就能得到更準的答案。

總之,給AI大型語言模型一點時間思考,用簡單明瞭的方式提問,這樣就能從AI模型那裡得到更快、更準的答案。

運用英語指令以提升回答品質

由於大型語言模型(例如ChatGPT等)在訓練階段大量使用英語資料,因此對於以英語提出的問題具有更好的回答品質。建議大家在與LLM大型語言模型互動時盡量使用英文提示指令。然而,對於非英語係國家的人來說,並非所有使用者的英文都足夠流利。但是大家別擔心,這時可以利用LLM語言模型本身來針對問題進行翻譯。

一個有效的方法是先用母語(例如:繁體中文、日文、韓文等)提出問題,然後指示LLM語言模型將該問題翻譯成英文。接下來,使用這個英文版本的問題作為指令提示,進而獲得更準確的英文回答。最後,再將LLM語言模型的英文回答翻譯回母語。這樣,既能提升回答的品質,又能確保使用者理解回答的內容。

例如我們想問語言模型:「全球暖化對生態系統有什麼影響?」時,可以先讓LLM語言模型將這個問題翻譯成英文,然後用這個英文版本提問,最後將回答翻譯回來。

指令的步驟如下:

  1. 請ChatGPT將“全球暖化對生態系統有什麼影響?”翻譯成英文。
  2. 使用翻譯後的英文問題提問。
  3. 將ChatGPT的英文回答翻譯回原始語言。

下面是使用ChatGPT4.0版實際執行的結果:

這種方法既可以提高問題的準確性,又可以確保使用者能夠完全理解答案。

基於這些原則,我們可以將與AI互動的品質提高到新的層次,以助我們達成目標與目的。

增強Prompt技巧,從結構化開始

在開始說明之前我們先來看看下面的例子:

You are a professional in marketing area. Answer the following E-mail:
[Email Content]
And format the E-mail in HTML.

上面的指令提示可以翻譯為繁體中文:

你是一位行銷專家。請回答以下電子郵件:
[郵件內容]
將email格式化為Markdown

可以發現,我們可以將上面這個簡短的指令分提示成下面四個項目:

  1. 起始設定:You are a professional in marketing area.
  2. 指令提示: Answer the following Email:
  3. 參考資料:[EMAIL CONTENT]
  4. 限定條件:And format the E-mail in HTML

透過這個例子,我們可以觀察到一個通用的Prompt指令架構,這個架構對於日常使用像ChatGPT這種LLM模型時非常有幫助。我們可以根據這個結構來思考並設計我們的Prompt指令提示。以下,將分段說明這個結構,讓我們更好地構建和使用Prompt指令提示:

起始設定

在這個步驟,重要的是要替AI模型設定一個清晰的背景。這包括定義使用者的角色和專業領域,如定義成專注於文學或語言學的作家。如此定義可以幫助AI理解回應所立於的專業背景,進而更準確地回應問題。

此外,也可以建立多個角色,使其從多個角度探討同一主題,如從技術、倫理或應用角度討論某一個社會問題。藉此就可以豐富AI的回答,使其回應更加的全面。因此,建立角色和背景設定有助於讓AI提供更適切的回答。

指令提示

這個步驟要求我們明確且具體地指示AI需要完成的任務。這個指令可能包括回覆郵件、總結文章或回答特定問題等。

這個步驟的關鍵在於提出清晰、具體的請求。明確的指令有助於AI執行任務,進而提供更加精確和有效的回應。

參考資料

在這個步驟,對AI提供相關的背景資料至關重要。這些資料可以是郵件的內容、文案的參考、必要的上下文或情境的描述等。

提供這些資料有助於AI基於問題的具體背景,進一步提供更精確、針對性更高的回答。

限定條件

這部分涉及到設定具體的要求,如語氣、TA聽眾(Target Audience)、長度和輸出格式等。

它們不僅包括語氣的選擇(例如輕鬆、活潑、嚴肅),也包括以特定風格(如作家春上春樹風格)回答的要求。我們還可以指定特定的TA聽眾(如針對15歲高中生的內容)、回答的長度(如不超過100字)以及特定的輸出格式(如表格、CSV、Markdown語法)。這些限定條件的設定有助於使AI產生的回答更加符合我們的需求和期望。

進階技巧

對於進階使用者而言,探索更深層的Prompt技巧和實驗性嘗試可以顯著提升與AI的互動。以下是一些進階技巧和創新性建議:

使用分隔符號等特殊符號

在與AI模型互動時,適當地使用分隔符號和特殊符號可以顯著提高指令提示的組織性和清晰度。這些符號有助於AI分辨指令提示中的不同部分,因而更有效地處理和回應請求。

例如,我們可以使用[INSTRUCTION]{text}或其他以{}[]###等符號包裹的文字,當然您可以使用的符號不限於這些。

這些符號可以指示AI模型將其包裹的內容視為特定的「變數」或「指令」,讓AI能夠更清楚地識別和理解文中的關鍵訊息。

假設我們需要AI模型幫助我們撰寫一封郵件。指令提示可以這樣設計:

[收件人] 張三
[主旨] 會議時間確認
[內容]
親愛的{收件人},
我想確認下週一的會議安排。請您依照以下時間表進行準備:
{會議議程}
期待您的回覆。
最好的祝福,
[你的名字]

在這個例子中,[收件人][主旨][內容]等用方括號包裹的文字標明了郵件的不同部分。而大括號 {}中的內容如 {收件人}{會議議程} 則表示這些是需要進一步補充或修改的部分。

這樣的結構不僅幫助AI更快地識別出指令提示,也使得指令提示更加直覺和易於理解。

範本化Prompt

在設計Prompt時,使用[]作為佔位符號(Placeholder)可以顯著提高輸出結果的結構性與清晰度。這種方式讓AI模型清楚地識別出需要補充或修改的部分,從而更精準地滿足特定的請求。透過這個技巧,我們可以將提示語結構化,從而使AI的回答更加有條理和易於理解。

假設我們需要AI模型幫助我們撰寫一份關於新技術產品的介紹。可以這樣設計指令提示:

產品名稱:最新型智慧手錶

特性:
[插入特性 1]
[插入特性 2]
[插入特性 3]

優點:
[插入優點 1]
[插入優點 2]
[插入優點 3]

好處:
[插入好處 1]
[插入好處 2]
[插入好處 3]

範例中,我們使用了[插入特性 1][插入優點 1][插入好處 1]等作為佔位符號,指示AI模型在這些位置填入相關的特性、優點和好處。

另外,若要求AI模型幫助撰寫一份活動計劃書。我們的提示指令可以是:

活動名稱:[插入活動名稱]

活動日期:
[插入日期]

活動地點:
[插入地點]

活動目的:
[插入目的]

預期成果:
[插入成果]

在這個例子裡,[插入活動名稱][插入日期][插入地點]等佔位符號清楚地標示出需要提供的具體資訊。這種結構化的方式使得Prompt指令更加明確,幫助AI模型更有效地針對我們的目標生成答案。

讓模型檢查條件是否滿足

當我們在Prompt中加入特定的條件語句時,AI模型能夠根據這些條件判斷是否能夠滿足請求,並相應地給出回答。這種方法有助於確保AI的回答更加精確和有針對性。

以ChatGPT為例,假設我們需要ChatGPT給出特定條件下的建議,可以這樣設計指令:

Step1. 檢查台北市明天的天氣。 
Step2. 如果明天是晴天,請推薦適合戶外活動的地點;如果是雨天,請提供室內活動建議。

如果使用ChatGPT4.0版,並且加上可以讓ChatGPT搜尋網路資訊的外掛之後,我們可以得到下面的回覆。

在這裡,AI模型會先去網路上爬取資料,作為判斷的客觀條件,然後AI會根據取得的天氣狀況(晴天或雨天)來提出不同的活動建議。

提供少量的範例(few-shot)

透過提供一些具體範例給AI模型,可以協助AI模型暸解我們所期望的回覆格式與內容型態。這在需要AI理解複雜或非標準化問題時,是個有效的方法。

例如,當我們希望AI以特定的格式問答時,可以這樣提供範例:

例子:
問:全球暖化的主要原因是什麼?
答:全球暖化的主要原因包括溫室氣體排放、森林砍伐和工業活動。

請以相同的格式回答以下問題:問:保護自然生態系統的重要性是什麼?

在這個例子中,我們藉著提供一個問答格式的範例,幫助AI,使其可以按照這種格式回答新的問題。

結論

一個精準有效的Prompt可以讓AI更準確地理解我們的需求,從而產生更貼近期望的結果。

本文中,我們從各個層面探討了如何打造高效Prompt,從基本原則到進階技巧。在此建議各位讀者積極嘗試所學的技巧,不斷磨練自己的Prompt技巧。透過不斷的實驗和創新,你會發現與AI合作的無限可能性。

因為,打造優質的Prompt是一種藝術,它需要時間和練習來精進。不必害怕犯錯,每一次的嘗試都是向完美的prompt邁進的一步。每一個好的prompt都是靠不斷迭代產生的。何不從現在就開始創造您自己的Prompt?讓生成式AI成為您工作上的好夥伴。

--

--

Sean Yeh
Python Everywhere -from Beginner to Advanced

# Taipei, Internet Digital Advertising,透過寫作讓我們回想過去、理解現在並思考未來。並樂於分享,這才是最大贏家。