免費全文 Agent 開發 進階

Agent 的停止條件:怎麼判斷任務真的完成了

跑不停與提早收工都是常見故障。停止條件需要明確設計,不能只靠模型自己決定。

Agent 開發教程封面

Agent 最常見的兩種失敗:一是任務沒做完就宣告完成,二是在同一個問題上反覆嘗試直到耗盡步數。兩者都源於停止條件沒設計好。

四種停止條件

  1. 模型自述完成:最弱的一種,必須搭配驗證。
  2. 結構化完成訊號:要求模型呼叫一個 finish 工具並帶上結果,比自然語言可靠。
  3. 程式驗證通過:例如檔案已產生、API 回傳 200、測試通過。這是最強的條件。
  4. 資源上限:步數、時間、成本任一超標即中止,是安全網而非正常路徑。
FINISH_TOOL = {
  'name': 'finish',
  'description': '任務完成時呼叫,並附上最終結果與依據。若尚未完成請勿呼叫。',
  'parameters': {'type': 'object', 'properties': {
     'result': {'type': 'string'},
     'evidence': {'type': 'string', 'description': '支持結果的具體事實,例如工具回傳值'}
  }, 'required': ['result', 'evidence']}
}

偵測原地打轉

記錄每一步的「工具名+參數雜湊」,連續兩次完全相同就代表卡住了。這時應該中止並回報,而不是讓它繼續。

seen = []
sig = hashlib.md5(f'{call.name}:{json.dumps(call.arguments, sort_keys=True)}'.encode()).hexdigest()
if seen[-1:] == [sig]:
    return '偵測到重複操作,已中止。'
seen.append(sig)
資源上限一定要同時設「步數」與「累計成本」。只設步數時,一個會回傳巨量內容的工具仍然可以在八步內燒掉大量費用。
下一步

這個主題還有更深入的實戰教程

VIP 專區收錄 50 篇進階內容:架構設計、生產環境取捨、成本與合規。 每週五新增 3 篇。

看訂閱方案 → 先逛逛 VIP 專區

延伸閱讀

更多Agent 開發 →