Skip to main content
故障容忍中间件可在异常发生时保持深度智能体持续运行。并非所有错误都应同等处理:瞬态故障(网络超时、速率限制)应自动重试,LLM可恢复的错误(工具输出异常、解析失败)应反馈给模型,而需要人工介入的错误应暂停智能体。

错误处理策略

不同错误类型需要不同的处理策略: 以下部分将详细说明每个策略的代码示例。
添加重试中间件以自动重试网络问题和速率限制。模型调用和工具调用各自有独立的重试中间件并采用指数退避::::python
::::::js
:::

速率限制

有两种互补的资源限制方式:控制对模型服务商的请求频率,以及限制单次运行的调用总量。

服务商速率限制

对话模型服务商对单段时间内的调用次数设限。通过初始化模型时配置 rate_limiter 控制请求频率: :::python
::: :::python 完整配置请参考 Rate limiting。 :::

调用限制

无限制时,困惑的智能体可能因无限循环或数百次调用迅速耗尽LLM API预算。对模型调用和工具执行设置单次运行限制: :::python
::: :::js
::: 使用 run_limit 在单次调用内限制调用次数(每次会话重置)。使用 thread_limit 跨整个对话限制调用次数(需检查点)。完整配置请参考 @[ModelCallLimitMiddleware] 和 @[ToolCallLimitMiddleware]。

重试

瞬态故障(网络超时、速率限制)应自动重试。模型调用和工具调用各自有独立的重试中间件并采用指数退避: :::python
::: :::js
::: 将 @[ToolRetryMiddleware] 限制在特定工具上。文件系统 read_file 失败无需重试,但网络搜索超时则可能需要。完整配置请参考 @[ModelRetryMiddleware]。 :::python
主流集成包抛出标准异常类型(@[ModelAuthenticationError]、@[ModelRateLimitError]、@[ModelTimeoutError] 等),携带 is_retryable 标志供重试中间件默认识别。完整异常列表请参考 Model exceptions。
:::

备用方案

若主模型服务商完全宕机,备用中间件将切换至替代模型: :::python
::: :::js
::: 完整配置请参考 @[ModelFallbackMiddleware]。

错误处理

:::python 当工具执行期间抛出异常时,智能体运行将默认中断。使用 @[ToolErrorMiddleware] 捕获特定异常并转换为 ToolErrorMiddleware,使模型能查看错误详情并恢复,而非直接崩溃。
langchain>=1.3.14 需要 ToolErrorMiddleware。
完整配置选项和使用模式(包括异步处理和与重试中间件组合)请参考 Prebuilt middleware。 ::: :::js 当工具执行期间抛出异常时,智能体运行将默认中断。 ToolErrorMiddleware 在JavaScript SDK中尚未支持。 :::
官方原文:src/oss/deepagents/fault-tolerance.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026