错误处理策略
不同错误类型需要不同的处理策略:
以下部分将详细说明每个策略的代码示例。
- Transient errors
- LLM-recoverable
- User-fixable
- Provider outage
- Excessive calls
- Unexpected
添加重试中间件以自动重试网络问题和速率限制。模型调用和工具调用各自有独立的重试中间件并采用指数退避::::python::::::js:::
速率限制
有两种互补的资源限制方式:控制对模型服务商的请求频率,以及限制单次运行的调用总量。服务商速率限制
对话模型服务商对单段时间内的调用次数设限。通过初始化模型时配置rate_limiter 控制请求频率:
:::python
调用限制
无限制时,困惑的智能体可能因无限循环或数百次调用迅速耗尽LLM API预算。对模型调用和工具执行设置单次运行限制: :::pythonrun_limit 在单次调用内限制调用次数(每次会话重置)。使用 thread_limit 跨整个对话限制调用次数(需检查点)。完整配置请参考 @[ModelCallLimitMiddleware] 和 @[ToolCallLimitMiddleware]。
重试
瞬态故障(网络超时、速率限制)应自动重试。模型调用和工具调用各自有独立的重试中间件并采用指数退避: :::pythonread_file 失败无需重试,但网络搜索超时则可能需要。完整配置请参考 @[ModelRetryMiddleware]。
:::python
主流集成包抛出标准异常类型(@[ModelAuthenticationError]、@[ModelRateLimitError]、@[ModelTimeoutError] 等),携带
is_retryable 标志供重试中间件默认识别。完整异常列表请参考 Model exceptions。备用方案
若主模型服务商完全宕机,备用中间件将切换至替代模型: :::python错误处理
:::python 当工具执行期间抛出异常时,智能体运行将默认中断。使用 @[ToolErrorMiddleware] 捕获特定异常并转换为ToolErrorMiddleware,使模型能查看错误详情并恢复,而非直接崩溃。
langchain>=1.3.14 需要 ToolErrorMiddleware。ToolErrorMiddleware 在JavaScript SDK中尚未支持。
:::
官方原文:src/oss/deepagents/fault-tolerance.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。