為開發者開設的 ChatGPT Prompt Engineering 線上課程

Posted by Andylinee on Saturday, April 29, 2023

從 2022 年底 ChatGPT 問世之後,開始出現許多分享如何使用 ChatGPT 改善工作流程、提升個人生產力、甚至快速打造產品賺錢,但要能夠發揮 ChatGPT 最大的價值就必須要有好的提示能力,也就是這半年內才興起的新技能 「Prompt Engineering」(提示工程)。除了在各大社群媒體上有許多實際的經驗分享,也有如 Learn Prompting 這樣提供詳細教學的網站。而終於在前天(2023/04/27)由知名機器學習大師吳恩達 Andrew Ng 所創辦的 DeepLearning.AI 和 OpneAI 共同推出 Prompt Engineering 的線上課程,此課程專門為使用 OpenAI API 串接服務的開發者所開設,課程為免費,長度約為1小時。

這堂由 DeepLearning.AI 創辦人吳恩達 Andrew Ng 和 OpenAI 的 Isa Fulford 共同講授的「ChatGPT Prompt Engineering for Developers」課程,在 DeepLearning.AI 網站上免費提供給想要串接 OpenAI API 的開發者學習,瞭解如何正確使用「Prompt」(提示詞)來和 GPT 模型互動,進而在所開發的服務中整合 GPT 模型,課程搭配 Jupyter notebook 提供範例程式碼讓學員能即時驗證。 Jupyter notebook

這堂長度為1小時左右的課程內容涵蓋了以下幾個部分:

  • Prompt 的原則
  • 迭代的 prompt 開發流程
  • ChatGPT 的能力
  • 使用 ChatGPT 打造 Chatbot

以下為筆者整理的課堂筆記,推薦有興趣的讀者撥出一小時去看完整的課程,肯定會有不少收穫。


大型語言模型

一開始先介紹目前主流的兩種 大型語言模型(Large Language Models, LLMs),分別為 Base LLMInstruction Tune LLMLLMs Base LLM 主要是透過由網路上或其他來源所搜集的文本訓練資料,訓練來預測下一個字詞。Instruction Tune LLM 則是透過針對指示或好的意圖去對模型進行微調(fine-tune),也就是所謂的 RLHF(Reinforcement Learning with Human Feedback),而因此 Instruction Tune LLM 所生成內容通常會更有用、誠實且無害。而 ChatGPT 就是屬於 RLHF 的 LLM。


Prompt 原則

接著分享在對 LLM 進行 prompt 時的兩大原則:「撰寫清楚且明確的指示」及「讓模型有時間去思考」,也分別提供執行這兩個原則的方針。

原則一:撰寫清楚且明確的指示

  • 使用分隔符號(delimeter)來清楚標示出輸入內容的各個部分,也可以避免被 prompt injection 攻擊。常用的分隔符號有:"""```---< ><tag> </tag>
  • 要求以結構化資料格式回傳:HTMLJSON
  • 確認執行指示的條件是否滿足
  • 提供正確的範例,再讓模型去完成任務

原則二:讓模型有時間去思考

  • 列出完成任務的步驟
  • 提示模型在導出結論之前先自己產出答案

模型的限制

讓提示詞中的內容並非完全正確時,可能會誤導(hallucinate) LLM 產出錯誤的回答。為了減少 LLM 被誤導的情況,可以先請 LLM 找出相關資訊,再依照找到的相關資訊去回答問題。


迭代的 Prompt 開發流程

iterative-prompt-development 和機器學習的開發流程相似,prompt 的開發流程也需要持續迭代改善來找到最佳的 prompt,通常會有以下四個階段:

  • 清楚且明確的 prompt 提示文字
  • 分析沒有得到預期結果的原因
  • 重新精煉想法及 prompt 提示文字
  • 重複執行

常見的問題

  • 回答的文字內容太長:限制回答的字數/句數/字元數
  • 回答的文字關注在錯誤的細節:要求模型關注在受眾想要知道的相關面向
  • 需要透過表格來描述:要求模型萃取資訊並整理成表格

ChatGPT 的能力

接著分別介紹 ChatGPT 的主要四個能力:摘要(Summary)推論(Infer)轉換(Transform)延伸(Expand),課程中搭配 Jupyter Notebook 的範例程式碼能夠直接了解如何使用 ChatGPT 的這些用途,以下將會簡單分享重點。

摘要 Summary

  • 專注於特定主題進行摘要
  • 有字數/句數/字元數上限進行摘要
  • 專注於不同主題進行摘要
  • 試著以 extract 代替 summarize

推論 Infer

  • 推論文字內容的情緒為正向還是負向
  • 推論文字內容為何種情緒
  • 從文字內容推論出相關內容(如從商品評論文字中推論出產品名稱及品牌)
  • 推論文字內容的主題標籤

轉換 Transform

  • 將文字內容轉換成各種語言
  • 將文字內容依據受眾轉換成不同風格
  • 依需求轉換格式:須在 prompt 中指定輸入及輸出的格式
  • 檢查拼字錯誤及文法錯誤,並糾正改錯:在 prompt 中使用 proofreadproofread and correct

延伸 Expand

課程範例為透過客戶的留言回饋來生成相對應的客服信件內容,先判斷客戶回饋為正向還是負向,再依據內容所提及的事項生成相對應的客服回覆信件。


使用 ChatGPT 打造 Chatbot

messages 在傳送給 OpenAI API 中的 messages 參數中會指定不同 prompt 的角色為何,在 GPT model 中主要有3種角色,分別為 SystemAssistantUser

  • System:設定 Assistant 的行為
  • Assistant:ChatGPT 模型
  • User:ChatGPT API 的呼叫者 role

Pizza 訂餐聊天機器人

在課程中以 Pizza 訂餐聊天機器人為範例,示範如何藉由為不同 role 設定 prompt 來打造一個可持續互動的 Chatbot。 orderbot


課程總結

在這堂一小時的課程中,主要介紹了以下幾個重點:

  • Prompt 的原則
  • 迭代的 prompt 開發流程
  • ChatGPT 的能力
  • 使用 ChatGPT 打造 Chatbot 內容雖然不多,但對於想要更近一步了解 ChatGPT 的使用方式,甚至透過串接 API 來整合服務的開發者來說,都是非常推薦的學習資源,這篇筆記內容有限,歡迎有興趣了解更多的讀者前往觀看課程及閱讀官方文件。

《DTW 數位科技週報》

如果想要每週獲得最新的數位科技、區塊鏈及人工智慧新聞整理,歡迎訂閱免費電子報:《DTW 數位科技週報》