微軟官方親自出教程,拿捏“Prompt工程”高級玩法
選自微軟博客
機器之心編譯
機器之心編輯部
大模型有了,下一步就是設計 Prompt 了。
幾個(gè)月來(lái),ChatGPT、GPT-4 等大模型陸續發(fā)布。這些模型表現出了強大的涌現能力,但模型生成的結果是隨機的,時(shí)好時(shí)壞,部分原因與 Prompt 的設計密切相關(guān)。
很多人將 Prompt 比喻為大模型的咒語(yǔ),在引導模型生成內容方面影響很大,如何選擇 Prompt 成了每個(gè) AI 研究者關(guān)注的問(wèn)題。最近微軟官方出了一份教程,該教程介紹了 Prompt 設計和工程中的一些高級玩法,涵蓋系統消息、少樣本學(xué)習、非聊天場(chǎng)景等內容。
每部分內容都有技術(shù)介紹和示例展示,下面我們看看具體內容有哪些。
關(guān)于 Prompt,你應該了解這些
系統消息
系統消息包含在 Prompt 的開(kāi)頭,用于為模型提供上下文、說(shuō)明或與用例相關(guān)的其他信息。用戶(hù)可以通過(guò)系統消息描述模型應該回答什么、不應該回答什么,以及定義模型回復的格式。
下圖示例展示了系統消息和模型生成的回復:
通常,系統消息還可以是這樣的:
上表中 Assistant 是一個(gè)由 OpenAI 訓練的大語(yǔ)言模型。
Assistant 是一個(gè)智能聊天機器人,旨在幫助用戶(hù)回答問(wèn)題。要求模型只能使用給定的上下文來(lái)回答問(wèn)題,如果不確定答案,你可以說(shuō)「我不知道」。
Assistant 是一個(gè)智能聊天機器人,例如其能幫助用戶(hù)回答稅務(wù)相關(guān)問(wèn)題。
又比如你是一個(gè) Assistant,旨在從文本中提取實(shí)體。用戶(hù)將粘貼一串文本,你將以 JSON 對象的形式回應你從文本中提取的實(shí)體。
這是輸出格式的示例:
上面就是關(guān)于系統消息的介紹,不過(guò)一個(gè)重要的細節是,即使是設計良好的系統消息,模型仍有可能生成與系統消息指令相矛盾的錯誤回復。
小樣本學(xué)習
讓語(yǔ)言模型適應新任務(wù)的一種常見(jiàn)方法是使用小樣本學(xué)習。小樣本學(xué)習提供了一組訓練樣本作為 Prompt 的一部分,以便為模型提供額外的上下文信息。
用戶(hù)和 Assistant 之間的一系列信息(以新的 Prompt 格式編寫(xiě))可以作為小樣本學(xué)習的示例。這些示例可用于引導模型以某種方式做出響應、模擬特定行為并為常見(jiàn)問(wèn)題提供種子答案。
Prompt 的基本結構。
非對話(huà)場(chǎng)景
雖然當前大模型的主要應用場(chǎng)景是對話(huà)生成場(chǎng)景,但也可以用在非對話(huà)場(chǎng)景。例如,對于情感分析場(chǎng)景,你可能會(huì )使用以下 Prompt:
使用明確的指令
一般來(lái)講,信息在 Prompt 中出現的順序很重要。由于 GPT 類(lèi)模型是以特定方式構建的,該構建過(guò)程定義了模型對輸入的處理方式。研究表明,在 Prompt 開(kāi)始時(shí)告訴模型你希望它執行的任務(wù),然后再共享其他上下文信息或示例,可以幫助模型產(chǎn)生更高質(zhì)量的輸出。
最后重復一遍指令
模型容易受到最新偏差的影響,在這種情況下,末尾 Prompt 信息可能比開(kāi)頭 Prompt 信息對輸出的影響更大。因此,在 Prompt 末尾重復指令值得一試。
對輸出的操作
這種情況是指在 Prompt 末尾包含幾個(gè)單詞或短語(yǔ)以獲得符合所需形式的模型響應。例如,使用諸如「Here’s a bulleted list of key points:\n- 」之類(lèi)的 Prompt 可以幫助確保輸出格式為項目符號列表。
添加語(yǔ)法
為 Prompt 添加語(yǔ)法,例如標點(diǎn)符號、標題等,這樣做使輸出更容易解析。
下面示例中,不同的信息源或 step 之間添加了分隔符(在本例中為 ---)。這種操作允許使用 --- 作為生成的停止條件。此外,部分標題或特殊變量以大寫(xiě)形式出現以進(jìn)行區分。
把任務(wù)分解
如果將任務(wù)分解為更小的 step,大型語(yǔ)言模型 (LLM) 通常會(huì )表現得更好。
注意,這里使用了語(yǔ)法來(lái)區分各個(gè)部分并對輸出進(jìn)行初始化。在這個(gè)簡(jiǎn)單的例子中,將任務(wù)從一個(gè) step 分解為兩個(gè) step 結果并不很明顯,但是當試圖對包含許多事實(shí)聲明的大塊文本進(jìn)行此操作時(shí),將任務(wù)分解會(huì )產(chǎn)生顯著(zhù)的差異。
思維鏈提示
這是分解任務(wù)技術(shù)的一種變體。在這種方法中,不是將任務(wù)拆分為更小的 step,而是指示模型響應逐步進(jìn)行并呈現所有涉及的 step。這樣做可以減少結果不準確,并使評估模型響應更加容易。
提供真實(shí)上下文
在該方法下,本文建議提供給模型真實(shí)數據。一般來(lái)講,原始數據越接近最終答案,模型需要做的工作就越少,這意味著(zhù)模型出錯的機會(huì )就越少。在下面示例中,系統消息提供了最新的文章,然后要求模型給出一些早期客戶(hù),模型準確的給出了答案。
除此以外,微軟在這份指南中還介紹了關(guān)于 Prompt 其他技巧,大家可以前去原文查看,獲取更多信息。