🎯 什麼情境該想到我

當你「改了 prompt、換了模型或工具,想在 CI 擋住 agent 退化,卻發現同樣的輸入每次輸出都不一樣」的時候。

⚙️ 怎麼用(步驟 / 公式)

核心:agent 跟傳統軟體最大的差別是同樣的輸入,輸出不固定。所以金字塔越底層越要用確定性的檢查,把 LLM 評審留給確定性方法判斷不了的部分(回答品質)。

1. 五層分工

層測什麼用什麼頻率
單元測試工具的商業邏輯、prompt 組裝、schema 驗證pytest/jest,不呼叫模型每次 commit
確定性 agent 測試有沒有呼叫該呼叫的工具、有沒有呼叫禁止的工具、格式、個資題庫+軌跡比對+程式寫的評估器每次 PR
品質回歸正不正確、有沒有幫助、有沒有捏造題庫+LLM 評審(附標準答案或斷言)合併主線、換 prompt/模型時
情境擴展多輪、使用者不照劇本走LLM 扮演使用者(simulation)上線前、每週
正式監控品質趨勢、找低分 session線上抽樣評估持續,不擋部署

★ 軌跡比對是投報率最高的一層:不花 token、結果確定,而且抓得到 agent 最常見的退化,也就是「該查資料卻沒查」「多叫了不該叫的工具」。

2. 軌跡比對:三種嚴格度

預期 [calculator, weather] 時:

模式規則例
完全一致(Exact)工具與順序都一樣,不能多[calculator, weather, calculator] ✗
依序出現(InOrder)依序出現即可,中間可夾別的[calculator, search, weather] ✓
都出現(AnyOrder)順序不拘[weather, calculator] ✓
  • 預設用 InOrder。Exact 太嚴,模型多查一次資料就失敗,測試會很抖;只有「多做一步就是錯」的流程才用它。
  • 軌跡比對只比工具名稱,不比參數;參數要另外用評估器檢查。

3. 門檻:依評估器類型分開設

評估器門檻理由
程式寫的不變式(「回覆不能有 email」「不能呼叫刪除類工具」)min = 1.0任何一題違規就是失敗
軌跡比對min = 1.0,或容許少數題失敗評分確定,但 agent 行為本身不確定
LLM 評審看 mean,min 設寬鬆單題有雜訊
  • ★ 反例:AgentCore 官方 CI 範例對每個評估器「保留最高分」再跟 0.8 比,等於只要一題過就過,幾乎不可能失敗。
  • 門檻跟主線基準比(例如不能比基準低超過 0.05),不要用絕對值:題庫變難時絕對門檻會一直紅,變簡單時又抓不到退化(判斷)。
  • 平台通常沒有「低於多少就失敗」的設定,門檻要在 CI 腳本自己判斷。

4. 題數要夠:用標準誤估算

分數是 0/1 的通過率,平均的標準誤 = √(p(1−p)/n)。以通過率 p = 0.7 為例:

題數 n標準誤
10√(0.21/10) ≈ 0.14
50≈ 0.065
200≈ 0.03

題數太少時,正常浮動就大於你想抓的退化幅度。想抓 0.05 的退化,10 題根本看不出來。

5. 讓測試不要太抖

  • 失敗的題目自動重跑一次,兩次都失敗才算真失敗。
  • agent 的 temperature 能設 0 就設 0。
  • PR 只擋確定性層;LLM 評審的結果以留言呈現,由人判斷。
  • 區分「沒有結果」和「分數太低」:評估資料要先進監控系統(AgentCore 要等 2–5 分鐘),沒等到通常是基礎設施問題,不該算成品質退化。做法是先短暫等待,再輪詢到有結果;用不同的結束碼區分(原研究的 gate 腳本:通過 0、分數太低 1、缺結果 2)。
  • 題庫版本要固定:CI 引用不可修改的題庫版本,不同次的分數才能比較。

6. 成本分層

依原研究(查證 2026-09-30),AgentCore 內建 LLM 評估器每次約 6,還沒算 agent 本身的模型費。軌跡比對不花 token。每次 PR 跑幾乎免費的確定性層,合併主線才跑 LLM 評審。

機制細節 → AgentCore Evaluations與Optimization

🧪 我實際套用的紀錄

  • 2026-09-30:原研究的 CI gate 腳本在本機測過三種情況:全部通過 exit 0;有一題很差 exit 1(Correctness mean 0.68 < 0.8;min 0.30 < 0.5);缺評估器結果 exit 2。沒有在 AWS 上跑過。

⚠️ 注意 / 什麼時候不適用

  • 程式寫的評估器最容易錯在 span 欄位名稱:不同框架的 trace 結構差很多,接真實 agent 前先撈一份真的 trace 對照(原研究推論)。
  • LLM 評審本身要先校準才能信(見 LLM-as-Judge);拿沒校準的評審當門檻,擋下的可能是評審的偏誤。
  • simulation 的對話事先無法預測,只能用斷言,不能比標準答案或軌跡。
  • 平台配額會卡並行 CI:AgentCore 的 batch 評估同時只能 5 個 job,多個 PR 一起跑要排隊或重試。
  • 這張卡管「CI 怎麼擋」。上線後的逐案 diff、子群崩壞、版本回退見 上線閘門與線上評估。

🔗 相關工具