HumanInTheLoopMiddleware] 在 LangChain中添加审核,或通过 Deep Agents中的 interrupt_on 参数添加。中间件以两种模式之一暂停:
:::
:::js
您通过 @[humanInTheLoopMiddleware] 在 LangChain中添加审核,或通过 Deep Agents中的 interruptOn 参数添加。中间件以两种模式之一暂停:
:::
- 按调用暂停:每个需要审核的工具调用暂停一次。
- 批量暂停:每个模型回合暂停一次,涵盖该回合中的所有工具调用。批量模式是当前默认模式。
按调用模式需要
langchain>=1.4.6。Deep Agents 使用批量模式。按调用模式需要
langchain>=1.5.18。Deep Agents 使用批量模式。从暂停到恢复的审批流程
无论哪种模式,每个审批都遵循相同的步骤: :::python- 模型提出一个或多个工具调用。
- 中间件根据您的
interrupt_on政策检查每个调用。需要审核的调用会暂停智能体并使用 @[interrupt]。 - checkpointer 保存智能体的状态,以便运行可以停止并在稍后(甚至另一个进程中)恢复。
- 您的应用程序向审核者展示待处理的调用,并收集每个调用的决策。
- 您使用
Command(resume=...)恢复智能体。中间件应用每个决策,智能体继续执行。 :::
- 模型提出一个或多个工具调用。
- 中间件根据您的
interruptOn政策检查每个调用。需要审核的调用会暂停智能体并使用 @[interrupt]。 - checkpointer 保存智能体的状态,以便运行可以停止并在稍后(甚至另一个进程中)恢复。
- 您的应用程序向审核者展示待处理的调用,并收集每个调用的决策。
- 您使用
new Command({ resume })恢复智能体。中间件应用每个决策,智能体继续执行。 :::
本页的示例使用一个具有三个工具的智能体。
write_file 允许所有决策类型。execute_sql 仅允许 approve 和 reject。read_data 无需审核运行。在一个回合中,模型调用所有三个工具。
分别审核每个工具调用
在按调用模式下,每个需要审核的工具调用在开始时独立暂停: 每个中断值描述一个调用,并具有type: "tool_approval"。execute_sql 中断如下所示:
:::python
response_schema,即调用接受的答案的 JSON 架构。对于 execute_sql,架构允许 approve 和 reject。对于 write_file,它还允许 respond 和 edit。edit 分支包含 write_file 自身的参数架构。客户端可以从架构渲染表单,而不是硬编码决策类型。LangChain 指南 显示每种决策类型的架构。
您使用中断的 ID 作为键,对每个中断进行一个决策:
:::python
一次性审核整个回合
:::python 在批量模式下,中间件在模型响应后、任何工具运行前暂停一次。read_data 等待审核,即使它不受限制。一个中断在 action_requests 中列出所有受限制的调用,并在单独的 review_configs 列表中列出每个调用的允许决策:
action_requests 相同顺序的一个决策列表进行回答:
read_data 等待审核,即使它不受限制。一个中断在 actionRequests 中列出所有受限制的调用,并在单独的 reviewConfigs 列表中列出每个调用的允许决策:
actionRequests 相同顺序的一个决策列表进行回答:
response_schema。中间件仅在应用决策后、LangGraph 保存答案时检查每个决策。
对比批量模式问题
批量模式通过位置匹配答案与调用,并在保存答案后检查每个答案。每一行显示示例智能体在批量模式下遇到的问题,以及按调用模式如何避免这些问题: :::python
:::js
选择中断模式
:::python
:::js
为新智能体使用单次调用模式。LangChain 计划在下一个主要版本中将此模式设为默认。
在您的审批 UI 读取批量格式(例如使用
useStream 审批模式 构建的格式)时保持批量模式。
单次调用模式也会改变中间件顺序和多响应续传的行为。切换前,请阅读 为单次调用审核排序中间件 和 按 ID 续传每个调用。
参考文档
- LangChain 中的人机协作:配置中间件并回答每种决策类型。
- Deep Agents 中的人机协作:深度智能体及其子智能体的审批。
- 定义中断响应模式:LangGraph 如何检查续传值。
官方原文:src/oss/concepts/human-in-the-loop.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。