幾個月來,ChatGPT、GPT-4 等大模型陸續發表。這些模型表現出了強大的湧現能力,但模型產生的結果是隨機的,時好時壞,部分原因與 Prompt 的設計密切相關。
很多人將 Prompt 比喻為大模型的咒語,在引導模型產生內容方面影響很大,如何選擇 Prompt 成了每個 AI 研究者關注的問題。最近微軟官方出了一份輔導指南,該內容介紹了 Prompt 設計和工程中的一些進階玩法,涵蓋系統消息、少樣本學習、非聊天場景等內容。
每部分內容都有技術介紹和範例展示,下面我們看看具體內容有哪些。
系統訊息
系統訊息包含在 Prompt 的開頭,用於為模型提供上下文、說明或與用例相關的其他資訊。使用者可以透過系統訊息描述模型應該回答什麼、不應該回答什麼,以及定義模型回復的格式。
下圖的範例展示了系統訊息和模型產生的回復:
通常,系統消息還可以是這樣的:
上表中 Assistant 是一個由 OpenAI 訓練的大語言模型。
Assistant 是一個智慧聊天機器人,旨在幫助使用者回答問題。要求模型只能使用給定的上下文來回答問題,如果不確定答案,你可以說「我不知道」。
Assistant 是一個智慧聊天機器人,例如其能幫助使用者回答稅務相關問題。
又比如你是一個 Assistant,旨在從文本中提取實體。使用者將粘貼一串文本,你將以 JSON 物件的形式回應你從文本中提取的實體。
這是輸出格式的範例:
{"name": "","company": "","phone_number": ""}
上面就是關於系統訊息的介紹,不過一個重要的細節是,即使是設計良好的系統消息,模型仍有可能產生與系統消息指令相矛盾的錯誤回復。
小樣本學習
讓語言模型適應新任務的一種常見方法是使用小樣本學習。小樣本學習提供了一組訓練樣本作為 Prompt 的一部分,以便為模型提供額外的上下文資訊。
使用者和 Assistant 之間的一系列資訊(以新的 Prompt 格式編寫)可以作為小樣本學習的範例。這些範例可用於引導模型以某種方式做出回應、模擬特定行為並為常見問題提供種子答案。
Prompt 的基本結構。
非對話場景
雖然當前大模型的主要應用場景是對話生成場景,但也可以用在非對話場景。例如,對於情感分析場景,你可能會使用以下 Prompt:
使用明確的指令
一般來講,資訊在 Prompt 中出現的順序很重要。由於 GPT 類模型是以特定方式構建的,該構建程序定義了模型對輸入的處理方式。研究表明,在 Prompt 開始時告訴模型你希望它執行的任務,然後再共用其他上下文資訊或範例,可以説明模型產生更高品質的輸出。
最後重複一遍指令
模型容易受到最新偏差的影響,在這種情況下,末尾 Prompt 資訊可能比開頭 Prompt 資訊對輸出的影響更大。因此,在 Prompt 末尾重複指令值得一試。
對輸出的操作
這種情況是指在 Prompt 末尾包含幾個單詞或短語以獲得符合所需形式的模型回應。例如,使用諸如「Here’s a bulleted list of key points:\n- 」之類的 Prompt 可以幫助確保輸出格式為專案符號清單。
加入語法
為 Prompt 加入語法,例如標點符號、標題等,這樣做使輸出更容易解析。
下面範例中,不同的資訊源或 step 之間加入了分隔符號(在本例中為 ---)。
這種操作允許使用 --- 作為生成的停止條件。此外,部分標題或特殊變數以大寫形式出現以進行區分。
把任務分解
如果將任務分解為更小的 step,大型語言模型 (LLM) 通常會表現得更好。
注意,這裡使用了語法來區分各個部分並對輸出進行初始化。在這個簡單的例子中,將任務從一個 step 分解為兩個 step 結果並不很明顯,但是當試圖對包含許多事實聲明的大塊文本進行此操作時,將任務分解會產生顯著的差異。
思維鏈提示
這是分解任務技術的一種變體。在這種方法中,不是將任務拆分為更小的 step,而是指示模型回應逐步進行並呈現所有涉及的 step。這樣做可以減少結果不準確,並使評估模型回應更加容易。
提供真實上下文
在該方法下,本文建議提供給模型真實資料。一般來講,原始資料越接近最終答案,模型需要做的工作就越少,這意味著模型出錯的機會就越少。在下面範例中,系統消息提供了最新的文章,然後要求模型給出一些早期客戶,模型準確的給出了答案。
除此以外,微軟在這份指南中還介紹了關於 Prompt 其他技巧,大家可以前去原文查看,獲取更多資訊。
資料來源:
加入電腦王Facebook粉絲團