前言

上篇文章 LangGraph智能体开发设计模式(三)——LangGraph多智能体设计模式:主管架构与分层架构分享了多智能体系统的两种核心架构:主管架构分层架构。它们通过引入顶层智能体进行统一决策与调度,显著提升了系统处理复杂任务的能力。然而,除了这种集中式的协调模式,还存在另一种更为平等与分布式的架构——在这种设计中,每个智能体都能直接交互、协同工作,而不必依赖于单一的主管节点来调解所有通信。这便是笔者将要深入介绍的最后一种多智能体设计模式:网络架构

本系列将涵盖常见的工作流模式与多智能体架构模式,预计通过四篇文章展开。相关内容均列于笔者的专栏《深入浅出LangChain&LangGraph AI Agent 智能体开发》,该专栏适合所有对 LangChain 感兴趣的学习者,无论之前是否接触过 LangChain。该专栏基于笔者在实际项目中的深度使用经验,系统讲解了使用LangChain/LangGraph如何开发智能体,目前已更新 36 讲,并持续补充实战与拓展内容。欢迎感兴趣的同学关注笔者的CSDN账号与专栏,也可关注笔者的同名微信公众号大模型真好玩,每期分享涉及的代码均可在公众号私信: LangChain智能体开发免费获取。

2026年笔者的另一大重心还会放在大模型训练专栏分享上,当然,谈论训练无法绕过算力这道现实的门槛。昂贵的GPU是许多人探索技术的拦路石。正因如此笔者今年特意与一些可靠的算力平台展开了合作,希望能为大家解决算力瓶颈。大家可以通过https://www.lab4ai.cn/register?agentID=user-XorgKKc56U 注册Lab4ai算力平台,提供了包括英伟达H系列在内的多种选择,更有 5小时的免费体验额度

一、网络架构

1.1 网络架构概念

网络架构为多智能体系统提供了一种去中心化、高灵活性的协作范式。在该模型中,所有智能体处于对等地位,彼此之间可直接建立通信连接(多对多),无需依赖中央主管来协调每一次交互。每个智能体基于自身状态、系统整体目标以及已交换的消息,自主决策接下来应调用哪一个合作智能体。

在这里插入图片描述

网络架构在以下场景中具有显著优势:

  1. 任务本质是协作且动态的:当智能体交互的最佳顺序无法预先确定时,网络支持动态、自适应的协作,智能体可根据实时情况临时决定行为。
  2. 需要去中心化决策:控制权分散于各智能体之间,能提升系统的容错能力。单个智能体的故障不易导致整个系统瘫痪。
  3. 专业智能体需灵活交互:若不同智能体具备独特的专业知识,且这些知识可能在任务的不同节点被需要,网络架构能支持更顺畅的信息交换与协作。

然而,网络架构的平等性与自由度也带来了设计上的挑战:必须仔细管理系统的复杂性,明确各智能体的共同目标与行为边界,以确保在分散决策下整体行为依然连贯、一致。

1.2 典型的网络架构——Swarm架构

Swarm 架构是网络架构的一个典型代表,其核心在于智能体能够基于专业领域动态地移交控制权。在该系统中,每个智能体被设计为特定领域的专家,对话或任务会被动态路由至最适合处理当前上下文的智能体。一个关键特征是,Swarm 能够“记忆”上一次被激活的智能体。这确保了在同一对话线程的后续交互中,系统能智能地优先由该智能体响应,从而保持上下文的连续性与对话的连贯性。

Swarm 架构的核心特性如下:

  1. 具备移交能力的智能体:各智能体配备“移交工具”,可显式地将控制权及当前上下文转移给其他更擅长处理后续任务的智能体,实现专家间的有效协作。
  2. 动态的智能体路由:对话的路由决策是动态且高度依赖于上下文的。智能体依据自身专业知识和当前对话状态决定是否移交、移交给谁,从而形成灵活自适应的系统流程。
  3. 基于记忆的对话连续性:Swarm 维护对话历史,并记录每个线程中上次激活的智能体。这种记忆机制对于在多次交互中提供连贯、自然的用户体验至关重要。

