利用提示工程優化模型輸出
優化模型效能最容易取得的方法就是透過 提示工程。 提示工程是設計並精煉提示詞以提升語言模型所產生回應的品質、準確性與相關性的過程。 它不需要額外的基礎設施或訓練資料,你可以立刻開始實驗。
了解提示詞組成部分
當你與語言模型互動時,問題的品質會直接影響回答的品質。 一個結構良好的提示能幫助模型了解你需要什麼,並產生更有用的答案。
聊天完成模型的提示通常包含以下組成部分:
- 系統訊息:定義模型行為、角色與約束的指令。
- 使用者訊息:使用者的問題或輸入。
- 助理訊息:先前模型回應,用於多回合對話。
- 範例:範例輸入/輸出對以展示預期回應格式。
你如何結構與組合這些元件,決定了模型的反應效率。
設計有效的系統訊息
系統訊息是一組你提供給模型的指令,用以引導其回應。 系統訊息通常在對話中首先出現,並作為最高層級的指令集。 你可以用它們來:
- 定義助理的角色與界限。
- 設定語氣和溝通方式。
- 指定輸出格式,如 JSON 或項目符號。
- 為你的情境加入安全和品質的限制。
系統訊息可以簡單到:
You are a helpful AI assistant.
或者,也可以包含詳細的規則和格式要求。 例如,旅行社的聊天應用程式可以使用:
You are a friendly travel advisor for Margie's Travel.
Answer only questions related to travel, hotels, and trip planning.
Use a warm, conversational tone.
If you don't have enough information to answer, ask a clarifying question.
Format hotel recommendations as a bulleted list with the hotel name, location, and price range.
這很重要
系統訊息會影響模型,但不保證符合。 你應該測試並迭代系統訊息,並加入其他緩解措施,如內容過濾和評估。
設計系統訊息時,請遵循以下檢查清單:
- 從助理的角色開始:說明角色以及典型請求的預期結果。
- 定義界限:列出助理應避免的主題、動作與內容類型。
- 指定輸出格式:如果你需要特定格式,請清楚說明並保持一致。
- 新增「不確定時」指導方針:告訴模型在使用者的請求模糊、超出範圍或缺乏資訊時該怎麼做。
套用提示模式
有效的提示會使用模式,幫助模型產生更好的回應。 以下是一些常見的圖案:
Persona 模式
指示模特兒採取特定的觀點或角色。 例如,請模特兒以資深行銷專業人士的身份回應,與完全不使用人格面具,結果是不同的。
| 無角色設定 | 有角色設定 | |
|---|---|---|
| 系統訊息 | 沒有 | 你是一位經驗豐富的行銷專業人士,為技術客戶撰寫文章。 |
| 使用者提示 | 撰寫CRM產品的一句描述。 | 撰寫CRM產品的一句描述。 |
| 回應 | CRM 產品是一種設計用來管理公司與客戶互動的軟體工具。 | 透過我們的CRM,體驗無縫的客戶關係管理,透過強大的分析優化營運並推動銷售成長。 |
格式範本模式
在提示中提供範本或結構,以取得特定格式的輸出。 例如,如果你需要一份關於飯店的結構化回應:
Format the result to show:
- Hotel name
- Location
- Star rating
- Price range per night
這種模式確保回應一致且有組織,且在申請中易於理解。
思緒鏈模式
請模型一步步解釋其推理。 這種稱為 思考鏈的技術,能降低結果不準確的機率,並使驗證模型邏輯變得更容易。
例如,你可以不問「哪家飯店最適合四口之家?」,而是可以提示:
Which hotel is best for a family of four? Take a step-by-step approach:
consider room size, amenities for children, location, and price.
相關技術是將 任務拆解 成明確的子步驟 ,然後模型回應, 而不是要求它一次推理所有細節。 例如,你可能先請模型從文章中提取關鍵事實,然後在後續提示中,請它根據這些事實回答問題。 以這種方式分解工作,能減少複雜多階段任務的錯誤。
備註
思緒鏈提示是一種用於非推理模型的技術。 推理模型如 o 系列模型則內部處理逐步邏輯。
少數樣本學習模式
提供一個或多個想要的輸入與輸出範例,幫助模型辨識你想要的模式。 此技術稱為少量範例學習 (若僅有單一範例則稱一次範例學習)。 當沒有提供範例時,稱為 零樣本 學習。
例如,要分類客戶詢問:
Classify the following customer messages:
Message: "I need to change my flight to Rome"
Category: Booking change
Message: "What's the weather like in Bali in March?"
Category: Travel information
Message: "Can I get a refund for my cancelled tour?"
Category:
模型會從範例中學習分類模式,並正確完成最後一項。
使用清晰的語法與分隔符
當你的提示包含多個章節——例如說明、原始文字和範例——請使用像 ---、Markdown 標題或 XML 標籤等分隔符來區隔它們。 明確的界線有助於模型區分指令與內容,並降低誤解的可能性。
小提示
模型容易受到 近期偏差的影響,意即提示末尾的文字可能比開頭的文字更具影響力。 如果模型沒有一致地照著你的指示走,試著重複提示詞結尾的鍵指令。
設定模型參數
除了提示文字之外,你還可以調整模型參數,控制模型如何產生回應:
- 溫度:控制輸出的隨機性。 較高的數值(例如0.7)會產生更具創意且多樣化的回應,而較低的數值(例如0.2)則會產生更聚焦且確定性的回應。 事實性任務用較低的數值,創意性任務用較高的數值。
-
Top_p:也控制隨機性,但方式不同。 它將模型限制在最可能的下一個標記子集。 例如,當
top_p為0.9時,表示模型只考慮前90%的可能詞彙。
小提示
一般建議是調整溫度或top_p,不要同時調整兩者。
在旅行社情境中,回答飯店設施的事實問題時,可能會使用較低溫度(0.2),但在產生創意旅遊行程建議時使用較高溫度(0.7)。
當提示工程已足夠時
提示工程是任何模型最佳化工作的正確起點。 當你需要它時,它會很有效:
- 指導模型的語氣、格式與行為。
- 提供具體的任務指示。
- 快速迭代成果,無需更換基礎設施。
- 保持成本低廉,因為不需要額外的訓練或資料儲存(data storage)。
然而,提示工程有其限制。 如果模型無法訪問所需的資訊(例如貴公司的飯店目錄),或者儘管有詳細指示卻仍持續無法維持特定行為,你需要考慮其他策略。