看完基礎篇的各種場景介紹後,你應該對 Prompt 有較深的理解。之前的章節我們講的都是所謂的「術」,更多地集中講如何用,但講「道」的部分不多。高階篇除了會講更高階的運用外,還會講更多「道」的部分。高階篇的開篇,我們來講一下構成 prompt 的框架。
查閱了非常多關於 ChatGPT prompt 的框架資料,我目前覺得寫得最清晰的是 Elavis Saravia 總結的框架,他認為一個 prompt 裡需包含以下幾個元素:
只要你按照這個框架寫 prompt ,模型返回的結果都不會差。
當然,你在寫 prompt 的時候,並不一定要包含所有4個元素,而是可以根據自己的需求排列組合。比如拿前面的幾個場景作為例子:
另一個我覺得很不錯的 Framework 是 Matt Nigh 的 CRISPE Framework,這個 framework 更加複雜,但完備性會比較高,比較適合用於編寫 prompt 模板。CRISPE 分別代表以下含義:
以下是這幾個引數的例子:
Step | Example |
---|---|
Capacity and Role | Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer. 把你想象成機器學習框架主題的軟體開發專家,以及專業部落格作者。 |
Insight | The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning. 這個部落格的讀者主要是有興趣瞭解機器學習最新進展技術的專業人士。 |
Statement | Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries. 提供最流行的機器學習框架的全面概述,包括它們的優點和缺點。包括現實生活中的例子,和研究案例,以說明這些框架如何在各個行業中成功地被使用。 |
Personality | When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun. 在迴應時,混合使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的寫作風格。 |
Experiment | Give me multiple different examples. 給我多個不同的例子。 |
在基礎篇裡的推理場景,我提到了 Zero-Shot Prompting 的技術,本章會詳細介紹它是什麼,以及使用它的技巧。Zero-Shot Prompting 是一種自然語言處理技術,可以讓計算機模型根據提示或指令進行任務處理。各位常用的 ChatGPT 就用到這個技術。
傳統的自然語言處理技術通常需要在大量標註資料上進行有監督的訓練,以便模型可以對特定任務或領域進行準確的預測或生成輸出。相比之下,Zero-Shot Prompting 的方法更為靈活和通用,因為它不需要針對每個新任務或領域都進行專門的訓練。相反,它通過使用預先訓練的語言模型和一些範例或提示,來幫助模型進行推理和生成輸出。
舉個例子,我們可以給 ChatGPT 一個簡短的 prompt,比如 描述某部電影的故事情節
,它就可以生成一個關於該情節的摘要,而不需要進行電影相關的專門訓練。
但這個技術並不是沒有缺點的:
基於上述的第三點缺點,研究人員就找到了一個叫 Chain of Thought 的技巧。
這個技巧使用起來非常簡單,只需要在問題的結尾裡放一句 Let‘s think step by step
(讓我們一步步地思考),模型輸出的答案會更加準確。
這個技巧來自於 Kojima 等人 2022 年的論文 Large Language Models are Zero-Shot Reasoners。在論文裡提到,當我們向模型提一個邏輯推理問題時,模型返回了一個錯誤的答案,但如果我們在問題最後加入 Let‘s think step by step
這句話之後,模型就生成了正確的答案:
論文裡有講到原因,感興趣的朋友可以去看看,我簡單解釋下為什麼(