Agent 调用工具超时或失败怎么处理?
Agent 调用工具超时或失败怎么处理?
提示
题眼:分类处理、慎重处理
重要
参考答案:
Agent 调用工具失败的话,一般会选择重试的方式,但是也要根据具体的情况具体分析。我了解的有三种策略。
第一种,如果调用的工具是获取数据,或者一些网络请求之类的,因为网络抖动,或者一些其他问题返回的这种 4XX ,5XX 的错误,可以使用退避重试的策略,比如说每个 1 秒重试,超过几次后,增加到 3 秒这种,避免短时间内重试全部失败。然后,重试会有上限,一般是 3,5 或者 10 次,这样可以避免陷入重试死循环。如果超过次数,就直接报错,或者用备用方案。
第二种,如果是一些没必要重试的错误,比如说服务下线,或者 token 没有额度,或者没有权限这种问题,完全没有必要重试。一般这种情况的话,我们都会做一个兜底策略,比如说话备用模型,或者其他备份数据等。可能效果上会有一些瑕疵,但是能保证服务正常运行。像我们的服务,主模型是字节的 ARK,然后也接了 Kimi 和千问。如果说字节账户没额度了,或者服务挂了,自动换到千问就行。
第三种的话,比较复杂一些,主要是针对一些特殊工具的。比如说我们服务里有一个主动下单的 CLI 工具,如果频繁重试,会创建很多重复订单。还有就是一些,像扣费、更新状态等。这种如果要增加重试功能,就需要工具有一定的幂等能力,多次调用不影响最终结果。如果是这类错误,可以在 Agent 里增加一个错误日志模块,将错误的上下文信息,会话信息等,都存下来,后续走人工对账,或者自动对账也行。而且这样也方便后续排查。
除了这几个之外,我也看过一些分享。主要是在写工具的时候,不能只写正常流程的提示词,也要补充异常情况下的兜底逻辑。尤其是,要写清楚遇到问题的类型,错误信息,还有怎么修补等这些,让模型可以根据设定进行调整。
相关信息
引申:Agent 调用 Agent 出问题怎么办。
