LangGraph 多智能体群是一个 Python 库,旨在将多个 AI 智能体编排成一个有凝聚力的 “群”。它建立在 LangGraph 之上,LangGraph 是一个用于构建健壮、有状态智能体工作流的框架,以实现一种特殊形式的多智能体架构。在一个群中,具有不同专业的智能体根据任务的需要动态地将控制权交给彼此,而不是单个单一智能体尝试处理所有事情。系统会跟踪最后一个激活的智能体,以便当用户提供下一个输入时,与同一智能体无缝地恢复对话。这种方法解决了构建协作 AI 工作流的问题,其中最合格的智能体可以处理每个子任务,而不会丢失上下文或连续性。

LangGraph Swarm 旨在使开发人员更轻松、更可靠地进行这种多智能体协调。它提供了将单个语言模型智能体(每个智能体都可能带有其工具和提示)链接到一个集成应用程序中的抽象。由于其基于 LangGraph,该库对流式响应、短期和长期记忆集成甚至人工干预提供了开箱即用的支持。通过利用 LangGraph(一种较低级别的编排框架)并自然融入更广泛的 LangChain 生态系统,LangGraph Swarm 允许机器学习工程师和研究人员构建复杂的 AI 智能体系统,同时保持对信息流和决策的显式控制。

LangGraph 群架构和主要特性

LangGraph Swarm 的核心是将多个智能体表示为有向状态图中的节点,边定义切换路径,共享状态跟踪 “active_agent”。当智能体调用切换时,库会更新该字段并传输必要的上下文,以便下一个智能体无缝地继续对话。这种设置支持协作专业化,让每个智能体专注于一个狭窄的领域,同时为灵活的工作流程提供可定制的切换工具。基于 LangGraph 的流和内存模块,Swarm 保留了短期对话上下文和长期知识,即使智能体之间的控制权转移,也能确保连贯的多轮交互。

通过切换工具进行智能体协调

LangGraph Swarm 的切换工具允许一个智能体通过发出更新共享状态的 “命令”、切换 “active_agent” 并传递上下文(如相关消息或自定义摘要)来将控制权转移到另一个智能体。虽然默认工具交接完整的对话并插入通知,但开发人员可以实现自定义工具来过滤上下文、添加指令或重命名操作以影响大语言模型(LLM)的行为。与自主 AI 路由模式不同,Swarm 的路由是明确定义的:每个切换工具都指定哪个智能体可以接管,确保可预测的流量。这种机制支持协作模式,例如 “旅行计划者” 将医疗问题委托给 “医疗顾问” 或协调者将技术和计费查询分发给专业专家。它依赖内部路由器将用户消息引导到当前智能体,直到发生另一次切换。

状态管理和内存

在智能体交接任务时,管理状态和内存对于保持上下文至关重要。默认情况下,LangGraph Swarm 维护一个共享状态,其中包含对话历史和一个 “active_agent” 标记,并使用检查指针(例如内存保护程序或数据库存储)来轮流保持这种状态。此外,它还支持长期知识的内存存储,允许系统为未来的会话记录事实或过去的交互,同时保留最近消息的窗口以供即时上下文使用。总之,这些机制确保集群永远不会 “忘记” 哪个智能体处于活动状态或讨论过什么,从而实现无缝的多轮对话,并随着时间的推移积累用户偏好或关键数据。

当需要更精细的控制时,开发人员可以定义自定义状态模式,以便每个智能体都有自己的私有消息历史记录。通过在调用前包装智能体调用以将全局状态映射到智能体特定的字段中,并在调用后合并更新,团队可以定制上下文共享的程度。这种方法支持从完全协作智能体到隔离推理模块的工作流,同时利用 LangGraph Swarm 强大的编排、内存和状态管理基础架构。

定制和可扩展性

