少量樣本提示
概述
改善模型效能最有效的方法之一是向模型提供您期望它執行的範例。將範例輸入和預期輸出添加到模型提示的技術稱為「少量樣本提示」。此技術基於《Language Models are Few-Shot Learners》論文。在進行少量樣本提示時,有幾件事需要考慮
- 範例是如何生成的?
- 每個提示中有多少個範例?
- 範例如何在運行時選擇?
- 範例在提示中如何格式化?
以下是每項的考量。
1. 生成範例
少量樣本提示的第一個也是最重要的步驟是提出一個良好的範例數據集。好的範例應在運行時相關、清晰、資訊豐富,並提供模型尚不知道的資訊。
在高層次上,生成範例的基本方法有
- 手動:一個人/人們生成他們認為有用的範例。
- 更好的模型:使用更好的(可能更昂貴/更慢的)模型的回應作為更差的(可能更便宜/更快的)模型的範例。
- 使用者回饋:使用者(或標註者)對與應用程式的互動留下回饋,並根據該回饋生成範例(例如,所有具有正面回饋的互動都可以轉化為範例)。
- LLM 回饋:與使用者回饋相同,但此過程通過讓模型自我評估來自動化。
哪種方法最好取決於您的任務。對於需要真正理解少數核心原則的任務,手工製作一些真正好的範例可能很有價值。對於正確行為空間更廣泛且更細緻的任務,以更自動化的方式生成許多範例可能很有用,以便更有可能為任何運行時輸入提供一些高度相關的範例。
單輪 vs. 多輪範例
在生成範例時需要考慮的另一個維度是範例實際顯示的內容。
最簡單的範例類型只有使用者輸入和預期模型輸出。這些是單輪範例。
一種更複雜的範例類型是範例是整個對話,通常模型最初回應不正確,然後使用者告訴模型如何更正其答案。這稱為多輪範例。多輪範例對於更細緻的任務可能很有用,在這些任務中,顯示常見錯誤並詳細說明它們為何錯誤以及應採取哪些措施很有用。
2. 範例數量
一旦我們有了範例數據集,我們就需要考慮每個提示中應該有多少個範例。關鍵的權衡是,更多範例通常會提高效能,但更大的提示會增加成本和延遲。並且超過某個閾值,過多的範例可能會開始混淆模型。找到合適的範例數量高度依賴於模型、任務、範例品質以及您的成本和延遲約束。軼事表明,模型越好,它需要執行良好的範例就越少,並且您越快達到添加更多範例的收益遞減。但是,可靠地回答這個問題的最佳/唯一方法是使用不同數量的範例運行一些實驗。
3. 選擇範例
假設我們沒有將整個範例數據集添加到每個提示中,我們需要有一種方法可以根據給定的輸入從我們的數據集中選擇範例。我們可以做到這一點
- 隨機
- 通過輸入的(語義或基於關鍵字的)相似性
- 基於其他一些約束,例如 Token 大小
LangChain 有許多 ExampleSelectors
,可以輕鬆使用其中任何一種技術。
通常,按語義相似性選擇會帶來最佳模型效能。但是,這有多重要再次取決於模型和任務,並且值得實驗。
4. 格式化範例
現在大多數最先進的模型都是聊天模型,因此我們將重點關注為這些模型格式化範例。我們的基本選項是插入範例
- 在系統提示中作為字串
- 作為它們自己的訊息
如果我們將範例作為字串插入到系統提示中,我們需要確保模型清楚地知道每個範例的開始位置以及哪些部分是輸入與輸出。不同的模型對不同的語法反應更好,例如 ChatML、XML、TypeScript 等。
如果我們將範例作為訊息插入,其中每個範例都表示為人類、AI 訊息序列,我們可能還想為我們的訊息分配名稱,例如 "example_user"
和 "example_assistant"
,以清楚表明這些訊息對應於與最新輸入訊息不同的參與者。
格式化工具調用範例
當我們的範例輸出具有工具調用時,將範例格式化為訊息的一個棘手領域是。這是因為不同的模型對生成任何工具調用時允許的訊息序列類型有不同的約束。
- 某些模型要求任何帶有工具調用的 AIMessage 必須緊隨其後的是每個工具調用的 ToolMessages,
- 某些模型還要求任何 ToolMessages 必須緊隨其後的是 AIMessage,然後才能出現下一個 HumanMessage,
- 如果聊天歷史記錄中有任何工具調用/ToolMessages,則某些模型要求將工具傳遞到模型中。
這些要求是模型特定的,應針對您使用的模型進行檢查。如果您的模型在工具調用後需要 ToolMessages 和/或在 ToolMessages 後需要 AIMessages,並且您的範例僅包含預期的工具調用而不包含實際的工具輸出,您可以嘗試在每個範例的末尾添加虛擬 ToolMessages / AIMessages,其中包含通用內容以滿足 API 約束。在這些情況下,特別值得實驗將範例作為字串與訊息插入,因為具有虛擬訊息可能會對某些模型產生不利影響。
您可以在此處查看 Anthropic 和 OpenAI 如何在兩個不同的工具調用基準測試中回應不同的少量樣本提示技術的案例研究。