错误处理策略
不同的错误需要不同的处理策略:
以下章节将结合代码示例介绍每种策略。
- 临时性错误
- LLM 可恢复
- 用户可修复
- 服务提供商中断
- 过度调用
- 意外错误
添加重试中间件以自动重试网络问题和速率限制错误。模型调用和工具调用各有其支持指数退避的重试中间件:
速率限制
限制资源使用有两种互补方式:控制发送给模型提供商的请求速率,以及限制单次运行中的总调用次数。提供商速率限制
聊天模型提供商会对特定时间段内的调用次数施加限制。要控制发出请求的速率,请在初始化模型时配置rate_limiter:
调用次数限制
若不加限制,一个困惑的智能体可能在几分钟内耗尽您的 LLM API 预算,例如在同一个工具调用上循环或执行数百次模型调用。请为单次运行设置模型调用和工具执行的次数上限:run_limit 来限制单次调用(每次轮次重置)中的调用次数。使用 thread_limit 来限制整个对话(需要检查点)中的调用次数。有关完整配置,请参阅 ModelCallLimitMiddleware 和 ToolCallLimitMiddleware。
重试
临时性故障(网络超时、速率限制)应自动重试。模型调用和工具调用各有其支持指数退避的重试中间件:read_file 失败后重试可能无济于事,但网络搜索超时则可能有效。有关完整配置,请参阅 ModelRetryMiddleware。
降级
如果您的主要模型提供商完全中断,降级中间件将切换至备用模型:错误处理
当工具在执行过程中抛出异常时,默认情况下智能体运行会中止。使用 @[ToolErrorMiddleware] 来捕获特定异常,并将其转换为模型可见且可恢复的错误 ToolMessage,而不是导致运行崩溃。Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

