提示工程的除錯清單:輸出不對時依序檢查這七項
輸出怪怪的時候不要急著改提示。照順序檢查,通常前三項就能找到原因。
提示壞掉時最糟的反應是立刻重寫。多數情況下問題不在措辭,而在更前面的環節。以下順序是依「命中率」排的。
- 看實際送出的字串。把 render 後的完整提示印出來,變數沒代入、模板缺字是最常見的原因。
- 確認模型與參數。模型版本被改掉、溫度不是 0,都會讓輸出忽然不穩。
- 檢查輸入本身。輸入被截斷、編碼錯誤、夾帶大量空白,模型只是照著爛輸入回答。
- 看是不是超長。輸入接近上下文上限時,開頭或中段的指令會被擠掉。
- 確認格式解析。模型其實回對了,是解析端把它弄壞的。
- 跑評測集。確認是全面退步還是單一案例,兩者的處理方式完全不同。
- 最後才改提示。而且一次只改一處,改完重跑評測。
把第一項變成預設行為
import os, logging
def call(prompt, **kw):
if os.getenv('PROMPT_DEBUG'):
logging.info('--- PROMPT ---\n%s\n--------------', prompt)
return client.complete(prompt, **kw)一個環境變數就能開啟的提示輸出,會在往後每一次除錯裡省下大量時間。
把「這次用的提示版本、模型、參數」一起寫進回應的 metadata。使用者回報問題時,你才有辦法重現當時的狀況。