Introduction-Basics of Prompting

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-turbogpt-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

Prompt Engineering Guide


上一篇:介紹 - 模型設定
下一篇:介紹 - 提示語組成要素