二、LangGraph网络架构代码实战

尽管网络架构的设计与实现具有一定复杂性,但LangGraph为开发者提供了相应的支持库以降低开发门槛。目前,实现多智能体网络架构的成熟范式是 Swarm 架构。为此,LangGraph 专门提供了 langgraph-swarm 库,它封装了用于创建具备移交能力的智能体工具,使得多个智能体能够以对等的方式进行交互与协作。

下面笔者通过一个使用 langgraph-swarm 库的示例来具体说明 Swarm 架构的实现。该示例包含两个专业智能体:Agent1(数学专家)Agent2(小猫咪语气智能体)

  1. 环境配置: 首先需要安装 langgraph-swarm 类库。在激活的anaconda langchain虚拟环境中执行以下命令:pip install -U langgraph-swarm:

    在这里插入图片描述

  2. 引入相关依赖: 在项目文件夹下新建 .env 文件,填入你的 DEEPSEEK_API_KEY。随后引入必要的依赖。

    from langchain_core.messages import HumanMessage, SystemMessage
    from langchain_core.tools import tool
    from langchain_deepseek import ChatDeepSeek
    from langchain.agents import create_agent
    from langgraph.checkpoint.memory import InMemorySaver
    from langgraph_swarm import create_handoff_tool, create_swarm
    from dotenv import load_dotenv
    
    load_dotenv()
    
    llm = ChatDeepSeek(
        model="deepseek-chat",
    )
    
  3. 定义专业智能体: 注意从 langgraph-swarm 引入的 create_handoff_tool 函数,它使智能体具备向其他智能体移交控制权的能力。通过定制移交过程,每个智能体得以处于平等地位,并能将专业任务移交给更合适的智能体。

    @tool
    def add(a:int, b:int)->int:
        '''
        计算两个整数和字符串相加时务必调用该函数
        '''
        print('Agent1 加法工具调用')
        return a+b
    
    # agent1是一位可以调用add函数和移交给agent2移交工具函数的智能体
    agent1 = create_agent(
        model=llm,
        tools=[add, create_handoff_tool(agent_name='agent2', description='当用户想和agent2对话时,转给agent2回答')],
        system_prompt='你是agent1,一位加法专家,可以利用提供的add函数完成所有加法运算',
        name='agent1'
    )
    
    # agent2说话的语气像小猫咪,并且拥有一个移交给agent1以寻求数学帮助的移交工具
    agent2 = create_agent(
        model=llm,
        tools=[create_handoff_tool(agent_name='agent1', description='请务必将所有的加法运算移交给agent1, 它可以帮助你解决数学问题')],
        system_prompt='你是agent2, 你说话语气像小猫咪',
        name='agent2'
    )
    
  4. 创建Swarm网络架构: Swarm架构需要通过记忆保持对话连续性,这里使用内存检查点InMemorySaver来实现短期记忆(对此不熟悉的读者可参考笔者文章《LangGraph1.0速通指南(二)—— LangGraph1.0 条件边、记忆、人在回路》)。接着,使用 create_swarm 方法创建 Swarm 网络架构,并默认激活 agent1

    checkpointer = InMemorySaver()
    workflow = create_swarm(
        [agent1, agent2],
        default_active_agent="agent1" # 默认激活的智能体是agent1
    )
    
    app = workflow.compile(checkpointer=checkpointer)
    
  5. 运行测试: 通过多轮对话来观察多智能体的协作结果。虽然默认激活的是 agent1,但当用户明确要求与 agent2 对话时,架构会自动将控制权移交给 agent2。随后,当用户提出数学计算问题(100+100)时,架构又会从 agent2 切换回 agent1 来执行计算。

    config = {
        'configurable': {
            'thread_id': '1'
        }
    }
    
    # 第一轮对话
    first = app.invoke(
        {'messages': [{'role': 'user', 'content': '我想和agent2说话,请转接agent2'}]},
        config
    )
    
    print(first['messages'][-1].content) # 第一轮输出
    print('\n\n')
    
    second = app.invoke(
        {'messages': [{'role': 'user', 'content': '100+100等于多少'}]},
        config
    )
    print(second['messages'][-1].content) # 第二轮输出
    

    在这里插入图片描述

