AI-LECTURER 速報課|2026-09-16|約 25 分鐘

AI 代理人「這次做對」不保證「下次還對」:一套工具揪出躲在流程裡的賭運氣步驟

取材:Your Agent Aced the Task. Will It Do It Again?(Hugging Face Blog)
📍 真實場景
阿凱,一家中型保險經紀公司的自動化工程師

他負責維護一套會自動核對理賠申請文件、抓出缺漏項目的 AI 代理程式,上週在客戶展示會上,同一份理賠申請他先在測試環境跑了一次,代理程式完美無誤地抓出兩項缺漏文件

😖 卡住的地方:隔天在正式環境用同一份文件重新跑一次,代理程式卻漏看了一個步驟,把理賠金額算錯了;阿凱說不出「哪裡不穩」,只能含糊地跟主管說「這個 AI 有時候會怪怪的」,因為他手上完全沒有工具能指出到底是流程裡的哪一步在賭運氣
💡 這篇文章介紹的診斷方法,只要拿一次執行紀錄,就能揪出「差一點就翻船」的決策點,讓阿凱以後可以用數據說話,而不是只能跟主管說「感覺不太穩」

🧭 這到底是什麼(白話版)

「AI 代理程式」,也就是英文常說的 Agent一種會自己判斷目標、自己拆解成好幾個步驟、還會自己呼叫工具去把事情辦完的 AI 程式,跟只回答一個問題的聊天機器人不一樣,最近很流行拿去做「自動核對合約」「自動訂票改票」這類需要好幾個步驟才能完成的工作。但這篇文章戳破一個大家很少提的現實:同一個代理程式、面對同一個任務,這次做對了,不代表下次再問一模一樣的問題,它還會做對。

要看穿這個現實,得先分清楚兩把不同的尺。大多數評測報告秀出來的數字,其實是 Mean@k把同一個任務重複跑 k 次,算出「平均成功率」,這是大多數排行榜在秀的那個數字,例如常聽到的「77% 準確率」多半就是這種平均值。但文章提出另一把嚴格很多的尺,叫 Pass^k把同一個任務重複跑 k 次,只有「k 次全部都成功」才算過關,比平均值嚴格非常多,也更貼近使用者反覆問同一件事時的真實感受,這個數字才是「這個代理程式,我敢不敢重複依賴它」的真正答案。

文章介紹的診斷工具「一致性分析器(Consistency Analyzer)」,聰明的地方在於它不用把整個任務從頭到尾重新跑五遍(那樣既貴又慢,遇到會真的送出訂單、真的改文件的任務還會製造一堆髒資料)。它只需要代理程式「已經跑過的那一次紀錄」,在紀錄裡的每一個 決策點代理程式執行過程中,每一次要決定「下一步做什麼」的那個瞬間,例如要挑哪個工具、要填什麼參數 上,重新問語言模型「同樣的情境下,你會給我幾種不同的答案」,藉此揪出 翻牌點模型在這個決策點上,只要換一次隨機抽樣結果,就有很高機率選出不同答案的步驟,白話說就是「差一點運氣不好就會做錯的那一步」

找出翻牌點之後,下一步是把診斷結果變成看得見的改善。研究團隊把這些高風險決策點的模式,自動整理成 一致性指引根據診斷結果自動生成的一句一句操作提醒,會在代理程式下次執行到類似情境時,被插入到它看到的資訊裡,提醒它「這一步容易選錯,請特別注意」,塞回去讓代理程式參考。結果是連續五次都成功的比例,缺口從 24.4 個百分點砍到只剩 12.0 個百分點,而且平均準確率完全沒有被拖累——穩定跟聰明,這次不是只能二選一。

🎯 為什麼值得你花時間

平均分數會騙人77.4% 聽起來很厲害,但代表連續五次都成功的比例只有 53.0%——這代表如果你是那個要靠這個代理程式處理理賠、對帳、簽約的人,你有將近一半的機率會在「同一件事」上被打臉。只看平均分數,就像只看業務員的平均業績,卻沒發現他有一半的月份其實是掛零的。
找問題不用重跑全部一致性分析器只需要一次執行紀錄,就能對每個決策點做局部重新抽樣,不必把整個任務從頭跑到尾五遍。省下的不只是運算成本,更是除錯的時間——原本要「大海撈針」找出哪個步驟不穩,現在有一份「翻牌點清單」可以直接對症下藥。
修好了不用犧牲效能把診斷結果轉成指引塞回去給代理程式參考後,不但一致性缺口砍半,平均準確率完全沒有掉。這打破了「穩定跟效能只能二選一」的迷思,告訴工程師:你可以兩個都要。

⚙️ 它是怎麼運作的

