容错中间件可确保您的深度智能体在出现问题时仍能继续运行。并非所有错误都应采用相同方式处理:临时性故障(网络超时、速率限制)应自动重试,智能体可恢复的错误(工具输出错误、解析失败)应反馈给模型,而需要人工介入的错误则应暂停智能体运行。

错误处理策略

不同的错误需要不同的处理策略: 以下章节将结合代码示例介绍每种策略。
添加重试中间件以自动重试网络问题和速率限制错误。模型调用和工具调用各有其支持指数退避的重试中间件:

速率限制

限制资源使用有两种互补方式:控制发送给模型提供商的请求速率,以及限制单次运行中的总调用次数。

提供商速率限制

聊天模型提供商会对特定时间段内的调用次数施加限制。要控制发出请求的速率,请在初始化模型时配置 rate_limiter:
有关完整配置,请参阅 速率限制。

调用次数限制

若不加限制,一个困惑的智能体可能在几分钟内耗尽您的 LLM API 预算,例如在同一个工具调用上循环或执行数百次模型调用。请为单次运行设置模型调用和工具执行的次数上限:
使用 run_limit 来限制单次调用(每次轮次重置)中的调用次数。使用 thread_limit 来限制整个对话(需要检查点)中的调用次数。有关完整配置,请参阅 ModelCallLimitMiddleware 和 ToolCallLimitMiddleware。

重试

临时性故障(网络超时、速率限制)应自动重试。模型调用和工具调用各有其支持指数退避的重试中间件:
将 ToolRetryMiddleware 的作用范围限定于特定工具,而不是重试所有工具。文件系统的 read_file 失败后重试可能无济于事,但网络搜索超时则可能有效。有关完整配置,请参阅 ModelRetryMiddleware。

降级

如果您的主要模型提供商完全中断,降级中间件将切换至备用模型:
有关完整配置,请参阅 ModelFallbackMiddleware。

错误处理

当工具在执行过程中抛出异常时,默认情况下智能体运行会中止。使用 ToolErrorMiddleware 来捕获特定异常,并将其转换为模型可见且可恢复的错误 ToolMessage,而不是导致运行崩溃。
ToolErrorMiddleware 需要 langchain>=1.3.14。
有关完整的配置选项和使用模式,包括异步处理器以及与重试中间件的组合,请参阅 预构建中间件。