Agent 工具调用超时与重试:可落地的模式
超时重试不是「失败了再喊一次」,而是先分清错误类型,再与幂等键一起设计。 可重试的通常是网络抖动与限流;不可盲目重试的是业务拒绝、校验失败与已成功但响应丢失的不确定性——后者更依赖幂等。
决策顺序
- 为每次工具调用设明确超时。
- 对超时与 5xx / 限流:有限次退避重试。
- 对 4xx 业务错误:不要空转重试,返回给规划层改参数。
- 所有具有副作用的调用带幂等键(见相关幂等文)。
- 记录每次尝试的错误码与耗时,便于调参。
示意伪代码(虚构示意)
for attempt in 1..N:
result = call_tool(args, idempotency_key=K, timeout=T)
if success: return result
if not retryable(error): raise
sleep(backoff(attempt))
escalate_to_human_or_planner()
提示词(设计评审用)
请审查我的工具重试策略:哪些错误可重试、最大次数、退避、是否与幂等键绑定、超时如何设置。
指出可能导致重复副作用的路径。不要编造基准数字。
【策略描述】<<<>>>
实践提醒
把重试参数做成可配置项,并在仪表盘统计重试率与最终失败率。若某工具重试率突然升高,先查下游健康再调大次数。人工升级路径要在提示或工作流里写清,避免智能体空转耗尽配额。
执行时请保持单一事实源:输入没有的数字、负责人与截止日期,输出就不要出现。把不确定写清楚,比生成听起来完整却无法核对的句子更有用。若连续两次结果漂移很大,先检查是否混入未脱敏或互相矛盾的材料,再考虑换模型。
也可以把本页提示词改成团队共享片段:只开放「材料区」给同事粘贴,固定规则区由维护人更新。这样能减少每人私改导致的格式分裂,也方便在复盘会上对照同一版本讨论。
也可以把本页提示词改成团队共享片段:只开放「材料区」给同事粘贴,固定规则区由维护人更新。这样能减少每人私改导致的格式分裂,也方便在复盘会上对照同一版本讨论。
相关:Agent 幂等工具调用、报错日志排查、AI 编程安全。
把本次用过的提示词与输入输出一并存档,方便对照下次同类任务的差异。凡标注虚构或示意的人名、金额、订单与指标,一律不得进入正式提交或对外承诺。若材料涉及客户或员工个人信息,先按公司数据分级选择允许的工具,再开始粘贴。做完一次闭环,用三句话记录:最有效的约束、仍需人工的步骤、下版提示词要改哪里。
把本次用过的提示词与输入输出一并存档,方便对照下次同类任务的差异。凡标注虚构或示意的人名、金额、订单与指标,一律不得进入正式提交或对外承诺。若材料涉及客户或员工个人信息,先按公司数据分级选择允许的工具,再开始粘贴。做完一次闭环,用三句话记录:最有效的约束、仍需人工的步骤、下版提示词要改哪里。