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] 层级冒泡,请遵循以下规则:
- 仅编译最外层图并使用检查点器。 保留子智能体不使用
checkpointer=...,以便它们使用 每次调用持久化 并在运行时继承父智能体的检查点器。 - 在
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 调用来支持多级层次结构。使用子智能体模式时,您有两个选项:
- 将所有智能体扁平化为单个监督者,每个叶节点智能体对应一个工具。当每个工作智能体独立时,这是最简单的方法。
- 在需要中间协调时嵌套工具调用。将一个中间层智能体(它本身是一个 @[
create_agent],拥有自己的子节点工具)作为顶层监督者的一个工具进行包装。
StateGraph] 和 子图节点。
迁移消息历史选项
create_supervisor 暴露 output_mode 来控制工作智能体的消息如何在对话历史中显示:
full_history:包含工作智能体的所有消息。last_message:仅包含工作智能体的最终响应。
last_message 行为,仅返回最终消息;对于 full_history 行为,返回格式化的完整对话摘要。参见 子节点输出 了解将额外状态传递回监督者的模式。
参见
- 子节点:模式概述和设计决策
- 使用子节点构建个人助理:分步监督者教程
- 使用子图:子图持久化、中断和状态检查
- 中断:暂停和恢复图执行
- LangGraph v1 迁移指南:从
create_react_agent迁移到create_agent
官方原文:src/oss/python/migrate/langgraph-supervisor.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。