概述
监督者模式是一种多智能体架构,其中中央监督者智能体协调专门的工作者智能体。当任务需要不同类型的专业知识时,这种方法表现出色。与其构建一个管理跨领域工具选择的智能体,不如创建由理解整体工作流的监督者协调的专注专家。 在本教程中,你将构建一个个人助手系统,通过一个真实的工作流来展示这些优势。该系统将协调两个职责根本不同的专家:- 一个日历智能体,处理日程安排、可用性检查和事件管理。
- 一个电子邮件智能体,管理通信、起草消息和发送通知。
为什么使用监督者?
多智能体架构允许你将工具分配给工作者,每个工作者都有自己的独立提示或指令。考虑一个直接访问所有日历和电子邮件API的智能体:它必须从许多相似的工具中选择,理解每个API的确切格式,并同时处理多个领域。如果性能下降,将相关工具和关联提示分离到逻辑组中可能会有所帮助(部分是为了管理迭代改进)。概念
我们将涵盖以下概念:设置
安装
本教程需要langchain 包:
pip install langchain
LangSmith
设置 LangSmith 以检查你的智能体内部发生的情况。然后设置以下环境变量:export LANGSMITH_TRACING="true"
export LANGSMITH_API_KEY="..."
组件
我们需要从LangChain的集成套件中选择一个聊天模型:- OpenAI
- Anthropic
- Azure
- Google Gemini
- AWS Bedrock
- HuggingFace
- OpenRouter
👉 阅读 OpenAI 聊天模型集成文档
pip install -U "langchain[openai]"
import os
from langchain.chat_models import init_chat_model
os.environ["OPENAI_API_KEY"] = "sk-..."
model = init_chat_model("gpt-5.4")
👉 阅读 Anthropic 聊天模型集成文档
pip install -U "langchain[anthropic]"
import os
from langchain.chat_models import init_chat_model
os.environ["ANTHROPIC_API_KEY"] = "sk-..."
model = init_chat_model("claude-sonnet-4-6")
👉 阅读 Azure 聊天模型集成文档
pip install -U "langchain[openai]"
import os
from langchain.chat_models import init_chat_model
os.environ["AZURE_OPENAI_API_KEY"] = "..."
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["OPENAI_API_VERSION"] = "2025-03-01-preview"
model = init_chat_model(
"azure_openai:gpt-5.4",
azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
)
👉 阅读 Google GenAI 聊天模型集成文档
pip install -U "langchain[google-genai]"
import os
from langchain.chat_models import init_chat_model
os.environ["GOOGLE_API_KEY"] = "..."
model = init_chat_model("google_genai:gemini-2.5-flash-lite")
👉 阅读 AWS Bedrock 聊天模型集成文档
pip install -U "langchain[aws]"
from langchain.chat_models import init_chat_model
# 按照此处步骤配置您的凭证:
# https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started.html
model = init_chat_model(
"anthropic.claude-3-5-sonnet-20240620-v1:0",
model_provider="bedrock_converse",
)
👉 阅读 HuggingFace 聊天模型集成文档
pip install -U "langchain[huggingface]"
import os
from langchain.chat_models import init_chat_model
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "hf_..."
model = init_chat_model(
"microsoft/Phi-3-mini-4k-instruct",
model_provider="huggingface",
temperature=0.7,
max_tokens=1024,
)
👉 阅读 OpenRouter 聊天模型集成文档
pip install -U "langchain-openrouter"
import os
from langchain.chat_models import init_chat_model
os.environ["OPENROUTER_API_KEY"] = "sk-..."
model = init_chat_model(
"auto",
model_provider="openrouter",
)
1. 定义工具
首先定义需要结构化输入的工具。在实际应用中,这些工具会调用真实的API(Google Calendar、SendGrid等)。在本教程中,你将使用存根来演示该模式。from langchain.tools import tool
@tool
def create_calendar_event(
title: str,
start_time: str, # ISO格式:"2024-01-15T14:00:00"
end_time: str, # ISO格式:"2024-01-15T15:00:00"
attendees: list[str], # 电子邮件地址
location: str = ""
) -> str:
"""创建日历事件。需要精确的ISO日期时间格式。"""
# 存根:在实践中,这将调用Google Calendar API、Outlook API等。
return f"事件已创建:{title},从 {start_time} 到 {end_time},有 {len(attendees)} 位参与者"
@tool
def send_email(
to: list[str], # 电子邮件地址
subject: str,
body: str,
cc: list[str] = []
) -> str:
"""通过电子邮件API发送电子邮件。需要格式正确的地址。"""
# 存根:在实践中,这将调用SendGrid、Gmail API等。
return f"电子邮件已发送至 {', '.join(to)} - 主题:{subject}"
@tool
def get_available_time_slots(
attendees: list[str],
date: str, # ISO格式:"2024-01-15"
duration_minutes: int
) -> list[str]:
"""检查给定参与者在特定日期的日历可用性。"""
# 存根:在实践中,这将查询日历API
return ["09:00", "14:00", "16:00"]
2. 创建专门的子代理
接下来,我们将创建处理每个领域的专门子代理。创建日历智能体
日历智能体理解自然语言日程安排请求,并将其转换为精确的API调用。它处理日期解析、可用性检查和事件创建。from langchain.agents import create_agent
CALENDAR_AGENT_PROMPT = (
"你是一个日历安排助手。"
"将自然语言日程安排请求(例如,'下周二下午2点')"
"解析为正确的ISO日期时间格式。"
"需要时使用 get_available_time_slots 检查可用性。"
"如果没有合适的时间段,请停止并在你的响应中确认不可用。"
"使用 create_calendar_event 安排事件。"
"始终在你的最终响应中确认已安排的内容。"
)
calendar_agent = create_agent(
model,
tools=[create_calendar_event, get_available_time_slots],
system_prompt=CALENDAR_AGENT_PROMPT,
)
query = "安排一个团队会议,下周二下午2点,持续1小时"
for step in calendar_agent.stream(
{"messages": [{"role": "user", "content": query}]}
):
for update in step.values():
for message in update.get("messages", []):
message.pretty_print()
================================== Ai Message ==================================
Tool Calls:
get_available_time_slots (call_EIeoeIi1hE2VmwZSfHStGmXp)
Call ID: call_EIeoeIi1hE2VmwZSfHStGmXp
Args:
attendees: []
date: 2024-06-18
duration_minutes: 60
================================= Tool Message =================================
Name: get_available_time_slots
["09:00", "14:00", "16:00"]
================================== Ai Message ==================================
Tool Calls:
create_calendar_event (call_zgx3iJA66Ut0W8S3NpT93kEB)
Call ID: call_zgx3iJA66Ut0W8S3NpT93kEB
Args:
title: Team Meeting
start_time: 2024-06-18T14:00:00
end_time: 2024-06-18T15:00:00
attendees: []
================================= Tool Message =================================
Name: create_calendar_event
Event created: Team Meeting from 2024-06-18T14:00:00 to 2024-06-18T15:00:00 with 0 attendees
================================== Ai Message ==================================
团队会议已安排在下周二,6月18日,下午2:00,持续1小时。如果您需要添加参与者或地点,请告诉我!
create_calendar_event,并返回自然语言确认。
创建电子邮件智能体
电子邮件智能体处理消息撰写和发送。它专注于提取收件人信息、撰写合适的主题行和正文文本,以及管理电子邮件通信。EMAIL_AGENT_PROMPT = (
"你是一个电子邮件助手。"
"根据自然语言请求撰写专业电子邮件。"
"提取收件人信息并撰写合适的主题行和正文文本。"
"使用 send_email 发送消息。"
"始终在你的最终响应中确认已发送的内容。"
)
email_agent = create_agent(
model,
tools=[send_email],
system_prompt=EMAIL_AGENT_PROMPT,
)
query = "给设计团队发送一封提醒邮件,让他们审查新的模型"
for step in email_agent.stream(
{"messages": [{"role": "user", "content": query}]}
):
for update in step.values():
for message in update.get("messages", []):
message.pretty_print()
================================== Ai Message ==================================
Tool Calls:
send_email (call_OMl51FziTVY6CRZvzYfjYOZr)
Call ID: call_OMl51FziTVY6CRZvzYfjYOZr
Args:
to: ['design-team@example.com']
subject: Reminder: Please Review the New Mockups
body: Hi Design Team,
This is a friendly reminder to review the new mockups at your earliest convenience. Your feedback is important to ensure that we stay on track with our project timeline.
Please let me know if you have any questions or need additional information.
Thank you!
Best regards,
================================= Tool Message =================================
Name: send_email
Email sent to design-team@example.com - Subject: Reminder: Please Review the New Mockups
================================== Ai Message ==================================
我已向设计团队发送了一封提醒邮件,要求他们审查新的模型。如果您需要就此主题进行进一步沟通,请告诉我!
send_email,并返回确认。每个子代理都有一个狭窄的关注点,配备特定领域的工具和提示,使其能够在其特定任务上表现出色。
3. 将子代理包装为工具
现在将每个子代理包装为监督者可以调用的工具。这是创建分层系统的关键架构步骤。监督者将看到像“schedule_event”这样的高级工具,而不是像“create_calendar_event”这样的低级工具。@tool
def schedule_event(request: str) -> str:
"""使用自然语言安排日历事件。
当用户想要创建、修改或检查日历预约时使用此工具。
处理日期/时间解析、可用性检查和事件创建。
输入:自然语言日程安排请求(例如,'与设计团队开会,下周二下午2点')
"""
result = calendar_agent.invoke({
"messages": [{"role": "user", "content": request}]
})
return result["messages"][-1].text
@tool
def manage_email(request: str) -> str:
"""使用自然语言发送电子邮件。
当用户想要发送通知、提醒或任何电子邮件通信时使用此工具。
处理收件人提取、主题生成和电子邮件撰写。
输入:自然语言电子邮件请求(例如,'给他们发送一封关于会议的提醒邮件')
"""
result = email_agent.invoke({
"messages": [{"role": "user", "content": request}]
})
return result["messages"][-1].text
4. 创建监督者智能体
现在创建协调子代理的监督者。监督者只看到高级工具,并在领域级别(而非单个API级别)做出路由决策。SUPERVISOR_PROMPT = (
"你是一个乐于助人的个人助手。"
"你可以安排日历事件和发送电子邮件。"
"将用户请求分解为适当的工具调用并协调结果。"
"当一个请求涉及多个操作时,按顺序使用多个工具。"
)
supervisor_agent = create_agent(
model,
tools=[schedule_event, manage_email],
system_prompt=SUPERVISOR_PROMPT,
)
5. 使用监督者
现在使用需要跨多个领域协调的复杂请求来测试你的完整系统:示例1:简单的单领域请求
query = "安排一个团队站会,明天上午9点"
for step in supervisor_agent.stream(
{"messages": [{"role": "user", "content": query}]}
):
for update in step.values():
for message in update.get("messages", []):
message.pretty_print()
================================== Ai Message ==================================
Tool Calls:
schedule_event (call_mXFJJDU8bKZadNUZPaag8Lct)
Call ID: call_mXFJJDU8bKZadNUZPaag8Lct
Args:
request: Schedule a team standup for tomorrow at 9am with Alice and Bob.
================================= Tool Message =================================
Name: schedule_event
The team standup has been scheduled for tomorrow at 9:00 AM with Alice and Bob. If you need to make any changes or add more details, just let me know!
================================== Ai Message ==================================
与Alice和Bob的团队站会已安排在明天上午9:00。如果您需要任何进一步的安排或调整,请告诉我!
schedule_event,日历智能体处理日期解析和事件创建。
要全面了解信息流,包括每次聊天模型调用的提示和响应,请查看上述运行的 LangSmith 跟踪。
示例2:复杂的多领域请求
query = (
"安排一个与设计团队的会议,下周二下午2点,持续1小时,"
"并给他们发送一封提醒邮件,让他们审查新的模型。"
)
for step in supervisor_agent.stream(
{"messages": [{"role": "user", "content": query}]}
):
for update in step.values():
for message in update.get("messages", []):
message.pretty_print()
================================== Ai Message ==================================
Tool Calls:
schedule_event (call_YA68mqF0koZItCFPx0kGQfZi)
Call ID: call_YA68mqF0koZItCFPx0kGQfZi
Args:
request: meeting with the design team next Tuesday at 2pm for 1 hour
manage_email (call_XxqcJBvVIuKuRK794ZIzlLxx)
Call ID: call_XxqcJBvVIuKuRK794ZIzlLxx
Args:
request: send the design team an email reminder about reviewing the new mockups
================================= Tool Message =================================
Name: schedule_event
Your meeting with the design team is scheduled for next Tuesday, June 18th, from 2:00pm to 3:00pm. Let me know if you need to add more details or make any changes!
================================= Tool Message =================================
Name: manage_email
I've sent an email reminder to the design team requesting them to review the new mockups. If you need to include more information or recipients, just let me know!
================================== Ai Message ==================================
您与设计团队的会议已安排在下周二,6月18日,从下午2:00到3:00。
我还向设计团队发送了一封提醒邮件,要求他们审查新的模型。
如果您想为会议添加更多详情或在电子邮件中包含更多信息,请告诉我!
schedule_event,然后为提醒调用 manage_email。每个子代理完成其任务,监督者将两个结果综合成一个连贯的响应。
请参阅 LangSmith 跟踪 以查看上述运行的详细信息流,包括各个聊天模型的提示和响应。
完整的工作示例
以下是所有内容组合在一起的可运行脚本:Show 查看完整代码
Show 查看完整代码
"""
个人助手监督者示例
此示例演示了多智能体系统的工具调用模式。
一个监督者智能体协调专门的子代理(日历和电子邮件),
这些子代理被包装为工具。
"""
from langchain.tools import tool
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
# ============================================================================
# 步骤1:定义低级API工具(存根)
# ============================================================================
@tool
def create_calendar_event(
title: str,
start_time: str, # ISO格式:"2024-01-15T14:00:00"
end_time: str, # ISO格式:"2024-01-15T15:00:00"
attendees: list[str], # 电子邮件地址
location: str = ""
) -> str:
"""创建日历事件。需要精确的ISO日期时间格式。"""
return f"事件已创建:{title},从 {start_time} 到 {end_time},有 {len(attendees)} 位参与者"
@tool
def send_email(
to: list[str], # 电子邮件地址
subject: str,
body: str,
cc: list[str] = []
) -> str:
"""通过电子邮件API发送电子邮件。需要格式正确的地址。"""
return f"电子邮件已发送至 {', '.join(to)} - 主题:{subject}"
@tool
def get_available_time_slots(
attendees: list[str],
date: str, # ISO格式:"2024-01-15"
duration_minutes: int
) -> list[str]:
"""检查给定参与者在特定日期的日历可用性。"""
return ["09:00", "14:00", "16:00"]
# ============================================================================
# 步骤2:创建专门的子代理
# ============================================================================
model = init_chat_model("gpt-5.4") # 例如
calendar_agent = create_agent(
model,
tools=[create_calendar_event, get_available_time_slots],
system_prompt=(
"你是一个日历安排助手。"
"将自然语言日程安排请求(例如,'下周二下午2点')"
"解析为正确的ISO日期时间格式。"
"需要时使用 get_available_time_slots 检查可用性。"
"如果没有合适的时间段,请停止并在你的响应中确认不可用。"
"使用 create_calendar_event 安排事件。"
"始终在你的最终响应中确认已安排的内容。"
)
)
email_agent = create_agent(
model,
tools=[send_email],
system_prompt=(
"你是一个电子邮件助手。"
"根据自然语言请求撰写专业电子邮件。"
"提取收件人信息并撰写合适的主题行和正文文本。"
"使用 send_email 发送消息。"
"始终在你的最终响应中确认已发送的内容。"
)
)
# ============================================================================
# 步骤3:将子代理包装为监督者的工具
# ============================================================================
@tool
def schedule_event(request: str) -> str:
"""使用自然语言安排日历事件。
当用户想要创建、修改或检查日历预约时使用此工具。
处理日期/时间解析、可用性检查和事件创建。
输入:自然语言日程安排请求(例如,'与设计团队开会,下周二下午2点')
"""
result = calendar_agent.invoke({
"messages": [{"role": "user", "content": request}]
})
return result["messages"][-1].text
@tool
def manage_email(request: str) -> str:
"""使用自然语言发送电子邮件。
当用户想要发送通知、提醒或任何电子邮件通信时使用此工具。
处理收件人提取、主题生成和电子邮件撰写。
输入:自然语言电子邮件请求(例如,'给他们发送一封关于会议的提醒邮件')
"""
result = email_agent.invoke({
"messages": [{"role": "user", "content": request}]
})
return result["messages"][-1].text
# ============================================================================
# 步骤4:创建监督者智能体
# ============================================================================
supervisor_agent = create_agent(
model,
tools=[schedule_event, manage_email],
system_prompt=(
"你是一个乐于助人的个人助手。"
"你可以安排日历事件和发送电子邮件。"
"将用户请求分解为适当的工具调用并协调结果。"
"当一个请求涉及多个操作时,按顺序使用多个工具。"
)
)
# ============================================================================
# 步骤5:使用监督者
# ============================================================================
if __name__ == "__main__":
# 示例:需要日历和电子邮件协调的用户请求
user_request = (
"安排一个与设计团队的会议,下周二下午2点,持续1小时,"
"并给他们发送一封提醒邮件,让他们审查新的模型。"
)
print("用户请求:", user_request)
print("\n" + "="*80 + "\n")
for step in supervisor_agent.stream(
{"messages": [{"role": "user", "content": user_request}]}
):
for update in step.values():
for message in update.get("messages", []):
message.pretty_print()
理解架构
你的系统有三层。底层包含需要精确格式的严格API工具。中间层包含接受自然语言、将其转换为结构化API调用并返回自然语言确认的子代理。顶层包含监督者,它路由到高级功能并综合结果。 这种关注点分离提供了几个好处:每一层都有明确的职责,你可以添加新领域而不影响现有领域,并且你可以独立测试和迭代每一层。6. 添加人在环中审查
将敏感操作纳入人在环中审查可能是谨慎的。LangChain包含内置中间件来审查工具调用,在本例中是子代理调用的工具。 让我们为两个子代理都添加人在环中审查:- 我们配置
create_calendar_event和send_email工具以中断,允许所有响应类型(approve、edit、reject) - 我们仅在顶层智能体添加检查点。这是暂停和恢复执行所必需的。
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langgraph.checkpoint.memory import InMemorySaver
calendar_agent = create_agent(
model,
tools=[create_calendar_event, get_available_time_slots],
system_prompt=CALENDAR_AGENT_PROMPT,
middleware=[
HumanInTheLoopMiddleware(
interrupt_on={"create_calendar_event": True},
description_prefix="日历事件待批准",
),
],
)
email_agent = create_agent(
model,
tools=[send_email],
system_prompt=EMAIL_AGENT_PROMPT,
middleware=[
HumanInTheLoopMiddleware(
interrupt_on={"send_email": True},
description_prefix="外发电子邮件待批准",
),
],
)
supervisor_agent = create_agent(
model,
tools=[schedule_event, manage_email],
system_prompt=SUPERVISOR_PROMPT,
checkpointer=InMemorySaver(),
)
query = (
"安排一个与设计团队的会议,下周二下午2点,持续1小时,"
"并给他们发送一封提醒邮件,让他们审查新的模型。"
)
config = {"configurable": {"thread_id": "6"}}
interrupts = []
for step in supervisor_agent.stream(
{"messages": [{"role": "user", "content": query}]},
config,
):
for update in step.values():
if isinstance(update, dict):
for message in update.get("messages", []):
message.pretty_print()
else:
interrupt_ = update[0]
interrupts.append(interrupt_)
print(f"\n已中断:{interrupt_.id}")
================================== Ai Message ==================================
Tool Calls:
schedule_event (call_t4Wyn32ohaShpEZKuzZbl83z)
Call ID: call_t4Wyn32ohaShpEZKuzZbl83z
Args:
request: Schedule a meeting with the design team next Tuesday at 2pm for 1 hour.
manage_email (call_JWj4vDJ5VMnvkySymhCBm4IR)
Call ID: call_JWj4vDJ5VMnvkySymhCBm4IR
Args:
request: Send an email reminder to the design team about reviewing the new mockups before our meeting next Tuesday at 2pm.
已中断:4f994c9721682a292af303ec1a46abb7
已中断:2b56f299be313ad8bc689eff02973f16
for interrupt_ in interrupts:
for request in interrupt_.value["action_requests"]:
print(f"已中断:{interrupt_.id}")
print(f"{request['description']}\n")
已中断:4f994c9721682a292af303ec1a46abb7
日历事件待批准
工具:create_calendar_event
参数:{'title': '与设计团队的会议', 'start_time': '2024-06-18T14:00:00', 'end_time': '2024-06-18T15:00:00', 'attendees': ['design team']}
已中断:2b56f299be313ad8bc689eff02973f16
外发电子邮件待批准
工具:send_email
参数:{'to': ['designteam@example.com'], 'subject': '提醒:在下周二下午2点的会议前审查新模型', 'body': "Hello Team,\n\nThis is a reminder to review the new mockups ahead of our meeting scheduled for next Tuesday at 2pm. Your feedback and insights will be valuable for our discussion and next steps.\n\nPlease ensure you've gone through the designs and are ready to share your thoughts during the meeting.\n\nThank you!\n\nBest regards,\n[Your Name]"}
Command 引用其ID来为每个中断指定决策。有关更多详细信息,请参阅人在环中指南。为演示目的,这里我们将批准日历事件,但编辑外发电子邮件的主题:
from langgraph.types import Command
resume = {}
for interrupt_ in interrupts:
if interrupt_.id == "2b56f299be313ad8bc689eff02973f16":
# 编辑电子邮件
edited_action = interrupt_.value["action_requests"][0].copy()
edited_action["args"]["subject"] = "模型提醒"
resume[interrupt_.id] = {
"decisions": [{"type": "edit", "edited_action": edited_action}]
}
else:
resume[interrupt_.id] = {"decisions": [{"type": "approve"}]}
interrupts = []
for step in supervisor_agent.stream(
Command(resume=resume),
config,
):
for update in step.values():
if isinstance(update, dict):
for message in update.get("messages", []):
message.pretty_print()
else:
interrupt_ = update[0]
interrupts.append(interrupt_)
print(f"\n已中断:{interrupt_.id}")
================================= Tool Message =================================
Name: schedule_event
Your meeting with the design team has been scheduled for next Tuesday, June 18th, from 2:00 pm to 3:00 pm.
================================= Tool Message =================================
Name: manage_email
Your email reminder to the design team has been sent. Here’s what was sent:
- Recipient: designteam@example.com
- Subject: Mockups reminder
- Body: A reminder to review the new mockups before the meeting next Tuesday at 2pm, with a request for feedback and readiness for discussion.
Let me know if you need any further assistance!
================================== Ai Message ==================================
- 您与设计团队的会议已安排在下周二,6月18日,从下午2:00到3:00。
- 已向设计团队发送了一封提醒邮件,要求他们在会议前审查新的模型。
如果您需要任何进一步的帮助,请告诉我!
7. 高级:控制信息流
默认情况下,子代理只接收来自监督者的请求字符串。你可能希望传递额外的上下文,例如对话历史或用户偏好。向子代理传递额外的对话上下文
from langchain.tools import tool, ToolRuntime
@tool
def schedule_event(
request: str,
runtime: ToolRuntime
) -> str:
"""使用自然语言安排日历事件。"""
# 自定义子代理接收的上下文
original_user_message = next(
message for message in runtime.state["messages"]
if message.type == "human"
)
prompt = (
"你正在协助处理以下用户查询:\n\n"
f"{original_user_message.text}\n\n"
"你被分配了以下子任务:\n\n"
f"{request}"
)
result = calendar_agent.invoke({
"messages": [{"role": "user", "content": prompt}],
})
return result["messages"][-1].text
你可以在LangSmith跟踪的聊天模型调用中查看子代理接收的完整上下文。
控制监督者接收的内容
你还可以自定义流回监督者的信息:import json
@tool
def schedule_event(request: str) -> str:
"""使用自然语言安排日历事件。"""
result = calendar_agent.invoke({
"messages": [{"role": "user", "content": request}]
})
# 选项1:仅返回确认消息
return result["messages"][-1].text
# 选项2:返回结构化数据
# return json.dumps({
# "status": "success",
# "event_id": "evt_123",
# "summary": result["messages"][-1].text
# })
8. 关键要点
监督者模式创建了抽象层,每一层都有明确的职责。在设计监督者系统时,从清晰的领域边界开始,为每个子代理提供专注的工具和提示。为监督者编写清晰的工具描述,在集成前独立测试每一层,并根据你的具体需求控制信息流。何时使用监督者模式当你有多个不同的领域(日历、电子邮件、CRM、数据库),每个领域有多个工具或复杂逻辑,你想要集中式工作流控制,并且子代理不需要直接与用户对话时,使用监督者模式。对于只有几个工具的更简单情况,使用单个智能体。当智能体需要与用户对话时,使用交接。对于智能体之间的点对点协作,考虑其他多智能体模式。
后续步骤
了解用于智能体间对话的交接,探索上下文工程以微调信息流,阅读多智能体概述以比较不同模式,并使用 LangSmith 调试和监控你的多智能体系统。将这些文档通过MCP连接到Claude、VSCode等,以获取实时答案。

