另一個提示策略是多範例提示(few shot prompting), 這種策略將為模型展示一些例子(shots),從而更具象地描述你的需求。
在上圖的例子中,我們嘗試對使用者反饋進行正面(positive)或反面(negative)的分類。我們向模型展示了 3 個例子,然後我們輸入一個不在例子裡面的反饋(It doesnt work!:
)。模型發現頭三個例子都被分類到 positive
或者 negative
,進而透過這些資訊將我們最後輸入的反饋分類到了 negative
。
我們如何結構化地設計例子也是非常重要的。由於我們已經將頭三個例子結構化成: input: classification
,因此模型最終也跟著同樣只輸出分類的結果,而不是一段完整的句子,例如 this review is positive
。
每一個 "輸入-輸出" (例如 "Didn't work very well: negative") 對被稱為一個範例
多範例提示的一個關鍵場景是當我們需要以特定的結構
輸出結果,但是又很難向模型進行描述的時候。為了理解這一點,讓我們看這樣一個例子:假設您需要透過分析當地的報紙文章來彙編附近城鎮居民的姓名和職業。您希望模型讀取每篇文章並以Last, First [OCCUPATION]
格式輸出姓名和職業列表。為了讓模型做到這一點,您可以向它展示一些範例:
透過向模型展示正確的輸出格式範例,它就能夠為新的文章生成正確的輸出結果。
儘管我們可以透過使用指令提示符的方式來生成相同的輸出,但多範例提示在輸出結果的一致性上會更好。
除了多範例提示(few-shot prompting)之外,還有另外兩種不同的型別。它們之間唯一的區別就是你向模型展示了多少範例。
型別:
無範例提示(Zero-shot prompting)是最基本的提示形式。它僅僅是向模型展示提示資訊,沒有提供任何範例,並要求其生成回答。因此,你到目前為止看到的所有指令和角色提示都屬於無範例提示。無範例提示的另一個例子是:
Add 2+2:
這是無範例提示,因為我們沒有向模型展示任何完整的範例。
單範例提示(One-shot prompting)是向模型展示一個範例。例如:
Add 3+3: 6
Add 2+2:
我們僅向模型展示了一個完整的範例(“Add 3+3: 6”),因此這是一個單範例提示。
多範例提示(Few-shot prompting)是向模型展示 2 個或更多範例。例如:
Add 3+3: 6
Add 5+5: 10
Add 2+2:
這是我們向模型展示了至少 2 個完整的範例(“Add 3+3: 6”和“Add 5+5: 10”)。通常,展示給模型的範例越多,輸出結果就越好,因此在大多數情況下,多範例提示比另外兩種提示更受歡迎。
多範例提示是讓模型生成準確且格式正確的輸出的強大技術!
By gezilinll.