介绍
单个Agent通常可以在单个域内使用少量工具有效地运行,但即使是使用像 gpt-4 这样强大的模型,它在使用许多工具时也可能效率较低。
处理复杂任务的一种方法是通过“分而治之”的方法:为每个任务或域创建一个专门的Agent,并将任务route给正确的“专家”。
这篇论文(受到论文:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation 的启发)展示了使用 LangGraph 实现此目的的一种方法。
生成的图表将类似于下图:

在我们开始之前,请快速注意:本论文和其他Multi-Agent笔记旨在展示如何在LangGraph中实现某些设计模式。如果该模式适合您的需求,我们建议将其与文档中其他地方描述的一些其他基本模式相结合,以获得最佳性能。
# pip install -U langchain langchain_openai langsmith pandas langchain_experimental matplotlib langgraph langchain_core
import getpass
import os
def _set_if_undefined(var: str):
if not os.environ.get(var):
os.environ[var] = getpass.getpass(f"Please provide your {
var}")
_set_if_undefined("OPENAI_API_KEY")
_set_if_undefined("LANGCHAIN_API_KEY")
_set_if_undefined("TAVILY_API_KEY")
# Optional, add tracing in LangSmith
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = "Multi-agent Collaboration"
创建Agent
以下辅助函数将帮助创建Agent。这些Agent将成为图中的节点。
如果您只想查看图表的外观,可以跳过。
from langchain_core.messages import (
BaseMessage,
HumanMessage,
ToolMessage,
)
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langgraph.graph import END, StateGraph
def create_agent(llm, tools, system_message: str):
"""Create an agent."""
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"你是一个乐于助人的人工智能助手,与其他助手合作。使用提供的工具逐步回答问题。"
"如果你不能完全回答,那没关系,另一个助手用不同的工具将帮助你完成任务。尽你所能取得进展。"
"如果你或任何其他助理有最终答案或可交付成果,在你的回答前面加上'FINAL ANSWER',这样团队就知道该停下来了。"
"你有权访问以下工具:{tool_names}。\n{system_message}",
),
MessagesPlaceholder(variable_name="messages"),



被折叠的 条评论
为什么被折叠?



