返回洞見列表
AI治理2026-09-124 個章節

AI 重試一次,可能做了兩次

先驗證,再決定要不要重送

核心結論

讀取型操作通常較容易重試;寄信、建單、扣款、刪除或更新資料等寫入動作,應先查核原請求是否已完成。只有能沿用原冪等鍵、確認不會產生第二個副作用,或已定義補償方式時,才適合自動重試。

執行摘要

核心觀察:逾時不是失敗證明,而是結果未知。2026 年一項受控模擬研究指出,在派送後逾時、狀態延遲可見與部分更新等非原子失敗下,先驗證再重試與冪等鍵可顯著減少重複動作,同時維持相近的任務成功率;但這仍是模擬結果,不是企業現場成效。[1] 行動建議:把每個外部寫入改成可查狀態、可去重、可追蹤,並依可逆性配置補償或人工核准,再讓 AI 自動重試。

逾時不等於沒有執行

一個 AI 代理送出建立工單請求後,如果網路在回覆途中中斷,代理看到的是逾時,但後端可能已經完成建單。這時直接重送,第二張工單就會出現。PayPal 列出的重複交易原因也包含用戶端沒有收到回覆後重試,官方建議先查原交易狀態,再決定是否重送。[3]

2026 年的原始研究把這類情況稱為非原子失敗,包含派送後逾時、狀態延遲可見與部分更新。作者在受控模擬中加入結果驗證、先驗證再重試與冪等鍵後,報告重複動作顯著減少,任務成功率仍相近。[1] 這提供技術方向,但不是台灣中小企業現場的成效保證。

讓重試只重做同一件事

冪等鍵可以把同一個業務意圖標記成同一筆操作。第一次請求與後續重試都帶同一把鍵,後端若已處理,就回傳既有結果,而不是再次建立。Google Cloud 也建議在至少一次事件傳遞下,用事件 ID 作為外部 API 的冪等鍵,並保存已處理 ID。[2]

關鍵不是每次呼叫都產生唯一字串,而是同一次業務意圖的所有重試沿用同一值。例如同一筆退款、同一封通知或同一張採購單,都應綁定可查詢的外部參考 ID。若系統每次重試都換新鍵,後端只會把它們視為不同請求。

把多重副作用拆開

如果一個 AI 工具同時建立客戶、更新 CRM 並寄出通知信,第三步失敗時很難判斷重試應從哪裡開始。Salesforce 的整合模式建議每個動作維持單一責任,寫入可能成功但回覆不明時,必須沿用原冪等鍵或外部參考 ID,不能對非冪等寫入做未查核的重試。[6]

穹境建議每一步回傳結構化結果:狀態、外部結果 ID、關聯 ID、完成時間與可否重試。代理只能在上一個步驟明確成功後前進;若只有已接受的回執,就只能回報已受理,不能宣稱下游工作已完成。

可逆、可補償、不可逆分開治理

Microsoft 指出,多服務流程失敗時,補償不是簡單把資料倒回原樣,而要依當下狀態與業務規則撤銷已完成部分;補償步驟也應可冪等並保留進度。[4] IMF 則提醒,AI 的機率式判斷應與付款的確定性授權及結算分層,避免不確定推理直接觸發不可逆執行。[5]

導入時可把動作分成三類:可安全重試、需要補償、不可逆。Lead Measure 追蹤寫入動作冪等覆蓋率、結果未知時的查核率與補償演練通過率;Lag Measure 追蹤重複副作用件數、未解結果未知案件與平均補償時間。這些是穹境的實務建議,不是上述來源的法定門檻。

關鍵要點

1

逾時要標記為結果未知:沒有收到回覆時,不可直接把動作判定為失敗。

2

同一意圖沿用同一把鑰匙:重試必須沿用原冪等鍵或外部參考 ID,不能重新產生。

3

先查後送:寄信、建單、扣款與資料更新都要先用工單號、交易號或關聯 ID 查核結果。

4

一個動作只承擔一個副作用:更新 CRM 與寄送郵件分開,才能精準重試失敗部分。

5

不可逆動作設人工關卡:付款、刪除、對外發布與權限變更,在執行前確認範圍與授權。

參考來源

[1]

Verified Tool Calls Improve LLM Agent Reliability Under Non-Atomic Failures

arXiv 原始研究 · 2026-07-31

https://arxiv.org/abs/2608.02645
[3]

Duplicate transactions

PayPal Developer · 2026-05-21

https://developer.paypal.com/api/errors/duplicate-transactions/
[4]

Compensating Transaction Pattern

Microsoft Azure Architecture Center · 2026-04-20

https://learn.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction
[5]

How Agentic AI Will Reshape Payments

International Monetary Fund · 2026-04

https://www.imf.org/-/media/files/publications/imf-notes/2026/english/insea2026004.pdf

常見問題

Q:AI 代理遇到 API 逾時,可以直接自動重試嗎?

A:讀取型操作通常較容易重試;寄信、建單、扣款、刪除或更新資料等寫入動作,應先查核原請求是否已完成。只有能沿用原冪等鍵、確認不會產生第二個副作用,或已定義補償方式時,才適合自動重試。

Q:冪等鍵每次重試都要換一個新的嗎?

A:不要。同一個業務意圖的所有重試必須沿用同一把鍵,例如同一筆退款或同一張工單。新的業務意圖才產生新鍵;否則後端會把每次重試都當成新操作。

Q:哪些中小企業流程最需要先做去重?

A:優先處理會對客戶、金流、庫存與權限產生外部影響的流程,例如寄送通知、建立 CRM 紀錄、開立訂單、退款、付款、庫存扣減、對外發布與帳號權限變更。

Q:如果外部系統不支援冪等鍵怎麼辦?

A:可在自己的整合層保存業務意圖 ID、輸入摘要、處理狀態與外部結果 ID,重送前先查本地紀錄與外部狀態。若仍無法可靠查核,就關閉自動重試,改成人工確認或建立補償流程。

Q:如何衡量 AI 自動化的重試是否安全?

A:先看寫入動作冪等覆蓋率、結果未知時的查核率、補償演練通過率;再看重複寄信或建單件數、未解結果未知案件與平均補償時間。若只有成功率,仍可能把重複執行誤算成成功。

由穹境科技 AI 情報系統生成 · 2026-09-12 · 資料來源見上方參考列表