Skip to main content
langgraph-supervisor 包不再积极维护。相反,请使用 子智能体 模式:主智能体通过作为 工具 调用它们来协调专业工作者。 本指南涵盖了从 create_supervisor 迁移到 @[create_agent] 的方法,包括使用 @[interrupt] 和外部 API 回调的设置。

从 langgraph-supervisor 迁移到 create_agent 子智能体

变更摘要

基本迁移

使用 langgraph-supervisor 时,工作智能体是图节点,监督器使用手交工具在它们之间路由:
通过将每个工作者包装为主智能体上的工具,迁移到子智能体模式:
有关完整演练,请参阅 使用子智能体构建个人助理。

迁移中断和恢复流程

常见的 langgraph-supervisor 设置使用 @[interrupt] 在工作智能体的工具内部,以暂停执行,直到外部服务完成:
使用子智能体模式,相同的流程可以工作。@[interrupt] 在子智能体工具内部通过工具包装的 @[create_agent] 层级向上传播到最外层图。您的外部回调仍然可以使用 Command(resume=result) 恢复。

中断传播的要求

为了使 @[interrupt] 能够通过嵌套的 @[create_agent] 层级冒泡,请遵循以下规则:
  1. 仅编译最外层图并使用检查点器。 保留子智能体不使用 checkpointer=...,以便它们使用 每次调用持久化 并在运行时继承父智能体的检查点器。
  2. 在 configurable 中传递 thread_id。 外部 invoke() 或 stream_events() 调用必须包含一个 thread_id,以便图可以检查点和恢复。
这些规则适用于任意嵌套设置。例如,一个自定义 @[StateGraph] 外层,一个中间 @[create_agent] 监督器,和一个内部 @[create_agent] 子智能体都遵循相同的机制:
当 preview_tool 调用 @[interrupt] 时,异常会通过两个 @[create_agent] 层级冒泡,并在最外层 @[StateGraph] 的调用结果中作为 __interrupt__ 显示。您现有的 Command(resume=result) 回调路径仍然可以正常工作。 有关中断如何通过子图传播的更多信息,请参阅 子图持久化:中断 和 检查点和状态检查。

何时使用自定义 StateGraph

当您需要混合确定性步骤和智能体步骤时,使用自定义 @[StateGraph]。例如,固定路由、验证或与 @[create_agent] 节点一起的外部 API 调用。

迁移嵌套监督器

langgraph-supervisor 通过编译监督器并将它们传递给另一个 create_supervisor 调用来支持多级层次结构。使用子智能体模式时,您有两个选项:
  1. 将所有智能体扁平化为单个监督者,每个叶节点智能体对应一个工具。当每个工作智能体独立时,这是最简单的方法。
  2. 在需要中间协调时嵌套工具调用。将一个中间层智能体(它本身是一个 @[create_agent],拥有自己的子节点工具)作为顶层监督者的一个工具进行包装。
如果需要静态子图发现、按层级检查点命名空间或跨层级的共享状态键,请使用自定义 @[StateGraph] 和 子图节点。

迁移消息历史选项

create_supervisor 暴露 output_mode 来控制工作智能体的消息如何在对话历史中显示:
  • full_history:包含工作智能体的所有消息。
  • last_message:仅包含工作智能体的最终响应。
使用子节点模式时,在工具包装器中控制此行为。对于 last_message 行为,仅返回最终消息;对于 full_history 行为,返回格式化的完整对话摘要。参见 子节点输出 了解将额外状态传递回监督者的模式。

参见


官方原文:src/oss/python/migrate/langgraph-supervisor.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026