1
先錄一次完整執行紀錄讓代理程式正常跑一次任務,把它每一步「看到什麼、決定做什麼」的完整過程記錄下來,這就是後面所有分析的原始素材。
2
在每個決策點重新抽籤針對紀錄裡的每一個決策點,把當時的情境重新丟給語言模型,一次請它生成 k 個(預設 5 個)候選答案,而不是只拿當初那一個答案。
3
算出翻牌率比較這 k 個候選答案彼此之間差多少——如果 5 個候選裡有好幾個跟原本紀錄的答案不一樣,代表這一步是「運氣點」,翻牌率就高。
4
排出風險清單把所有決策點按翻牌率排序,工程師就能一眼看出「這條任務流程裡最不穩的三個步驟在哪」,不用再靠感覺猜。
5
自動生成一致性指引系統把這些高風險決策點的模式,自動整理成一句一句的提醒,下次代理程式執行到類似情境時,這些提醒會被塞進它看到的資訊裡。
6
重新量測 Pass^k 驗收成效把加了指引的代理程式重新用 Pass^k 這把嚴格的尺去驗收,確認連續五次都成功的比例真的提升了,而不是只有平均分數好看。
三種評測方式,其實在回答不同的問題
指標在問什麼數值高低關係
Pass@k(樂觀)k 次裡「至少 1 次」成功就算過關最寬鬆,通常最高
Mean@k(平均)k 次的「平均成功率」,多數排行榜秀的就是這個介於兩者之間
Pass^k(悲觀)k 次「全部都要」成功才算過關,最貼近使用者的真實感受最嚴格,通常最低

🔍 程式碼漫遊(點有 ● 的行看白話講解)

用一小段 Python 邏輯,說明 Mean@k 和 Pass^k 到底怎麼算出來的——看懂這段,你就能自己動手驗證任何代理程式的一致性。

results = [[1,1,1,0,1], [1,1,1,1,1], [0,1,1,1,0]]
💬 假設有 3 個任務,每個任務重複跑 5 次(k=5),1 代表成功、0 代表失敗——這就是最原始的紀錄表。
def mean_at_k(runs):
💬 定義「平均成功率」的計算函式,對應到大家常看到的準確率數字。
return sum(runs) / len(runs)
💬 把這一個任務 5 次結果加總除以 5,就是這個任務的平均成功率;之後再對所有任務取平均,就是整體的 Mean@5。
def pass_hat_k(runs):
💬 定義「連續全過」的計算函式,這是比較嚴格的那把尺。
return 1 if sum(runs) == len(runs) else 0
💬 只有 5 次全部成功(總和等於 5)才給 1 分,只要有任何一次失敗就是 0 分——這就是 Pass^k 之所以嚴格的原因。
mean5 = sum(mean_at_k(r) for r in results) / len(results)
💬 把 3 個任務的平均成功率再平均起來,得到整體的 Mean@5。
pass5 = sum(pass_hat_k(r) for r in results) / len(results)
💬 把 3 個任務的全過與否再平均起來,你會發現這個數字通常比 Mean@5 低不少——這就是文章講的「一致性缺口」。

🛠️ 動手做:決策點翻牌模擬器:親眼看見 Mean@5 和 Pass^5 的落差

  1. 用上面的滑桿設定這個任務裡有幾個「決策點」(步驟),以及每個決策點的「翻牌機率」(這一步賭運氣、可能做錯的機率)。
  2. 按下「模擬跑 5 次任務」,程式會虛擬執行 30 個任務、每個任務跑 5 次,每次都在每個決策點擲一次骰子,決定這一步成功還是失敗。
  3. 觀察下方表格:前 10 個任務各自 5 次的成敗,以及下面的 Mean@5(平均成功率)跟 Pass^5(5 次全過的比例)。
  4. 試著把翻牌機率調低(模擬加了一致性指引之後的效果),再跑一次,看看 Pass^5 是不是比 Mean@5 更明顯地被拉高、缺口變小。
👇 下面是活的,直接操作

🧠 工程思維透鏡(資深工程師看到的是什麼)

