Agent 工具調用報錯怎麼處理:錯誤分類與重試策略設計提示詞(哪些重試、哪些換做法、哪些直接上報,報錯訊息怎麼寫)
給智能體接了一批工具,發現它遇到報錯要麼原樣反覆重試、要麼直接放棄、要麼編一個結果繼續往下走時用:把工具清單和常見報錯交給 AI,它把錯誤分成幾類並分別規定處理方式,改寫報錯訊息讓模型看得懂下一步該做什麼,還會指出哪些操作重試會造成重複扣款、重複發送這類副作用。
通用大模型 對話模型通用
【角色】你是做過多個智能體工具層的後端工程師。你的經驗是:智能體怎麼應對失敗,一半取決於提示詞,一半取決於工具返回的報錯寫得好不好。 【輸入】 - 工具清單(名稱、作用、是否有副作用):[工具清單] - 實際遇到的報錯示例(原文):[報錯示例] - 智能體目前遇到報錯時的表現:[當前表現] - 哪些操作重複執行會出問題(如創建訂單、發送消息、扣費):[不可重複的操作] - 程序層是否已有自動重試,以及規則:[程序層重試情況] 【任務】 1. 錯誤分類:把我給的報錯示例歸類,並補充每類的識別特徵—— - 暫時性故障(超時、限流、服務暫時不可用); - 輸入錯誤(參數缺失、格式不對、取值超出範圍); - 前提不成立(對象不存在、狀態不允許、版本衝突); - 權限與認證問題; - 結果不確定(請求已發出但不知道是否成功); - 工具自身缺陷或環境故障。 2. 為每一類規定處理方式,寫成規則表:由誰處理(程序自動重試、智能體自行調整、上報給人)、最多嘗試幾次、兩次之間做什麼(等待、修改參數、先查詢當前狀態)、什麼時候放棄。 3. 重點處理「不可重複的操作」: - 這些操作失敗或結果不確定時,禁止直接重試,必須先查詢是否已經生效; - 建議為它們增加冪等標識或「先查後做」的配套查詢工具; - 分清程序層重試和智能體重試的責任,避免兩層疊加後重復執行很多次。 4. 改寫報錯訊息:對每條示例報錯,給出改寫後的版本,要求包含——發生了什麼、是否已產生影響、是否可以重試、建議的下一步、需要的話給出正確的參數示例。去掉對模型沒用的堆棧和內部代號,但保留用於排查的請求標識。 5. 寫一段放進系統提示詞的「遇到工具報錯時」規則,要點包括:先讀完報錯再行動;不得在工具失敗後編造工具結果或假裝成功;同樣的調用不改變任何東西就不要再發;繞過失敗的做法如果會改變任務範圍或降低安全性,要先問人;最終彙報裏如實列出失敗過的步驟。 6. 給出 5–6 個測試場景(每類錯誤至少一個,含一次「結果不確定」的寫操作),寫明期望的智能體行為。 【約束】 - 不假設具體的狀態碼或錯誤碼含義超出我給的示例;需要時寫「請對照該服務的文檔」。 - 規則要能執行:凡是寫「適當重試」的地方,都換成具體次數和條件。 【輸出格式】錯誤分類表 → 處理規則表 → 不可重複操作的專門規則 → 報錯改寫對照 → 系統提示詞片段 → 測試場景。
高亮處換成你自己的內容:[工具清單]、[報錯示例]、[當前表現]、[不可重複的操作]、[程序層重試情況]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[報錯示例] 直接貼工具返回給模型的原文,哪怕只是一行「Error: 400」,這正是要改進的對象。[不可重複的操作] 要認真列,凡是「執行兩次會多扣一次錢、多發一條消息、多建一條記錄」的都算。[程序層重試情況] 很多 SDK 自帶重試,如果不說明,模型設計的規則可能與它疊加。
常見失敗與調整:
- 報錯只返回「失敗」兩個字,模型只能瞎猜。按第 4 步改寫,尤其要告訴它「能不能重試」和「下一步建議」。
- 寫操作超時後模型立刻重發,結果創建了兩條記錄。把這類操作歸入結果不確定,規定先查詢。
- 工具失敗後,模型在回覆裏寫得好像成功了一樣。把「不得編造工具結果」寫進規則,並在測試場景裏專門驗證。
追問:「把處理規則表改成我可以直接實現的中間件邏輯說明」「這些工具裏哪幾個最值得先加冪等標識,按風險排序」。工具本身的名稱、參數和說明怎麼寫,可以參考站內的工具定義提示詞。
示例輸出
示例,僅供參考(虛構:能查詢與創建工單、發送通知的智能體)
| 錯誤類別 | 識別特徵 | 誰處理 | 次數與動作 | 放棄條件 |
|---|---|---|---|---|
| 暫時性故障(讀操作) | 超時、限流提示 | 程序自動重試 | 最多 3 次,逐次加長等待 | 仍失敗則把報錯交給智能體,由它上報 |
| 輸入錯誤 | 提示某參數無效 | 智能體自行調整 | 按報錯修改參數後重試 1 次 | 第二次仍報同樣的錯則上報 |
| 結果不確定(創建工單超時) | 請求已發出,未收到回應 | 智能體 | 不重發;先用查詢工具按標題和時間查是否已創建 | 查詢也失敗則上報,並說明可能已創建 |
| 權限問題 | 提示無權訪問 | 上報給人 | 不重試 | 立即 |
報錯改寫對照
- 改寫前:
Error: 400 Bad Request - 改寫後:
創建失敗,未產生任何記錄。原因:priority 的取值必須是 low、normal、high 之一,收到的是 "urgent"。修改該參數後可以重試。請求標識:req_8f2a
同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~