Tool 调用失败:
哪些重试,谁判断,任务怎么恢复?
先弄清楚:每个概念是什么
- Transient error
- 等一下再发可能就好的错误。例:timeout、rate limit(HTTP 429)、网络抖动。
- 确定性错误
- 重发多少次结果都一样的错误。例:参数错、文件不存在、权限不够。
- 幂等(idempotent)
- 同一个调用执行一次和多次,效果相同。例:把文件内容设成 X 是幂等的,往末尾追加一行不是。
- Exponential backoff
- 每次重试前等的时间翻倍,有次数上限。像打电话占线,越拨间隔越长。例:先等 1 s,最多重试 3 次,最坏一共等 \(1 + 2 + 4 = 7\) s。
- Checkpoint
- 把当前状态落盘,像游戏存档。
30 秒回答
I split errors into three kinds. Transient ones, like timeouts and rate limits, the harness retries with exponential backoff and a cap, without involving the model. Deterministic ones, like a bad argument, go back to the model as the tool result so it can fix the call. Calls with side effects are retried only if they're idempotent; otherwise I check the state first. To prevent loops, the harness stops and escalates when the same call keeps failing. And it checkpoints messages and task state after every step, so a crashed run resumes from the last step.
三类错误,各自谁处理
| 错误类型 | 谁处理 | 怎么处理 |
|---|---|---|
| Transient error | harness | exponential backoff 自动重试,超过上限才把报错交给 model |
| 确定性错误 | model | 报错原样当作 tool result 还给 model,让它改调用 |
| 有副作用的调用,如写数据库、开 PR | harness 先把关 | 幂等才重试。不幂等就带 idempotency key,或先查状态确认上一次没生效 |
防死循环和 checkpoint
防死循环。harness 给每次调用的 tool 名和参数算 hash,同一个 hash 连续失败或反复出现 N 次就停下并上报,再用 max steps 兜底。stop condition 的一般讲法见 search loop。
Checkpoint。每一步之后,harness 把 messages 和 task 状态落盘,带上 step 编号和最后一个 tool call 的结果或报错。重启后从最近的 checkpoint 接着跑。最后那一步可能只执行了一半,恢复时按有副作用的调用处理。
必答点
- transient error 由 harness 自动重试,exponential backoff,有上限
- 确定性错误当作 tool result 还给 model
- 有副作用的调用幂等才重试,否则先查状态
- 防死循环:同一个调用连续失败 N 次就停下上报,加 max steps
- checkpoint:每步之后把 messages 和 task 状态落盘
追问
tool 调用失败后 model 编造结果,怎么办?(蚂蚁原题)
结果只认 tool 的真实输出。没有成功的 tool result,verifier 就不放行。
Task DAG 里 B、C、D 并行,D 崩了怎么恢复?(字节)
每个节点的结果单独落盘。只重跑 D,B 和 C 的结果读回来。
上游 LLM API 一直返回 429 怎么办?(Qualified Health)
每个 worker 自己 backoff 不够。调度层还要限流并加 backpressure,上游忙时少派任务(见 大批量跑 agent)。
让 model 参与错误分析和恢复,行不行?(影石创新原题)
行,但只交确定性错误,它要理解任务才能改对。transient error 从错误码就能判断,交给 model 只是多花 token。
来源面经原帖:作业帮 Golang 实习、虾皮二面、虾皮一面、字节 Agent 开发日常实习一面、蚂蚁 AI 应用方向(「如果工具调用失败,模型开始编造结果,怎么处理?」)、影石创新 AI Agent 一面(「是否考虑过让大模型参与错误分析和自动恢复?这种方案有什么优缺点?」) · PracHub:Qualified Health(429、checkpoint、幂等的追问) · ml-八股 08 第 35 题 · 中文平台调研笔记 1.9 节