🔭 為什麼不乾脆把整個任務重跑 5 遍,而要用重新抽樣決策點這種麻煩做法?
把整個任務跑 5 遍,成本是 5 倍的工具呼叫、5 倍的執行時間,而且如果任務本身有副作用(像是真的送出一筆訂單、真的改動一份文件),重跑代表要先想辦法復原環境,不然資料會亂掉。一致性分析器只重新抽樣「決策點」——也就是只重新問一次語言模型「你會怎麼選」,不用真的去執行工具、不會產生副作用。這是用「局部、便宜、無副作用的抽樣」去逼近「全域、昂貴、有副作用的重跑」,背後的工程判斷是:要診斷的其實是模型的「決策穩定性」,而不是整個系統的隨機性,把診斷範圍縮小到問題真正發生的地方,才是划算的做法。
🔭 把 Pass^k 訂得這麼嚴格(k 次全過才算數),不會太苛刻嗎?
這正是這篇文章最挑釁的地方:大部分排行榜秀的 Mean@k 對廠商比較好看,但對「真的要把代理程式放進生產環境」的工程師來說,使用者不會管你平均表現多好——他只在乎「我這次問,會不會又踩到那 22.6% 的失敗機率」。選擇用 Pass^k 當驗收標準,是把「評測指標」和「使用者實際感受到的可靠度」對齊,這是一種「寧可指標難看一點,也要指標誠實」的工程態度,跟只挑漂亮數字報告的做法正好相反。
🔭 把「翻牌點」轉成「指引」再塞回去給模型參考,為什麼有效,而不是治標不治本?
這個做法巧妙的地方在於,它沒有去改模型權重(那需要重新訓練,成本很高,也可能把其他能力練壞),而是在「推論時」把「這一步容易出錯」的具體提醒,以文字形式插進模型看到的上下文裡。這等於是把「事後除錯得到的經驗」轉換成「事前提醒」,跟資深工程師會在容易出包的程式碼旁邊寫一句警語註解是同一種邏輯——不是每次都要動大手術,有時候「在對的地方提醒對的事」就能大幅降低出錯率,而且成本極低、風險極小。
🔭 文章強調這套方法「不需要標準答案」,這件事重要在哪?
很多評測與除錯方法都需要事先知道「正確答案是什麼」,才能判斷模型錯在哪——但正式環境裡的真實任務通常沒有現成的標準答案可以比對。一致性分析器繞開這個限制的做法是:它不問「這一步對不對」,只問「這一步穩不穩」——如果同一個情境問五次,答案常常變來變去,那不管「正確答案」是什麼,這一步本來就是風險點。這種「用一致性代替正確性」的思路,讓這套工具可以直接套用在任何正式環境的真實流量上,不需要人工先準備一份標準答案集,大幅擴大了它能用的場景。

📝 隨堂考(點選答案,立即回饋)

Q1. 文章裡「Mean@5 = 77.4%」和「Pass^5 = 53.0%」這兩個數字,合起來在說什麼?
✅ 77.4% 是「平均」成功率,53.0% 是「五次全對」的比例——兩者合起來說明:平均分數好看,不代表使用者重複問同一件事時能得到穩定的答案,這正是文章要點出的「一致性缺口」。
Q2. 一致性分析器為什麼只需要「一次」執行紀錄,而不必把任務重新跑很多遍?
✅ 它是拿已經錄好的那一次紀錄,在每個決策點上重新問語言模型「你這裡會怎麼選(給我 k 個候選)」,不需要真的重新執行整個任務、呼叫真實工具,所以成本低很多。
Q3. Pass@k、Mean@k、Pass^k 三者的大小關係是?
✅ Pass@k 是「至少一次成功」,最樂觀所以最高;Pass^k 是「全部都要成功」,最悲觀所以最低;Mean@k 是平均值,自然介於兩者之間。
Q4. 把診斷結果轉成「一致性指引」塞回代理程式後,文章說達成了什麼效果?
✅ 文章明確指出缺口砍半(24.4pp 縮小到 12.0pp),同任務 Pass^5 提升 16.0pp、相似任務提升 13.0pp,而且沒有拖累平均準確率——穩定性和效能不是零和關係。
Q5. 「翻牌點」指的是什麼?
✅ 翻牌點是「搖擺不定」的決策點——同樣情境下重新抽樣,答案常常不一樣,代表模型在這裡是「賭運氣」,而不是很篤定地做決定。

🃏 翻牌記憶卡(先想答案,再點開對答)

Mean@k點我翻面
同一任務重複跑 k 次的「平均」成功率,多數評測報告顯示的就是這個數字。
Pass^k點我翻面
同一任務重複跑 k 次,「全部都要」成功才算過,是比 Mean@k 嚴格很多的指標,更貼近使用者實際感受。
Pass@k點我翻面
同一任務重複跑 k 次,「至少一次」成功就算過,是最樂觀的指標,常用在「可以重試」的情境。
決策點點我翻面
代理程式執行過程中,每一次要決定「下一步做什麼」的瞬間,例如選工具、填參數。
翻牌點點我翻面
重新抽樣同一個決策點時,答案很容易變來變去的步驟,代表這裡是不穩定、容易出錯的環節。
一致性分析器點我翻面
只需一次執行紀錄,就能對每個決策點重新抽樣、找出翻牌點的診斷工具,不必把整個任務重新跑很多遍。

✅ 離開前自測(全勾=這課真的學會了)

0%