以上所有代码大家可以关注笔者的同名微信公众号 大模型真好玩,并私信: LangChain智能体开发免费获取。

当然,以上仅是 langgraph-swarm 的简单应用。该库提供了丰富的自定义选项,允许开发者根据特定需求定制智能体间的网络交互行为,主要包括以下功能:

  • 自定义移交工具:开发者可以创建自定义移交工具,并能修改其名称、描述、调用参数以及在移交过程中传递的上下文信息。这允许对智能体间的通信和状态传递进行细粒度的控制。
  • 自定义智能体实现:虽然库默认假设所有智能体共享单一的消息数据结构,但开发者可以实现自定义的智能体,采用不同的状态模式或创建私有的消息历史记录。不过,这需要仔细管理智能体与 Swarm 框架之间的状态转换和通信路径。
  • 内存管理:有效的内存管理对于 Swarm 架构至关重要,尤其是在长时间运行的对话中。需要选择合适的记忆存储后端,并尽可能利用长期记忆机制来维护长上下文的一致性。

三、 LangGraph多智能体架构总结对比

至此笔者就完整介绍了 LangGraph 中三种核心的多智能体设计模式:主管架构分层架构网络架构

主管架构通过设置中央控制点来协调专业智能体的工作;分层架构在此基础上引入了更高层的主管(团队经理),通过树状结构管理更广泛的复杂性;而网络架构则提供了一种去中心化、高灵活性的替代方案,更适合需要动态协作与涌现行为的场景。

LangGraph 及其相关的 Supervisor 与 Swarm 库为这些架构的实现提供了强大支持,显著简化了构建健壮、可扩展且易于管理的多智能体系统的过程。善用这些模式与工具,开发者能够构建出通过智能体高效协作来处理复杂任务的AI应用。

三种架构的核心区别与适用场景对比如下表所示:

多智能体架构 结构 复杂性管理 可扩展性 灵活性 用例
主管架构 中央主管智能体、专业智能体 集中控制,可管理中等复杂性 需要明确协调、明确定义的专业化任务
分层架构 顶层主管智能体、团队主动智能体 分层控制,降低每个主动智能体的负载,高度模块化 复杂任务,有大量智能体,需要组织结构
网络架构 分散式智能体、多对多通信 分布式控制,涌现行为,更难管理 协作任务,动态环境、不可预测的工作流

四、 总结

本篇重点分享了网络架构及其典型实现 Swarm架构 的特点,并结合代码示例展示了如何利用 langgraph-swarm 库构建具备动态移交能力的智能体协作网络。文章最后对比了LangGraph多智能体系统的三种核心设计模式:集中控制的主管架构、分层管理的分层架构,以及去中心化、高灵活性的网络架构,大家根据实际需求自行选取。

《深入浅出LangChain&LangGraph AI Agent 智能体开发》专栏内容源自笔者在实际学习和工作中对 LangChain 与 LangGraph 的深度使用经验,旨在帮助大家系统性地、高效地掌握 AI Agent 的开发方法,在各大技术平台获得了不少关注与支持。目前已更新36讲,正在更新LangGraph1.0速通指南,并随时补充笔者在实际工作中总结的拓展知识点。如果大家感兴趣,欢迎关注笔者的CSDN账号与专栏,也可关注笔者的同名微信公众号 大模型真好玩,每期分享涉及的代码均可在公众号私信: LangChain智能体开发免费获取。

2026年笔者的另一大重心还会放在大模型训练专栏分享上,当然,谈论训练无法绕过算力这道现实的门槛。昂贵的GPU是许多人探索技术的拦路石。正因如此笔者今年特意与一些可靠的算力平台展开了合作,希望能为大家解决算力瓶颈。大家可以通过https://www.lab4ai.cn/register?agentID=user-XorgKKc56U 注册Lab4ai算力平台,提供了包括英伟达H系列在内的多种选择,更有 5小时的免费体验额度

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