從 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 提供範例程式碼讓學員能即時驗證。
這堂長度為1小時左右的課程內容涵蓋了以下幾個部分:
- Prompt 的原則
- 迭代的 prompt 開發流程
- ChatGPT 的能力
- 使用 ChatGPT 打造 Chatbot
以下為筆者整理的課堂筆記,推薦有興趣的讀者撥出一小時去看完整的課程,肯定會有不少收穫。
大型語言模型
一開始先介紹目前主流的兩種 大型語言模型(Large Language Models, LLMs),分別為 Base LLM 及 Instruction Tune LLM。 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>
。 - 要求以結構化資料格式回傳:
HTML
或JSON
- 確認執行指示的條件是否滿足
- 提供正確的範例,再讓模型去完成任務
原則二:讓模型有時間去思考
- 列出完成任務的步驟
- 提示模型在導出結論之前先自己產出答案
模型的限制
讓提示詞中的內容並非完全正確時,可能會誤導(hallucinate) LLM 產出錯誤的回答。為了減少 LLM 被誤導的情況,可以先請 LLM 找出相關資訊,再依照找到的相關資訊去回答問題。
迭代的 Prompt 開發流程
和機器學習的開發流程相似,prompt 的開發流程也需要持續迭代改善來找到最佳的 prompt,通常會有以下四個階段:
- 清楚且明確的 prompt 提示文字
- 分析沒有得到預期結果的原因
- 重新精煉想法及 prompt 提示文字
- 重複執行
常見的問題
- 回答的文字內容太長:限制回答的字數/句數/字元數
- 回答的文字關注在錯誤的細節:要求模型關注在受眾想要知道的相關面向
- 需要透過表格來描述:要求模型萃取資訊並整理成表格
ChatGPT 的能力
接著分別介紹 ChatGPT 的主要四個能力:摘要(Summary)、推論(Infer)、轉換(Transform) 及 延伸(Expand),課程中搭配 Jupyter Notebook 的範例程式碼能夠直接了解如何使用 ChatGPT 的這些用途,以下將會簡單分享重點。
摘要 Summary
- 專注於特定主題進行摘要
- 有字數/句數/字元數上限進行摘要
- 專注於不同主題進行摘要
- 試著以 extract 代替 summarize
推論 Infer
- 推論文字內容的情緒為正向還是負向
- 推論文字內容為何種情緒
- 從文字內容推論出相關內容(如從商品評論文字中推論出產品名稱及品牌)
- 推論文字內容的主題標籤
轉換 Transform
- 將文字內容轉換成各種語言
- 將文字內容依據受眾轉換成不同風格
- 依需求轉換格式:須在 prompt 中指定輸入及輸出的格式
- 檢查拼字錯誤及文法錯誤,並糾正改錯:在 prompt 中使用
proofread
或proofread and correct
延伸 Expand
課程範例為透過客戶的留言回饋來生成相對應的客服信件內容,先判斷客戶回饋為正向還是負向,再依據內容所提及的事項生成相對應的客服回覆信件。
使用 ChatGPT 打造 Chatbot
在傳送給 OpenAI API 中的 messages 參數中會指定不同 prompt 的角色為何,在 GPT model 中主要有3種角色,分別為 System、Assistant 及 User。
- System:設定 Assistant 的行為
- Assistant:ChatGPT 模型
- User:ChatGPT API 的呼叫者
Pizza 訂餐聊天機器人
在課程中以 Pizza 訂餐聊天機器人為範例,示範如何藉由為不同 role 設定 prompt 來打造一個可持續互動的 Chatbot。
課程總結
在這堂一小時的課程中,主要介紹了以下幾個重點:
- Prompt 的原則
- 迭代的 prompt 開發流程
- ChatGPT 的能力
- 使用 ChatGPT 打造 Chatbot 內容雖然不多,但對於想要更近一步了解 ChatGPT 的使用方式,甚至透過串接 API 來整合服務的開發者來說,都是非常推薦的學習資源,這篇筆記內容有限,歡迎有興趣了解更多的讀者前往觀看課程及閱讀官方文件。
《DTW 數位科技週報》
如果想要每週獲得最新的數位科技、區塊鏈及人工智慧新聞整理,歡迎訂閱免費電子報:《DTW 數位科技週報》