第 7 站 · 上線與觀測該站第 4 / 12 場
用 Boundary 重現失控的 Agent
Your Agent Failed in Prod. Good Luck Reproducing It. - Tisha Chawla & Susheem Koul, Microsoft

講者說明為什麼把溫度歸零救不了失控的交易 agent,重點該放在記錄每個節點、讓失敗可以重播除錯。
重點摘要
- 交易 agent 出包:使用者要賣 1000 美元的股票,agent 卻把數字直接當股數塞進下單工具,以每股 190 美元賣出 1000 股,造成 19 萬美元的損失;但 API 回應正常、儀表板全綠,事後怎麼重跑都復現不出來。
- 溫度歸零救不了:把 temperature 設成 0 只會讓模型用同一套邏輯錯誤方式再犯一次,而且貪婪解碼在硬體層本來就不是真正具決定性。
- 不確定性的四個成因:取樣層面的決定性不等於系統層面的決定性、浮點數運算不滿足結合律、GPU 矩陣運算會受批次時機影響、MoE 架構的路由也會被同時間打進來的流量牽動。
- 該追的是狀態轉移:與其要求模型每次吐出一模一樣的 token,不如讓系統穩定執行同一組狀態轉移,這才是真正該顧的事。
- Chronicle 的做法:用 boundary annotation 包住工具呼叫、LLM 呼叫、RAG 檢索等節點,把整個 run 的輸入輸出與狀態凍結成一筆可重播的 trace。
- 兩種測試分開做:deterministic node 可以直接拿凍結的輸入輸出當測試、不必呼叫模型;behavioral 的語氣與行為軌跡比較主觀,適合用 LLM as a judge 之類的做法。
時間軸11 段
| 00:00 | 開場 | 講者 Tisha 與 Susheem 都在 Microsoft 負責串接真實正式環境後端的 agent,這場要談 agent 出包後最先失去的,就是重現問題的能力。 |
| 01:32 | 交易 agent 出包 | 使用者要求賣 1000 美元的股票,agent 卻把 1000 直接當股數塞進下單工具,以每股 190 美元的價格賣出 1000 股,造成 19 萬美元的損失。 |
| 02:30 | 溫度歸零沒用 | 把 temperature 設成 0 只會讓模型用同一套邏輯錯誤方式再犯一次,而且貪婪解碼在硬體層也不是真的具決定性。 |
| 03:24 | 不確定性的四個成因 | sampling determinism 不等於 system determinism、浮點數運算非結合律、GPU 矩陣運算受批次時機影響、MoE 路由受同時流量牽動。 |
| 04:44 | 追狀態轉移勝過追文字 | 讓系統穩定重現同一組狀態轉移,比要求模型每次吐出一模一樣的 token 更重要。 |
| 05:20 | 兩個常被混淆的詞 | bitwise determinism 是可控性,hosted API 本來就拿不到也不該要;replayability 才是可觀測性,是真正該顧的事。 |
| 06:20 | 記錄該放在邊界 | 很多 agent 步驟(本地檢索、記憶)根本不經過網路,記錄應該包在每個節點的輸入輸出邊界上,而不是網路層。 |
| 07:12 | 介紹 Chronicle | 用 boundary annotation 包住工具呼叫、LLM 呼叫、RAG 檢索等節點,把整個 run 的狀態凍結成一筆 trace。 |
| 09:58 | 從 trace 到 guardrail | 找出問題出在 LLM 產生了錯的工具呼叫後,因為無法控制 LLM,只能在工具層加上防護,再用同一筆 trace 當測試案例驗證。 |
| 12:14 | 兩種測試要分開 | deterministic node 可以凍結輸入輸出直接當測試,不必呼叫模型;behavioral 的語氣與軌跡比較主觀,適合用 LLM as a judge。 |
| 13:12 | 五個重點回顧 | 別再追 API 層的逐位元決定性、記錄每個 session 的關鍵變數、抓完整的輸入輸出而不只是 prompt、拿 replay 來除錯與再測試、保留生成時的隨機性。 |
值得記的話5 句
if you can reproduce it, you can debug it.
若能重現問題,就能著手除錯00:36We got zero exceptions, zero alerts.
沒有跳出任何例外,也沒有觸發任何警示02:14chasing text output is a losing battle, completely.
追逐一模一樣的文字輸出,完全是打不贏的仗04:44You cannot control the LLM, that's what this entire discussion is about.
你沒辦法控制 LLM,這正是整場討論的重點09:58Don't try to pin the temperature to zero. After all, that is what brings the agency into your agent.
不要把溫度硬釘在零,那正是讓 agent 保有自主性的原因13:47
名詞與人物6 個
- Chronicle
- 這場講者做的概念驗證工具,用 boundary annotation 記錄 agent 每個節點的輸入輸出,把整個 run 凍結成一筆可重播的 trace。
- boundary
- Chronicle 的核心概念,是包在 agent 節點(工具呼叫、LLM 呼叫、RAG 檢索)外面的標註,負責記錄進出這個節點的所有內容。
- bitwise determinism
- 逐位元決定性,指同一個輸入永遠得到一模一樣的輸出;講者認為這在 hosted LLM API 上做不到,也不該追求。
- replayability
- 重播性,指把一次已經發生過的執行過程重建到足以除錯的程度,是講者主張真正該追求的目標。
- MoE
- Mixture of Experts 架構,因為 expert 有容量上限,某個 token 會不會被選中,會受同時間打進來的其他流量影響,是不確定性的成因之一。
- LLM as a judge
- 用另一個 LLM 來評估 agent 輸出是否恰當,講者提到這是做 behavioral testing(語氣、軌跡)時常用的做法。
提到但沒有展開
- 講者在結尾提到現場的 QR code 可以連到 Chronicle 的原始碼與幾篇相關文章,但沒有在台上展開內容。
- 提到 Reddit 與 Hacker News 上有關於 temperature 為零仍非真正決定性的討論串,用來佐證論點,但沒有引用具體來源。
- 提到 boundary annotation 可以額外標記 model version 或程式碼版本等參數,但沒有展開實際設定方式。