一个用于利用 LangGraph 构建Swarm(蜂群式多智能体)系统的 Python 库。Swarm是一种多智能体架构,其中智能体会根据各自的专长动态地将控制权移交给其他智能体。该系统会记住最后一个处于活动状态的智能体,从而确保在后续交互中,对话能与该智能体继续进行。
Swarm 是一种受自然界蚁群、蜂群等生物群体行为启发的 多智能体协作设计范式。在自然界中,单只蚂蚁或蜜蜂的智能非常有限,但成千上万只聚集在一起时,却能完成极其复杂的任务——筑巢、觅食、防御。Swarm 蜂群式正是模仿了这种 "个体简单、群体智能" 的思想。
Agent Swarm (由AIJoe生成)
每个Agent仅依据局部环境信息和简单规则进行决策,通过信息素、消息广播或状态共享等方式间接通信,最终在整体层面涌现出复杂、高效的智能行为。
- 每只"蜜蜂"(Agent)负责采集特定区域的花蜜(子任务)
- 蜜蜂之间通过"舞蹈"(信息传递)告诉同伴哪里花多
- 没有一只蜜蜂知道全局计划,但整个蜂群高效完成了采蜜任务
- 即使几只蜜蜂迷路了,蜂群整体依然正常运转
pip install langgraph-swarm -i https://pypi.tuna.tsinghua.edu.cn/simple //0.1.0
from dotenv import dotenv_values
from langchain_openai import ChatOpenAI
from langgraph.checkpoint.memory import InMemorySaver
from langchain.agents import create_agent
from langgraph_swarm import create_handoff_tool, create_swarm
env_vars = dotenv_values('.env')
OPENAI_KEY = env_vars['OPENAI_API_KEY']
OPENAI_BASE_URL = env_vars['OPENAI_API_BASE']
llm = ChatOpenAI(model="gpt-4o-mini", api_key=OPENAI_KEY,base_url=OPENAI_BASE_URL)
def add(a: int, b: int) -> int:
"""Add two numbers"""
return a + b
alice = create_agent(
llm,
tools=[
add,
create_handoff_tool(
agent_name="Bob",
description="Transfer to Bob",
),
],
system_prompt="You are Alice, an addition expert.",
name="Alice",
)
bob = create_agent(
llm,
tools=[
create_handoff_tool(
agent_name="Alice",
description="Transfer to Alice, she can help with math",
),
],
system_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(11, turn_1)
turn_2 = app.invoke(
{"messages": [{"role": "user", "content": "what's 5 + 7?"}]},
config,
)
print(22, turn_2)