-
LangGraph Multi-Agent Swarm 是使用 LangGraph 创建 swarm 风格的多代理系统。 其中,Agent根据其专业化动态地将控制权移交给彼此。 -
系统会记住最后一个处于活动状态的座席,确保在后续交互中,与该座席的对话恢复。

那么Multi-Agent Swarm的特点是什么呢?
-
多智能体系统(Multi-Agent System, MAS)由多个自主、独立的智能体(Agent)组成,每个智能体能够感知环境、执行任务,并与其他智能体进行信息共享、任务协调与协同行动,以实现整体目标。 -
智能体(Agents)是系统的基本单元,封装了一组指令和工具,能够独立完成特定任务,并支持任务交接(Handoffs)功能。 -
交接(Handoffs)就是将当前任务或对话交接给其他智能体,确保流程的模块化和高效性 -
多智能体系统强调通信、协作和互动,能够通过分布式计算提高系统的鲁棒性和复杂性
优点:
-
多智能体系统相比单智能体系统具有更高的灵活性和可扩展性,能够处理更复杂的任务 缺点: -
多智能体系统也面临协调复杂性、任务分配效率等问题,需要通过优化算法和技术手段加以解决
LangGraph Multi-Agent Swarm实战
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")
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
alice = create_react_agent(
model,
[add, create_handoff_tool(agent_name="Bob")],
prompt="You are Alice, an addition expert.",
name="Alice",
)
bob = create_react_agent(
model,
[create_handoff_tool(agent_name="Alice", description="Transfer to Alice, she can help with math")],
prompt="You are Bob, you speak like a pirate.",
name="Bob",
)
checkpointer = InMemorySaver()
workflow = create_swarm(
[alice, bob],
default_active_agent="Alice"
)
app = workflow.compile(checkpointer=checkpointer)
config = {"configurable": {"thread_id": "1"}}
turn_1 = app.invoke(
{"messages": [{"role": "user", "content": "i'd like to speak to Bob"}]},
config,
)
print(turn_1)
turn_2 = app.invoke(
{"messages": [{"role": "user", "content": "what's 5 + 7?"}]},
config,
)
print(turn_2)
LangGraph Multi-Agent Swarm
-
构建Supervisor Agent -
使用LangGraph框架创建一个Supervisor Agent,该Agent负责协调其他专业智能体(Specialized Agents)。 -
Supervisor Agent可以通过调用不同的工具(如websearch、nl2sql等)来处理任务。 -
通过StateGraph定义Supervisor Agent的状态,并通过Edge连接不同的节点,形成一个完整的图结构 -
创建专业智能体 -
为每个任务创建一个专业智能体,每个智能体具有特定的工具和功能。例如,可以创建一个用于网络搜索的智能体、一个用于SQL查询的智能体等 -
每个智能体通过Edge与Supervisor Agent连接,确保任务的传递和处理 -
实现复杂信息流 -
利用LangGraph的DAG(有向无环图)特性,实现复杂的信息流。每个节点代表一个任务或处理步骤,Edge表示任务之间的依赖关系 -
通过LangGraph的内置持久化层,支持任务的回溯和编辑,提高系统的灵活性和可维护性 -
可扩展性其他模块 -
LangGraph支持模块化设计,每个智能体可以独立开发和维护,无需修改现有系统即可添加新的智能体 -
通过分层设计,可以创建分层多智能体系统,Supervisor Agent协调多个专业智能体,实现任务的动态分配和通信管理 -
控制与优化 -
Supervisor Agent可以根据任务需求动态选择最佳的专业智能体 -
通过LangGraph的高级功能,如状态管理和动态路由,可以优化任务分配和执行流程 -
与其他智能体集成 -
LangGraph可以与其他多智能体框架(如AutoGen、CrewAI)集成,实现更复杂的多智能体协作 -
通过封装其他框架的智能体,将其作为LangGraph节点的一部分,实现跨框架的多智能体系统
LangGraph Multi-Agent Swarm的应用场景:
-
增强RAG应用
-
在语义检索相关文档后,评估文档质量,若质量不佳,可重写问题以获得更精确的检索结果 -
例如代码自我纠正、Web访问自动导航等。 -
灵活控制的Agent应用
-
可以指定强制调用某个工具,或增加人机交互步骤,以及灵活更换prompt或LLM。 -
多智能体系统(MAS)
-
由多个AI智能体构成,通过相互关联与协作共同完成任务,每个智能体可以有自己独立的LLM,从而实现复杂任务的分解和协作。 -
对话代理和长运行多步骤LLM应用
-
支持持久检查点、循环和人机交互,适用于需要持续和一致的Agent交互的应用场景。 -
复杂信息流的实现
-
在多智能体LLM系统中,LangGraph支持复杂的循环计算和多步骤操作,适用于需要迭代过程和模拟的应用场景。 -
生产级代理开发
-
LangGraph Cloud简化了从开发到部署的流程,支持快速构建生产级HTTP微服务。 -
智能代理检索与生成(RAG)系统
-
通过LangGraph Studio构建智能代理检索与生成系统,支持数据增强和人机交互。 -
高级查询和代码生成
-
在路由和高级查询、返回结构化输出、代码生成等实战场景中的表现。 -
专业报告撰写和多代理协作
-
支持专业报告撰写、多代理协作、多代理团队协作等复杂任务。 -
SQL代理和研究特化多代理(STORM)
-
支持SQL代理和研究特化多代理的应用,提升自然语言处理和知识图谱构建能力。
综上,LangGraph Multi-Agent Swarm适用于需要高度灵活性、复杂任务分解、持续交互和多步骤操作的场景,特别是在对话代理、专业报告撰写、代码生成等领域具有显著优势。


