《Agentic Design Patterns》第 12 章导读异常处理与恢复Exception Handling and Recovery本文是对开源书籍《Agentic Design Patterns》第 12 章的解读与导读内容忠实呈现原文并附个人思考。原书在线阅读https://adp.xindoo.xyz/ 翻译项目代码仓库https://github.com/xindoo/agentic-design-patterns前面几章我们聊了智能体怎么规划、怎么协作、怎么记东西、怎么学习——都是一切顺利的时候怎么干。但现实世界哪有一帆风顺的数据库挂了、API 超时了、返回格式不对、用户输入出乎意料、工具调用失败了……这些意外才是常态。一个只能在理想条件下工作的智能体就像一辆只能在完美平路上开的车——好看但没用。第 12 章讲的**异常处理与恢复Exception Handling and Recovery**模式就是解决出问题了怎么办的怎么发现错误、怎么处理错误、怎么恢复正常、怎么让智能体更皮实。一、为什么异常处理如此重要书中开头就点出了核心观点要让 AI 智能体在真实世界里可靠运行它们必须能处理各种不可预见的情况、错误和故障。就像人类遇到意外障碍时会想办法绕过去一样智能体也需要强大的系统来发现问题、启动恢复、或者至少确保优雅地失败。这个模式跟第 4 章的反思模式经常配合使用。比如第一次尝试失败了、抛了异常反思过程就来分析失败原因然后用改进的方法比如优化提示词重试任务。反思是从失败中学习异常处理是失败了之后怎么办——一个偏改进一个偏应急。二、三个阶段检测 → 处理 → 恢复异常处理与恢复不是一个单一动作而是一个完整的流程分为三个阶段图 1异常处理和恢复的三大阶段——错误检测、错误处理、恢复。第一阶段错误检测怎么知道出问题了书中列举了几种常见的检测方式工具输出异常返回格式不对、内容无意义、缺少关键字段API 错误码404找不到、500服务器错误、429限流等等响应超时等了半天没回来可能服务挂了或网络不通内容不连贯返回的东西前言不搭后语明显不对其他智能体监控让专门的监控智能体或系统来做异常检测更主动。检测是第一步——发现不了问题后面就全白搭。第二阶段错误处理发现问题之后怎么办不是所有错误都一样严重处理方式也不同处理策略做法适用场景日志记录详细记录错误信息方便后续调试分析所有错误都该记重试再试一次有时微调参数临时性错误网络抖动、瞬时过载回退Fallback用备选方案或方法顶上主要方案不可用时优雅降级维持部分功能至少提供一些价值完全恢复不了时通知发警报给人或其他智能体需要人工干预的严重问题比如 API 超时了先重试一次可能只是网络抖动重试还不行用备用接口回退备用接口也挂了告诉用户暂时查不到请稍后再试优雅降级同时通知运维通知。第三阶段恢复处理是当下怎么办恢复是怎么回到正轨状态回滚撤销刚才的操作回到出错前的状态——比如数据库事务的回滚诊断分析深入调查错误原因防止再犯自我纠正调整智能体的计划、逻辑或参数避免同样的错误升级处理实在搞不定的交给人或更高级的系统。恢复阶段的目标很明确让智能体回到稳定运行状态并且最好能从这次失败中学到点什么。三、六大应用场景异常处理不是锦上添花而是生产环境的必备能力。书中举了六个典型场景客服聊天机器人数据库挂了不能崩溃。检测到错误 → 告诉用户临时故障 → 建议稍后再试或转人工。自动金融交易资金不足市场关闭不能瞎重试。记录错误 → 避免重复无效交易 → 通知用户或调整策略。智能家居自动化灯打不开可能是网络问题也可能是设备坏了。检测失败 → 重试几次 → 还不行就通知用户手动处理。数据处理智能体一批文档里有一个损坏了不能整个流程停下来。跳过坏文件 → 记录错误 → 继续处理其他的 → 最后汇总报告。网络爬虫遇到验证码网站改版了404不能直接崩。暂停 → 换代理试试 → 记录失败的 URL → 继续爬其他的。机器人与制造机械臂抓不住零件可能是没对齐。传感器检测失败 → 重新调整位置 → 再试一次 → 还不行就报警给人或换下一个零件。这些场景的共同特点是错误是常态不是例外。真正可靠的智能体不是从不犯错的而是犯错了也能妥善处理的。四、实操示例ADK 中的分层降级策略书中给了一个用 Google ADK 实现的分层位置查询例子很能体现异常处理的思路——主方案不行用备选备选不行给兜底。fromgoogle.adk.agentsimportAgent,SequentialAgent# 第一层尝试精确查询primary_handlerAgent(nameprimary_handler,modelgemini-2.0-flash-exp,instruction 用 get_precise_location_info 工具获取精确位置信息。 ,tools[get_precise_location_info])# 第二层精确查询失败时用粗略查询当回退fallback_handlerAgent(namefallback_handler,modelgemini-2.0-flash-exp,instruction 检查 state[primary_location_failed] 是否为 True。 - 如果失败了从用户查询中提取城市用 get_general_area_info 工具。 - 如果没失败什么也不做。 ,tools[get_general_area_info])# 第三层整理结果给用户一个清晰的回复response_agentAgent(nameresponse_agent,modelgemini-2.0-flash-exp,instruction 查看 state[location_result] 中的位置信息清晰呈现给用户。 如果没有信息道歉说查不到。 ,tools[])# 按顺序执行三层robust_location_agentSequentialAgent(namerobust_location_agent,sub_agents[primary_handler,fallback_handler,response_agent])这个设计很巧妙主路径尽量给用户最好的结果精确位置回退路径精确的拿不到至少给个大概的城市级信息兜底啥都拿不到好好道歉别崩。用SequentialAgent保证执行顺序用state在智能体之间传递状态“主查询失败了吗”。整个结构清晰、层次分明是异常处理的典型实践。五、速览问题背景在真实世界环境中运行的 AI 智能体不可避免地会遇到意外情况、错误和系统故障——工具调用失败、网络问题、无效数据……这些都会威胁智能体完成任务的能力。没有结构化的异常管理方法智能体就会很脆弱、不可靠遇到障碍就容易彻底失败难以在关键或复杂应用中部署。解决方案异常处理与恢复模式为构建强壮、有弹性的 AI 智能体提供了标准化方案。给智能体配备预测、管理和从操作失败中恢复的能力。包括主动的错误检测监控工具输出和 API 响应以及响应处理策略日志记录、重试、回退机制。对于更严重的问题还有恢复协议——回到稳定状态、自我纠正调整计划、或者升级给人类操作员。这套系统化方法确保智能体保持操作完整性、从失败中学习、在不可预测的环境中可靠运行。实践建议任何部署在动态现实世界环境中的 AI 智能体都应该使用此模式。系统故障、工具错误、网络问题、不可预测的输入随时可能发生而操作可靠性是关键要求时异常处理必不可少。六、可视化总结图 2异常处理模式——检测错误 → 处理错误 → 恢复运行。关键要点异常处理和恢复对于构建强大、可靠的智能体至关重要此模式涉及检测错误、优雅处理错误、实施恢复策略三个阶段错误检测可以通过验证工具输出、检查 API 错误码、使用超时等方式实现处理策略包括日志记录、重试、回退、优雅降级和通知恢复侧重于通过诊断、自我纠正或升级来恢复稳定运行此模式确保智能体即使在不可预测的现实世界环境中也能有效运作。结语与个人思考异常处理与恢复听起来是个很老派的话题——这不就是软件工程里已经讲了几十年的东西吗为什么在 AI 智能体时代还要专门拿一章来讲因为 AI 智能体的错误跟传统软件的错误性质不一样。传统软件的错误通常是确定性的——输入一样错误就一样。修复了 bug以后就不会再犯。但 LLM 驱动的智能体不一样它的错误很多是非确定性的有时候它能正确调用工具有时候就参数填错了有时候它能理解你的意思有时候就理解偏了同一句话这次回复没问题下次可能就胡说八道。这种概率性错误给异常处理带来了新的挑战。传统的 try-catch 只能捕获程序层面的错误比如 API 返回 500但捕获不了逻辑层面的错误比如 API 调用成功了但返回的内容根本不对。这也是为什么智能体的异常处理需要更多层次程序层面传统的错误码、超时、异常捕获——这个跟以前一样内容层面检查返回内容的格式、合理性、相关性——这是智能体特有的结果层面用另一个智能体或确定性逻辑来判断这结果对不对——反思模式就是干这个的流程层面重试、回退、降级、升级——保证系统整体不崩。另一个值得思考的问题是**“优雅失败的边界**。什么叫优雅”是尽可能提供部分价值还是宁可不说也别瞎说这个问题没有标准答案取决于场景——在娱乐场景下给个大概的答案可能还行在医疗、法律、金融场景下不知道可能比给错答案更好。最后我觉得异常处理最能体现一个系统的成熟度。Demo 阶段的智能体只需要展示最好的情况下能干什么而生产级别的智能体必须考虑最坏的情况下会怎么样、怎么应对。一个团队对异常处理的重视程度基本反映了他们对这个系统的认真程度。下一步建议阅读第 13 章人机协同Human-in-the-Loop——看看怎么把人类智慧引入智能体系统在关键问题上让人来把关。本文基于开源书籍《Agentic Design Patterns》https://github.com/xindoo/agentic-design-patterns 在线阅读 https://adp.xindoo.xyz/ 整理供学习交流版权归原作者所有。
阅读完成 · 觉得有帮助?