LangGraph Swarm 为自定义工作流提供了广泛的灵活性。开发人员可以覆盖传递所有消息并切换活动智能体的默认切换工具,以实现专门的逻辑,例如汇总上下文或附加额外的元数据。自定义工具只需返回一个 LangGraph 命令来更新状态,智能体必须配置为通过适当的节点类型和状态模式键来处理这些命令。除了切换之外,还可以使用 LangGraph 的类型化状态模式重新定义智能体如何共享或隔离内存:在调用之前将全局群状态映射到每个智能体的字段中,然后合并结果。这使得智能体可以在不暴露其内部推理的情况下维护私有对话历史或使用不同的通信格式。为了完全控制,可以绕过高级 API 并手动组装一个 “StateGraph”:将每个编译的智能体添加为一个节点,定义转换边缘,并附加活动智能体路由器。虽然大多数用例都受益于 “create_swarm” 和 “create_react_agent” 的简单性,但下拉到 LangGraph 原语的能力确保了从业者可以检查、调整或扩展多智能体协调的各个方面。

生态系统集成和依赖

LangGraph Swarm 与 LangChain 紧密集成,利用 LangSmith 等组件进行评估,利用 langchain_openai 进行模型访问,利用 LangGraph 进行持久化和缓存等编排功能。其与模型无关的设计使其能够跨任何 LLM 后端(OpenAI、Hugging Face 或其他)协调智能体,并且可在 Python(“pip install langgraph-swarm”)和 JavaScript/TypeScript(“@langchain/langgraph-swarm”)中使用,使其适用于 Web 或无服务器环境。它在 MIT 许可下分发并积极开发,继续受益于社区贡献和 LangChain 生态系统的增强。

示例实现

以下是双智能体群的最小设置:

from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.prebuilt import create_react_agent
from langgraph_swarm import create_handoff_tool, create_swarm
model = ChatOpenAI(model="gpt-4o")
# 智能体 “Alice”:数学专家
alice = create_react_agent(
    model,
    [lambda a,b: a+b, create_handoff_tool(agent_name="Bob")],
    prompt="You are Alice, an addition specialist.",
    name="Alice",
)
# 智能体 “Bob”:一个俏皮的海盗角色,将数学问题交给 Alice
bob = create_react_agent(
    model,
    [create_handoff_tool(agent_name="Alice", description="Delegate math to Alice")],
    prompt="You are Bob, a playful pirate.",
    name="Bob",
)
workflow = create_swarm([alice, bob], default_active_agent="Alice")
app = workflow.compile(checkpointer=InMemorySaver())

在这里,Alice 处理加法运算并且可以将任务交给 Bob,而 Bob 则开玩笑地回应,但会将数学问题返回给 Alice。InMemorySaver 确保会话状态在轮流中保持不变。

用例和应用

LangGraph Swarm 通过使中央协调器能够动态地将子任务委托给专门的智能体来解锁高级的多智能体协作,无论是通过将紧急情况交给医疗、安全或灾难响应专家来分类,在航班、酒店和汽车租赁智能体之间路由旅行预订,在编码智能体和审阅者之间协调结对编程工作流,还是在研究人员、记者和事实核查智能体之间分配研究和报告生成任务。除了这些示例之外,该框架还可以为客户支持机器人提供动力,这些机器人将查询路由到部门专家,使用不同角色智能体进行交互式讲故事,使用特定阶段处理器的科学管道,或者在专家 “群” 成员之间划分工作提高可靠性和清晰度的任何场景。与此同时,LangGraph Swarm 处理底层消息路由、状态管理和平滑转换。

LangGraph Swarm 标志着向真正模块化、协作式 AI 系统的飞跃。将多个专用智能体构建为有向图可以解决单个模型难以处理的任务,每个智能体处理其专业知识,然后无缝交接控制权。这种设计使单个智能体保持简单和可解释,而集群则共同管理涉及推理、工具使用和决策的复杂工作流程。该库建立在 LangChain 和 LangGraph 之上,利用成熟的 LLM、工具、内存存储和调试实用程序生态系统。开发人员保留对智能体交互和状态共享的明确控制,确保可靠性,但仍能利用 LLM 的灵活性来决定何时调用工具或委托给另一个智能体。

推荐阅读

1. DeepSeek-R1的顿悟时刻是如何出现的? 背后的数学原理
2. 微调 DeepSeek LLM:使用监督微调(SFT)与 Hugging Face 数据
3. 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT
4. DeepSeek R1:了解GRPO和多阶段训练
5. 深度探索:DeepSeek-R1 如何从零开始训练
6. DeepSeek 发布 Janus Pro 7B 多模态模型,免费又强大!