面试:当工具调用失败时,Agent 应该如何处理?设计一个重试策略。 面试:当工具调用失败时,Agent 应该如何处理?设计一个重试策略。这个问题我之前在线上还真遇到过不止一次。我们客服 Agent 跑着跑着突然工具调用失败了,如果不加处理的话,要么就是无限重试把服务打挂,要么就是 Agent 假装成功了直接往下走——两个都是灾难。核心就一句话:不同的错误需要不同的处理策略,不是所有失败都值得重试。第一步:先把错误分清楚这个是最重要的,你分类分错了后面全白搭。我一般把工具调用失败分成三类:瞬时错误,比如网络超时、连接重置、429 限流、503 服务不可用——这类可以重试,因为下次可能就成功了。永久错误,401/403 认证失败、400 参数格式错误、404 资源不存在——这类重试一万次也没用,必须立刻 fail 掉。语义错误,工具返回了但是结果不符合预期,比如 API 返回了空数据、格式不对——这类比较麻烦,有时候重试能解决,有时候得换策略。我之前踩过一个坑:Agent 调用搜索工具返回空结果,模型直接忽略继续走,导致整个任务"假成功"完成。所以光看 HTTP 状态码还不够,还得做业务层面的结果校验。第二步:重试策略怎么设计瞬时错误要重试,但不能裸着重试——那样只会把自己打成 DoS 攻击。我们用的策略是指数退避 + 随机抖动。举个例子: