Skip to main content
某些工具操作可能很敏感,需要在执行前获得人工批准。Deep Agents 通过 LangGraph 的中断功能支持人机交互工作流。你可以使用 interrupt_on 参数配置哪些工具需要审批。

基本配置

interrupt_on 参数接受一个字典,将工具名称映射到中断配置。每个工具可以配置为:
  • True:启用中断,使用默认行为(允许批准、编辑、拒绝、回复)
  • False:禁用此工具的中断
  • {"allowed_decisions": [...]}:自定义配置,指定允许的决策

决策类型

allowed_decisions 列表控制人工在审查工具调用时可以采取的操作:
  • "approve":使用代理提出的原始参数执行工具
  • "edit":在执行前修改工具参数
  • "reject":完全跳过执行此工具调用
  • "respond":将人工的消息直接作为工具结果返回,跳过执行——适用于“询问用户”类型的工具
你可以为每个工具自定义可用的决策:

处理中断

当中断被触发时,代理会暂停执行并交还控制权。检查结果中的中断并相应处理。

多个工具调用

当代理调用多个需要审批的工具时,所有中断会批量包含在单个中断中。你必须按顺序为每个中断提供决策。

编辑工具参数

"edit" 在允许的决策中时,你可以在执行前修改工具参数:

子代理中断

使用子代理时,你可以使用工具调用上的中断工具调用内的中断

工具调用上的中断

每个子代理可以有自己的 interrupt_on 配置,覆盖主代理的设置:
当子代理触发中断时,处理方式相同——检查结果中的 interrupts 并使用 Command 恢复。

工具调用内的中断

子代理工具可以直接调用 interrupt() 来暂停执行并等待审批:
运行时,这会产生以下输出:

最佳实践

始终使用检查点存储器

人机交互需要检查点存储器来在中断和恢复之间持久化代理状态:

使用相同的线程 ID

恢复时,你必须使用具有相同 thread_id 的相同配置:

匹配决策顺序与操作

决策列表必须与 action_requests 的顺序匹配:

根据风险定制配置

根据风险级别配置不同的工具: