LangGraph 多智能体群集是一种 Python 库,用于创建基于 LangGraph 的多智能体系统。这种系统允许智能体根据其专业化动态地将控制权交给彼此,并记住最后活跃的智能体,以便在后续交互中继续对话。
基础概念
- 多智能体协作:不同智能体可以合作并将上下文传递给彼此。可定制的交接工具:内置工具用于智能体之间的通信。
安装和快速开始
- 安装库:
pip install langgraph-swarm langchain-openai
设置 OpenAI API:export OPENAI_API_KEY=
创建智能体:from langchain_openai import ChatOpenAIfrom langgraph.checkpoint.memory import InMemorySaverfrom langgraph.prebuilt import create_react_agentfrom langgraph_swarm import create_handoff_tool, create_swarmmodel = ChatOpenAI(model="gpt-4o")def add(a: int, b: int) -> int: return a + balice = 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)
内存管理
- 短期内存:使用
InMemorySaver
来维持对话状态。长期内存:使用 InMemoryStore
来存储历史数据。自定义
自定义交接工具:
from langchain_core.tools import tool, BaseToolfrom langchain_core.messages import ToolMessagefrom langgraph.types import Commanddef create_custom_handoff_tool(*, agent_name: str, tool_name: str, tool_description: str) -> BaseTool: @tool(name=tool_name, description=tool_description) def handoff_to_agent(task_description: str, state: dict, tool_call_id: str): tool_message = ToolMessage( content=f"Successfully transferred to {agent_name}", name=tool_name, tool_call_id=tool_call_id, ) return Command( goto=agent_name, graph=Command.PARENT, update={ "messages": [state["messages"][-1], tool_message], "active_agent": agent_name, "task_description": task_description, }, ) return handoff_to_agent
自定义智能体实现:
from langchain_core.messages import AnyMessagefrom langgraph.graph import StateGraphclass AliceState: alice_messages: list[AnyMessage]alice = ( StateGraph(AliceState) .add_node("model", ...) .add_node("tools", ...) .add_edge(...) .compile())def call_alice(state): response = alice.invoke({"alice_messages": state["messages"]}) return {"messages": response["alice_messages"]}workflow = ( StateGraph() .add_node("Alice", call_alice, destinations=("Bob",)) .add_node("Bob", call_bob, destinations=("Alice",)))workflow = add_active_agent_router(workflow, route_to=["Alice", "Bob"], default_active_agent="Alice")app = workflow.compile()
总结
LangGraph 多智能体群集提供了一个灵活的框架,用于创建多智能体系统。通过自定义交接工具和智能体实现,可以满足不同应用场景的需求。同时,内存管理对于维持对话状态至关重要。