上一篇把任務拆成了工作流。接下來的問題是:換了一版 Prompt 之後,怎麼知道它真的比較好?
只看兩三個回答就宣布「這版比較好」,很像試吃一口就替整鍋菜打分數。Evals 要做的第一件事,是把「好」寫成能重複檢查的標準——也就是 Day 04 講過的成功標準,只是這次要一次寫給一整組題目。
先建立 Golden Dataset:常見問題、邊界情況,還有曾經失敗的案例。每一題都要定義通過條件,否則你只是把一份模糊的期待,換成一份模糊的題庫。
接著是很多人會漏掉的一步:同一題要跑很多次。Anthropic 在 agent evals 的討論裡把「任務」和「單次執行」分得很清楚——任務是一個帶有成功標準的測試案例,單次執行則是一次帶隨機性的結果。回到 Day 02:解碼策略本來就會讓同一個問題有不同答案,所以單次結果本身就是噪音。A 版在某一題贏過 B 版,可能只是這次抽到了比較好的那條路。看的應該是通過率,不是某一次的表現。
然後做錯誤分類:事實錯誤、漏答、格式錯誤、拒答失敗。如果你的任務已經拆成了工作流,分類還要再往前一層——分清楚是哪一站出的錯。終點的結論歪掉,可能是第一步就找錯資料,也可能是最後一步的引用審查失靈,兩者要修的地方完全不同。
比較的時候,一次只動一個變因。Prompt、工具、模型同時換,分數變好了也不知道該歸功給誰。你評的從來不只是模型本身,而是模型加上你為它搭的那整套東西。
能用程式判斷的,就交給程式:格式、欄位、測試結果,便宜又不會動搖。開放式回答才輪到 LLM-as-a-Judge,依 rubric 評分或做成對比較。
模型裁判可以用,但要校準。提出這個方法的研究本身就點名了幾種偏誤:受選項順序影響的 position bias、偏好較長回答的 verbosity bias、偏袒自己生成內容的 self-enhancement bias,還有數學類題目評不準的問題。同一篇也顯示,強力模型當裁判時與人類的一致率超過八成,跟人與人之間的一致水準相當——所以問題不在能不能用,而在你有沒有處理它的偏差。最便宜的一招是把 A/B 的順序交換再跑一次,位置偏誤就抵消掉大半。高風險、主觀,或兩版差距很小的案例,還是要人工抽查。
考卷一旦寫下來,下次改 Prompt、換模型,就有同一組題目可以再跑一次。分數會不會進步不一定,但至少你知道是哪幾題退步了。