趋近智
当LLM代理协调一系列工具以达成一项复杂目的时,整个操作的可靠性取决于链中每个工具的顺利执行。然而,如同任何分布式系统或操作序列一样,故障可能且确实会发生。工具可能暂时不可用,外部API可能返回意料之外的错误,或者工具之间传递的数据可能格式不正确。如果没有处理这些问题的有效方法,代理的实用性可能受到严重影响。详细介绍了在工具链中构建恢复能力的方法,使代理能够从故障中平稳恢复并在可能时继续其任务。
在设计恢复机制之前,了解故障可能在何处及如何出现在多工具执行流程中是很重要的。常见故障点包括:
database_query_tool的数据库连接错误)交互问题而失败。识别这些潜在问题是构建更可靠代理行为的第一步。
一旦检测到工具链内发生故障,代理需要一个方案。简单地中止整个操作通常不是最佳用户体验。以下是您可以实施的几种策略:
对于瞬时问题,如暂时性网络故障或瞬时服务不可用,重试失败的操作通常是有效的。
如果特定工具持续失败或已知不适合特定子任务的变体,代理可能会尝试使用备选工具。
get_weather_forecast_api_A失败,代理可以自动尝试使用get_weather_forecast_api_B。有时,由于链中某个部分的不可恢复故障,无法达成完美结果。在这种情况下,代理仍能提供部分或略次优的结果。
对于会修改状态的工具链(例如,预订航班然后预订酒店),链条中途故障可能使系统处于不一致状态。
book_flight)并且随后的必要工具(例如,make_payment)失败,您可能需要一个补偿动作(例如,cancel_flight_booking)来将系统恢复到一致状态。在多个(可能是第三方)工具间实现事务性行为较为繁琐,但有时对于关键操作是必要的。当自动化恢复策略已用尽或被认为不足以应对该类故障时,让用户参与是一种实用的方法。
虽然不是直接的恢复策略,但对工具执行、故障和恢复尝试进行全面的日志记录是诊断问题并随着时间提升代理恢复能力的基本条件。这些数据有助于您理解常见故障模式并改进恢复逻辑。这一方面将在第6章中更详细地介绍。
代理的核心协调逻辑需要设计为能预见和管理故障。这通常包括:
try...except块)是实现此目的的常见机制。以下图表描绘了处理工具链内故障的一般流程,其中包含重试和备选工具策略:
协调序列中工具故障的恢复决策流程。如果工具 A 失败,系统首先考虑重试。如果重试耗尽或不适用,它会评估使用备选工具 B。如果工具 B 也失败或没有合适的备选方案,则故障会被上报。
考虑一个任务是预订航班然后预订酒店的代理。
search_flights_tool -> book_flight_tool -> search_hotels_tool -> book_hotel_tool。book_flight_tool在多次重试后,由于航空公司API返回“支付处理错误”而失败。恢复步骤:
book_flight_tool返回的特定错误。book_flight_tool在未确认付款的情况下进行了预订,则可能会尝试执行取消该预订的补偿动作,如果存在这样的工具(例如,cancel_flight_reservation_tool)。search_flights_tool。通过整合这些故障恢复策略,您可以使您的LLM代理更加可靠且用户友好。当一个代理能够智能地应对挫折、重试瞬时错误或寻求澄清时,它会从一个脆弱的脚本转变为一个更具韧性且更有用的助手。您的恢复逻辑具体如何将取决于任务的重要性、所涉及工具的特性以及期望的用户体验。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造