Basics of Prompting(提示的基礎)
在當前以大型語言模型(LLMs)為核心的人工智慧時代,Prompt Engineering(提示工程) 已成為不可或缺的技能。透過設計精準、具結構的提示(prompt),我們能有效地指導模型完成各種任務,例如文本生成、摘要、分類或數學推理。基礎提示通常包含指令(instruction)、問題或範例、以及必要的上下文資訊;這些元素協同作用,使模型能夠理解並達成預期目標
本篇目標
提示大型語言模型(Prompting an LLM)
你可以透過簡單的提示(prompt)完成很多任務,
但結果的品質取決於以下幾個因素:
- 你提供了多少資訊
- 提示撰寫得是否清楚、具結構性
一個提示可以包含以下元素:
- 指令或問題本身
- 相關上下文
- 使用者輸入
- 範例(examples)
這些元素可以幫助你更有效地引導模型,以提升輸出的品質。
基本提示範例
Prompt
The sky is
Output
blue.
注意事項:關於 Chat 模型中的角色結構
當你使用 OpenAI 的 Chat 模型(例如 gpt-3.5-turbo 或 gpt-4)時,
可以透過三種不同的角色來組織你的提示(prompt):
system:用來設定助理的整體行為或語氣(可選)user:代表使用者的訊息,通常是問題或指令assistant:代表模型的回應,也可以用來提供範例回覆
上述的例子中僅使用了 user 訊息,這是最直接的提示方式。
為了簡化說明,除非特別指出,本指南中的所有範例都僅使用 user 訊息來提示 gpt-3.5-turbo。
你也可以事先定義一個 assistant 訊息,讓模型學習你期望的回應方式,
這對於微調行為或建立一致的語氣風格非常有幫助。
從前面提到的提示範例中可以看到,語言模型會根據上下文 "The sky is" 回應出合理的 token(例如 "blue")。
但實際輸出可能與你想完成的任務相差甚遠。
這個基本範例說明了一個重點:
你需要提供更多的上下文或明確的指令,才能讓模型完成你真正想要的任務。這就是 Prompt Engineering 的本質。
讓我們來試著改進提示
讓我們來優化一下先前的簡單提示,加入明確的指令語句:
Prompt
Complete the sentence:
The sky is
Output
blue during the day and dark at night.
透過上述的提示,你明確地指示模型要「完成這句話」。
因此輸出的結果變得更加合理,因為它精準地遵循了你的指令(“complete the sentence”)。
這種設計有效提示來引導模型執行特定任務的方式,
正是本指南中所稱的 Prompt Engineering(提示工程)。
上述例子只是展示了現今大型語言模型(LLMs)能做到的基本範圍。
現在的 LLM 能執行的進階任務包含但不限於:
- 文本摘要(Text Summarization)
- 數學推理(Mathematical Reasoning)
- 程式碼生成(Code Generation)
提示格式(Prompt Formatting)
你剛剛已經嘗試過一個非常簡單的提示。
一般來說,一個標準的提示具有以下格式之一:
<Question>?
或
<Instruction>
你可以將提示轉換為 問答格式(QA Format),
這在許多問答資料集中是常見的標準格式,例如:
Q: <Question>?
A:
當像上面這樣提示時,它也被稱為零射擊提示,即你直接提示模型進行響應,而沒有任何關於你希望它完成的任務的例子或演示。 一些大型語言模型能夠執行零射擊提示,但這取決於手頭任務的複雜性和知識,以及模型被訓練好執行的任務。
具體提示示例如下:
Prompt
Q: What is prompt engineering?
對於較新的模型,你甚至可以省略 Q:,
因為模型能從語句結構中推斷這是個問題。
例如可以簡化為:
Prompt
What is prompt engineering?
少量示範提示(Few-shot Prompting)
根據上述的提示格式,另一個非常有效的提示技巧是 Few-shot Prompting,
也就是提供幾個示範(exemplars),幫助模型學習如何執行任務。
你可以這樣設計提示:
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
QA 格式的 Few-shot 提示會長這樣:
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A: <Answer>
Q: <Question>?
A:
請記得:不一定要使用 QA 格式,實際格式應根據任務類型調整。
範例:簡單分類任務的 Few-shot Prompt
Prompt
This is awesome! // Positive
This is bad! // Negative
Wow that movie was rad! // Positive
What a horrible show! //
Output
Negative
Few-shot 提示的關鍵價值在於它啟用了一種叫做 in-context Learning(上下文學習) 的能力,也就是模型可以根據提示中提供的幾個範例,自行學會如何執行任務。
References
上一篇:介紹 - 模型設定
下一篇:介紹 - 提示語組成要素