智能体系统能够自主处理复杂任务,例如查询库存、管理购物车,也给可靠性以及符合人类预期的行为带来新的挑战。系统失败可能源于错误假设、编造的工具调用或意外的外部问题,并进一步引发连续错误。除了 Human-in-the-Loop(HITL),生产级 AI 智能体还需要两类设计:人类反馈循环和容错机制。终端用户、开发者或领域专家的反馈可以提供纠正信号和指导,帮助持续改进智能体。重试、撤销操作等容错模式则使系统能够妥善处理错误,维持整个工作流程。这两类方法共同帮助管理智能体行为的不确定性,并支持迭代改进。
智能体系统中的人类反馈循环
人类反馈的作用
人类反馈可以帮助 AI 智能体的行为符合人类预期。即使先进的智能体也可能误解指令、检索无关信息、错误使用工具,或生成质量不足的回答。人类可以检查智能体操作和输出,提供纠正意见或质量评分,因此人类反馈是许多实际 AI 应用质量保证的重要组成部分。引入人的判断,有助于保持智能体决策有依据、有用且处于控制范围内。反馈可以分为两个时间层面:执行期间或执行结束后立即纠正,以及利用累积反馈改进模型或提示。对于需要学习和适应的智能体,两者都很重要。
人类反馈的形式
智能体系统中的人类反馈通常包括以下形式。
- 交互式用户反馈:用户可以在交互期间点赞、点踩、评分,或给出纠正指令。例如,告诉购物助手“这与我的意思不符”,或者选择更合适的建议。系统可以将其作为调整行为的信号,重新理解用户意图或规划步骤。用户重新表述问题,或说明“我问的是蓝色保护套,颜色不符合要求”,也能表明最初理解需要纠正。应记录这些信号;用户不得不纠正智能体的执行记录,是值得检查的理解失败案例。观察用户何时感到困惑或必须介入,可以帮助确定改进方向。
- 转交人工处理:智能体不确定如何继续,或者发现决策影响重大时,可以请求人工处理或批准。例如,购物助手即将应用大额折扣,或无法有把握地回答复杂商品问题时,可以交给人工客服。设计“请求人工帮助”分支是一种常见安全措施,使人在置信度较低或情况含糊时检查决策依据或提供答案。这有助于维持用户体验;人工提供的回答也可以作为后续训练资料。
- 离线标注与审核:许多反馈在执行结束后,通过监控和资料整理收集。开发者或分析人员可以检查对话日志、工具执行记录和输出,标记错误或完成程度。现代智能体通常具有可观测性功能,记录所调用工具、输入输出,以及可获得的逐步决策说明。审核人员可以据此定位推理过程出错的位置,或判断何处应采取其他操作。例如,测试人员可以标记某次工具调用多余,或者最终回答遗漏关键信息。标注、标签和评分为改进提供依据。结构化的离线反馈还能形成高质量评估数据集。
支持反馈的记录机制与可观测性
为了有效开发智能体系统,必须加入能够观察其行为的记录机制。只能看到最终回答、无法了解执行过程的系统难以监督和纠正,因此应在每一步设置日志与监控接口。通常需要记录每次 LLM 调用的提示和结果、每次工具调用及其结果,以及模型实际提供的中间推理说明。丰富的追踪记录有助于调试及汇集人类反馈。可观测性平台已经成为 LLM 应用的重要基础设施,除延迟和成本外,还用于跟踪决策及中间步骤的质量。例如,LangSmith 可以显示输入、全部执行步骤及最终输出,将错误追溯到具体步骤。基于 OpenTelemetry 的 OpenInference 等规范,可以将 LLM 提示、工具使用和向量数据库查询记录为结构化日志,汇集到仪表板或分析工具中,实时观察智能体行为。有了这些记录,可以设置触发器或通知,例如标记置信度低于阈值或工具调用失败的执行,供人工及时审核。还应记录反映决策质量的指标,例如工具错误率和目标完成率。工具错误突然增多或成功率下降,可能意味着新增缺陷或超出预期范围的查询,需要进一步检查交互记录。清楚的日志、追踪可视化及分析功能,能够显示何处需要人工介入,并为反馈提供有效依据。
利用反馈持续改进
收集反馈之后,需要将反馈用于改进系统。常见方法包括以下几种。
- 模型微调与奖励学习:可以使用反映人类选择倾向的数据训练模型。例如,在基于人类反馈的强化学习(RLHF)中,标注人员对回答排序或评分,这些判断用于训练奖励模型,再据此优化智能体。RLHF 常用于基础模型,也可以扩展到智能体行为。可以整理购物助手中用户满意和不满意的记录,通过微调 LLM 或学习独立的策略模型来调整行为。经过训练,智能体可以逐渐学会优先选择能产生更好结果的操作,例如在问题含糊时请求澄清,因为训练资料显示未经澄清的回答常获得低分。
- 调整提示与逻辑:许多改进可以通过提示工程,或者将反馈反映为明确规则和少量示例完成,无需重新训练模型。如果用户经常请求当前工具无法完成的功能,例如并列比较两个商品,团队可以增加比较工具,或增加检索商品规格的步骤。反馈由此揭示能力缺口,工程实现则补充对应功能。如果日志显示智能体经常误解某种表述,可以在系统提示中增加说明或示例。人类反馈帮助识别推理或指令不足之处,指导这些调整。
- 验证数据集与回归测试:每次人工纠正或标记错误,都可以转化为后续测试案例。团队可以将真实失败案例加入评估数据集,更新模型版本或提示逻辑后重新测试。例如,人工发现购物助手推荐了已停产商品,就记录查询及预期行为,并在下一版本中检查是否仍推荐无库存商品。不断积累历史问题,结合自动指标和人工检查进行评估,可以系统性地改善表现。反馈、改进、测试和部署不断循环,通常比一次完成开发更能提高稳健性。
这些改进需要结合人的判断与自动评估。自动指标可能发现回答存在事实错误,人工还可能发现表述令人困惑;两方面都可以用于下一次训练或调整。
智能体系统中的容错机制
挑战与失败类型
传统软件的许多失败类型已经得到充分研究,AI 智能体的概率性行为和复杂流程又引入新的类型。多步骤计划中的任何步骤都可能失败,且其方式可能不确定,难以在测试时预测。例如,购物助手的向量查询没有返回有用商品,属于信息检索失败;LLM 编造不存在的 API 调用,属于语义错误;真实 API 调用崩溃或超时,属于执行错误。这些失败还可能互相影响:一次问题可能使智能体进入错误路径,误认为工具已成功,从而让后续步骤依据错误输入和假设运行。外部 API 故障、速率限制等依赖问题也可能随时发生,超出智能体控制范围。因此,设计时需要预期模型推理或外部因素可能出错,并规定可控制的处理方式。
容错策略
智能体容错可以借鉴可靠软件工程的方法,并考虑 AI 特有的问题。
- 指数退避重试:短暂网络问题、速率限制和工具临时不可用,往往可以等待后重试。指数退避让每次重试间隔逐渐增加,例如 1 秒、2 秒、4 秒,以免增加服务压力或再次触发速率限制。例如,查询库存的 API 超时时,工具封装层可以处理异常,短暂停顿后重试。如果第二次成功,流程正常继续,用户可能只感到轻微延迟。多次重试仍失败时,再进入替代处理路径。重试逻辑可以封装在工具层自动执行。还可以加入熔断器:服务持续失败时暂停访问一段时间,改用其他策略或请求人工帮助,防止不稳定工具影响整个系统。
- 撤销操作与恢复状态:计划涉及外部状态或内部工作状态变化时,需要处理执行中途失败的情况,类似数据库事务对不完整状态的处理。例如,购物助手将商品保留在购物车中并减少库存,随后付款失败,就应撤销保留,释放库存。实现时可以结合检查点和业务逻辑,在每个成功步骤后保存智能体记忆状态或外部状态快照。后续发生严重错误时,恢复到最近检查点,尝试其他方法或告知用户。也可以按事务组织计划,只在规定步骤完成后确认修改,并支持撤销中间变化。例如,先使用临时数据结构保存变更,全部步骤成功后再提交到数据库或购物车。原则是在确认操作成功前,谨慎处理不可逆副作用。
- 安全的替代处理机制:所需工具不可用,或者模型重试后仍无法输出合规格式时,可以使用更简单的方法、返回部分结果,或安全地报告失败。例如,商品向量搜索不可用时,暂时使用关键词搜索;LLM 持续无法生成 API 所需 JSON 时,返回预先定义的错误消息或模板回答。每个关键步骤都应有应急处理方案。还可以准备不同提示表述,在一个提示无法得到有效结果时尝试另一种。另一种示例是在库存 API 失败时说明:“暂按可用处理,之后再次确认。”这些措施旨在使失败处理便于用户理解,并限制问题的影响。
- 防护与验证:对智能体输出和决策进行验证,可以提前发现问题。例如,要求输出合法 SQL 时,可以通过验证器或不实际执行修改的检查步骤确认有效性。验证失败后,先启动纠正循环,例如更换提示,再决定是否进入下一步。系统也可以尝试其他工具。这样能够尽早识别看似合理却不正确的语义输出;明确识别问题后,撤销操作或重试也更容易执行,有助于维持数据和流程的完整性。
- 由人工接手:自动恢复全部失败,或者智能体反复遇到无法解决的错误时,应在条件允许时转交人工。聊天机器人可以将对话交给人工客服,自主系统可以暂停后续操作并通知负责人。购物订单多次处理失败时,可以向客服提供上下文,由其人工完成处理。人工介入速度较慢,扩展能力也有限,但对于严重失败,能够减少无提示失败或重大损失。每次介入还可以记录下来,用于改进自动处理能力。
失败的可观测性与监控
容错同样依赖可观测性。需要通过实时错误日志、错误率指标及告警识别失败,并触发适当策略。例如,错误追踪应清楚说明哪个工具或哪项验证失败,使流程控制逻辑能够选择重试或替代处理。通常应由外围流程控制代码实现安全处理循环,确保错误得到处理,减少单独依赖 LLM 的风险。
在运维中,观察生产环境中智能体的整体表现,有助于发现系统性问题。例如,购物助手的 retrive_context 工具错误率突然上升,工程人员可以检查库存服务是否不可用,或智能体是否开始传入错误参数。原因可能是最近的变更使查询多出字段,导致格式不合法;确认原因后即可部署修复。
健康状态仪表板可以展示成功率、每项任务平均尝试次数、转交人工的频率等指标,帮助观察可靠性。例如,失败查询比例突然超过 5% 时,可以自动通知维护人员,减少未被发现的失败。开发期间也必须测试容错能力,例如主动触发工具异常,或提供难以理解的查询,观察系统如何处理。如果智能体无法继续,或者生成错误回答,就说明恢复逻辑存在不足。容错需要预期错误、发现错误,并通过受控的重试、撤销操作或人工介入进行处理。
结合人类反馈与容错
人类反馈与容错在实际系统中可以相互促进。
- 反馈帮助改进错误处理:人工反馈经常揭示开发者未预料到的失败类型。例如,审核人员发现某种商品描述会使智能体反复执行错误操作,就可以增加验证规则、专门的替代路径,或调整提示。人工检查能够识别自动检查遗漏的问题。许多自动容错策略也来自对人工处理方式的观察,例如分析人员总在修正文本价格解析结果,就可以增加对应函数,将有效处理方法纳入系统逻辑。
- 容错有助于获得更有效的反馈:系统妥善处理失败后,用户和标注人员能够评估更丰富的结果。如果智能体遇到问题立即终止,反馈可能仅剩“没有结果”;如果它恢复后提供部分答案或请求帮助,用户可以提供线索或澄清,标注人员也能更具体地指出不足。受控地降低功能能够提高纠正意见和评分的参考价值。
- 共同依赖可观测性与评估:日志、追踪和指标既支持人工审核,也支持自动检测及恢复。许多 LLMOps 平台将这些功能结合。例如,LangSmith 提供追踪可视化、基于数据集的评估和人工标注队列。统一使用同一组执行记录进行错误处理和人工分析,有助于保持对智能体行为的一致理解。
- 持续改进循环:容错使智能体能够自行处理部分问题并继续服务用户;交互产生显式或隐式反馈,进一步改善能力和可靠性。有些人工纠正可以逐渐自动化,例如用户经常纠正某个事实,就更新检索知识库以减少重复错误。新场景带来新的失败类型时,监控系统可以发现问题并安排人工审核。观察、自动或人工修复、学习和更新构成持续循环:系统处理已有能力覆盖的任务,人类处理系统尚不能完成的部分,并为后续改进提供指导。
人类参与下的可靠智能体
智能体系统具有动态执行和处理复杂任务的能力,也容易遇到新的失败类型。生产环境中的设计需要同时支持接受人类指导和承受执行错误。人工监督与容错相结合,可以让智能体在每次执行中不断改进和适应,并将错误转化为改善系统的机会。
工程设计需要同时考虑 API 调用、记忆状态等技术问题,以及用户信任、反馈机制和监督流程等人类因素。LangSmith 等工具可以将日志、监控和反馈收集整合到同一工作流程中。结合执行记录、反馈收集、自动恢复和迭代调整,可以构建更稳健、反应更及时的智能体系统。