對應原題(Common ‧ Evaluation and Observability)
- How would you evaluate an agent, as opposed to a single model response?
— Asked at: Moonshot AI, Zhipu AI, Scale AI, Cognition
🎯 什麼情境該想到我
當你「要證明一個 agent 可以上線,但它每次跑的路徑都不一樣」的時候。
⚙️ 怎麼用
★ 五個根本差異(先講這個)
| # | 差異 | 後果 |
|---|---|---|
| 1 | 產出是一條軌跡 + 對世界的副作用,不是一段文字 | 不能只評估最後那句話 |
| 2 | 步數不定 | 成本與延遲是隨機變數,不是常數——必須看分布 |
| 3 | ★ 多條路徑都可能對 | 不能用「和參考軌跡比對」評分,那會懲罰合理的替代解法 |
| 4 | ★ 錯誤會複合 | 單步 95% 正確,20 步後只剩 |
| 5 | 有副作用 | 評估環境必須沙箱化、可重置 |
★ 第 4 點是面試最值得講的一句:
「agent 的難題不是單步能力,是可靠度的複利衰減。」
這也解釋了為什麼「模型更強了但 agent 還是不能用」——單步從 95% 提到 97%,20 步的成功率從 36% 跳到 54%,差距巨大。
四個評估層次
| 層次 | 評估什麼 | 怎麼做 |
|---|---|---|
| ① ★ 結果(outcome) | 任務到底完成了沒 | 可程式驗證的終端狀態檢查——檔案存在?測試通過?資料庫欄位對了? ★ 這是主指標,而且一定要客觀可驗證(見 GRPO 與 RLVR) |
| ② 軌跡(trajectory) | 路徑品質 | 步數、是否繞路、是否重複相同動作、工具選擇正確率 |
| ③ 步驟(step-level) | 每一步的決策是否合理 | 裁判或人工(貴,用於診斷不用於 gate) |
| ④ 成本 | token、延遲、金額 | ★ 看分布不看平均 |
★ 核心指標
| 指標 | 定義 | 為什麼重要 |
|---|---|---|
| 任務成功率 | 終端驗證通過的比例 | 主指標 |
| pass@k | k 次嘗試中至少一次成功 | 衡量「能力上限」 |
| ★ pass^k | k 次嘗試全部成功 | ★ 衡量可靠度。 產品上線看的是這個——一個 pass@5 = 90% 但 pass^5 = 20% 的 agent,使用者體感是「很不穩」 |
| 步數分布 | p50 / p95 | 長尾才是痛點 |
| 成本分布 | p50 / p95 / max | ★ p95 成本決定你敢不敢開放給所有人用 |
| 人類介入率 | 需要求助或被接管的比例 | 真實的自動化程度 |
| ★ 危險動作嘗試率 | 嘗試執行 L3 動作的次數(見 可逆性、審計與人類把關) | 即使被擋下來了,「嘗試」本身就是風險訊號 |
| 護欄觸發率 | — | 趨勢變化代表行為飄移 |
★
pass@kvspass^k的區分是這題的高分點。
研究論文愛報 pass@k(好看),產品需要的是 pass^k。
★ 評估環境:agent 評估最貴的部分
單一回應的評估只需要一個資料集;agent 評估需要一個「可重置的世界」。
| 要件 | 說明 |
|---|---|
| 可重置 | 每次評估從同樣的初始狀態開始——資料庫快照、檔案系統快照、容器映像 |
| 確定性 | 時間、隨機數、外部資料都要可控 |
| ★ 工具要能錄放(record/replay)或 mock | 否則外部 API 的變動會讓兩次評估不可比,你會不知道是 agent 變差還是對方改了 API |
| 終端驗證器 | 客觀判定任務是否完成的程式 |
| 包含髒資料與失敗 | ★ 評估環境不能太乾淨——要刻意注入逾時、429、格式怪異的回傳,測錯誤處理(見 ReAct 與 Agent Loop) |
這套環境的建置成本常常比 agent 本身還高,但沒有它就無法做回歸測試。
面試時能講出「我會先投資評估環境」比講一堆指標更有說服力。
★ 分層診斷:任務失敗了,錯在哪一步
任務失敗
├─ 規劃錯 → 一開始的拆解就不對
├─ 工具選錯 → 工具描述不清(見 [[工具集設計]])
├─ 參數給錯 → schema 不好用 / 沒有 enum
├─ 觀察誤讀 → 工具回傳的格式讓模型誤解
├─ 偏題(drift)→ 見 [[多 Agent 編排與 Agent Drift]]
├─ 預算用盡 → 步數/時間/token 上限
└─ 環境問題 → 外部服務掛了(★ 要能和 agent 的錯分開統計)
這個分類要能從 trace 自動標記,否則每次失敗都要人工看。
分類的分布會直接告訴你該修哪裡——「60% 的失敗是工具選錯」和「60% 的失敗是預算用盡」,完全不同的修法。
常見陷阱
| 陷阱 | 說明 |
|---|---|
| ★ 只看成功率不看成本 | 一個跑 200 步、花 $4 才完成的 agent「成功」了,但完全不能上線 |
| 用固定參考軌跡比對 | 懲罰了合理的替代路徑。應該驗證終端狀態,不是路徑 |
| 環境太乾淨 | 真實世界的逾時、髒資料、權限錯誤沒被測到 |
| ★ 不測「該停不停」 | agent 在該放棄或該求助時硬做下去 |
| ★ 不測破壞性 | 任務完成了,但它順手刪了別的東西。 終端驗證要同時檢查「該做的做了」和「不該動的沒動」 |
| 只跑一次 | 步數與成本是隨機變數,單次結果沒有意義。每個任務至少跑 3–5 次 |
⚠️ 注意 / 什麼時候不適用
- ★ agent 評估的方差很大。同一個任務跑 5 次可能 3 成 2 敗。任何結論都要基於多次重複,否則你在讀雜訊。
- 評估成本很高。每個任務 × 每次重複 × 幾十步 = 大量 token。要用抽樣 + 分層,不可能每次 PR 都跑全量。
- 公開的 agent benchmark 污染更嚴重(任務與解法都在網路上)。見 Benchmark 污染與分數失真。
- 步驟級裁判很貴也不太準。用來診斷可以,用來當 gate 不行。
- 沙箱與生產有落差。沙箱通過不代表生產可行——要有金絲雀階段。
- 不要拿 agent 評估取代單元測試。工具本身的正確性用一般測試驗,別讓 agent 評估去抓工具的 bug。
- 終端驗證器有 bug 時,你的所有數字都是假的。驗證器本身要被測試(見 GRPO 與 RLVR 的同一個警告)。
🧪 我實際套用的紀錄
- 2026-09-20:從面試題庫展開。待辦:把 agent 的評估從 pass@k 改成同時報 pass^k 與成本 p95。
🔗 相關
- ReAct 與 Agent Loop —— 被評估的對象,以及錯誤注入測什麼
- 多 Agent 編排與 Agent Drift —— 失敗分類的一大類
- 工具集設計 —— 工具選擇正確率
- 可逆性、審計與人類把關 —— 危險動作與破壞性測試
- LLM 可觀測性 —— 樹狀 trace 是評估的資料來源
- 上線閘門與線上評估 —— agent 的 gate 怎麼設
- GRPO 與 RLVR —— 可驗證的終端條件
- 工具-防止agent造假通過驗收 —— 「我做完了」不可信