Learn how to “Ask” 學習如何對語言模型提問 — Prompt engineering (Basic)

Chengcheng Hsu
6 min readApr 4, 2024

--

Damn ! 怎麼你的 ChatGPT &Claude &Gemini 比較聰明

Photo by Trnava University on Unsplash

前言:

公司每週都有一個輪流的分享時間,可以分享自己工作上或是生活的感觸想法等等,我自己算是還滿喜歡的,因為可以找工作以外的議題來研究,而這是其中一次的分享,是關於 Prompt Engineering 的主題,這是當時的簡報連結,以下的圖也都出自於這。

Prompt Engineering

GPT 至今已經不是新的詞,所以大家現在都有一套自己和 GPT(大型語言模型)溝通的模式,而這些詢問對語言模型來說會被稱為「prompt」,我們多少都聽過語言模型背後就是「文字接龍」,就是根據 prompt 加上模型的統計機率去推測它應該給什麼答案,而目前 Prompt Engineering 的理論旨在探討如何設計良好的 prompt,來引導語言模型生成更精確、更有效率的回答,這與向人提問一樣,如果問題或提供的資訊描述不夠清晰,就有很大的機會得到不正確的答案。

在 2023 年初時 deeplearning.ai 和 openai 有共同推出一個約一個多小時的免費的課程,是透過 jupter 和 pyhon 去實作的,課程的目標除了教基本的 prompt 以外,他們也想激發開發人員的想像力,應用 LLMs 來開發新的應用程式來解決更多事情。

那我看完後搭配一些文章是摘要出一些 prompt 的共同原則。

Principle 1: Write clear and specific instructions

需要確保你的 propmt 是簡潔和有明確的指令

技巧一:你可以運用分隔符號如引號、反引號去區分你要轉換的指令和要被轉換的文字,例如可以 prompt 翻譯並檢查 “” 內的文字有無文法錯誤。

技巧二:你可以指定他輸出你要的格式,無論是 html 或是 json ,加上你擺一個 placeholder 要它填空。

技巧三:你可以給他一段文字,讓他去判斷裡面的內容有沒有你要的,如果沒有就產生特定的文字等等,如下面去幫你總結如何泡一杯茶的步驟。

技巧四:應該避免一些模糊的單位詞,例如與其問 給我一些推薦景點,給我更多推薦書籍,你應該給明確的量詞單位,修改成 給我十個推薦景點

技巧五:官方給的名詞叫做 N-shots ,也就是你可以給予模型一些簡單的範例讓他去學習,像是右邊給予範例去判斷一句話的語氣是正向還是負面,若是寫程式你可以先給予他你想要的寫法,或是你的 coding style 讓他去模仿。

技巧六:keywords,給予關鍵字去達成不同的目的,例如:Summarizing、Expanding、 Transforming 和 Inferring。

以下範例的使用情境可能是一間公司在網站上給予顧客一個地方可以提供售後回饋,而這位客戶回饋的大意是說他買了一個絨毛娃娃給他女兒,然後他描述的商品的外觀,並說好像沒有那麼物超所值,最後他講到的 shipping 的問題等等。這時將這段評價餵給語言模型並透過關鍵字來分門別類,然後再發送給相關的部門,這樣每個部門就不用都花時間去掃每個回饋找想要的段落,在這裏的範例只是一個回饋,如果原本每個部門都要花一分鐘掃一個回饋才能找到他們想要的資訊,而現在透過語言模型來做可能不到幾秒鐘,今天換作是收到 1000 個回饋,可想而知可以節省掉多少時間。

Principle 2: Chain-of-Thought

有一些太複雜的邏輯問題你可以加上幾個字讓他去想,譬如說 step by step、in great detail 以及 follow carefully,這個方式就會被稱作 Chain-of-Thought,所以如果你的問題是具邏輯性的,不仿加上這個關鍵字,或是搭配前面提到的 N-shots 來讓語言模型模仿你一步步的想法。

Principle 3: Role Prompting

如果你 prompt 之前加上他是什麼角色,其實更有助於他解決你的問題,更高機率篩出你要的答案,例如你是 PM 想要準備面試題目,這是你若打說 幫我做 PM 的模擬面試,這時語言模型不太知道它要扮演一個資深的 PM 幫你面試,還是一個統整資源的老闆來幫你面試,難以收斂一個專門的問題給你,因此可以改成 你是一位資深的 PM,幫我做 PM 的模擬面試 或是在第一輪面試通常會遇到 HR ,所以可以改成你是一位資深的 HR,幫我做 PM 的模擬面試

但使用過語言模型都知道至今 2024 年還是有些限制的,例如 :

  1. 它背後的資料庫本來就沒有你要的答案時你怎麼 prompt 都沒用,例如幫我列出某某公司的使用者名單
  2. 因為語言模型是統計機率,它就有機率答錯,因此交叉比對不同的語言模型給出的答案,或是修改自己的 prompt 會是還不錯的作法

以上大概是 Prompt engineering 的基本技巧,祝大家都能 prompt 到自己想要的答案。

References

  1. Prompt Engineering Guide
  2. Learn Prompting
  3. Prompt Engineering — lil’s blog
  4. Awesome ChatGPT Prompts
  5. 如何用ChatGPT打造一個AI產品? Part2: 基礎Prompt Engineering入門

--

--