说明: 原先的 Spring Boot 示例模块在 Supervisor 模式中,一个中心监督者(主智能体)通过工具调用专职智能体进行协调。监督者接收用户请求,决定调用哪些专家(如日历、邮件),并将结果综合成一条回复。专职智能体从用户视角看是无状态的;监督者维护对话,将一次性任务委托给专家。在 AgentScope 中通过 Agent as Tool(agent-as-tool.md)实现:agentscope-examples/multiagent-patterns/已在 2.0 包重构中移除。请以本文中的代码片段作为参考实现。其他可运行示例见agentscope-examples/documentation/。
Toolkit.registration().subAgent()。
概述
核心特点:- 集中控制:所有请求先到监督者;通过工具调用分发给专家。
- 每专家一个工具:每个专职智能体注册为一个工具(如
schedule_event、manage_email),名称与描述清晰,便于监督者决定何时调用。 - 专家不直接面向用户:专家在限定上下文(instruction + 请求字符串)中运行,将结果返回监督者;仅监督者的回复呈现给用户。
- 专家无状态:每次调用新建子智能体实例(或使用全新上下文);对话状态由监督者持有。
架构
- Supervisor:一个 ReActAgent,其 Toolkit 通过 Toolkit.registration().subAgent(provider) 注册各专家。工具以
schedule_event、manage_email出现,输入为单字符串(该领域的用户请求)。 - 日历智能体:ReActAgent,带日历相关提示与工具(如
get_available_time_slots、create_calendar_event)。以工具 schedule_event 暴露。 - 邮件智能体:ReActAgent,带邮件相关提示与工具(如
send_email)。以工具 manage_email 暴露。
CalendarStubTools、EmailStubTools);生产环境可替换为真实集成。
实现
- 模型:所有智能体共用同一 DashScopeChatModel(或其它 AgentScope
Model);API Key 来自spring.ai.dashscope.api-key或AI_DASHSCOPE_API_KEY。 - 专家智能体:为每个领域构建一个 ReActAgent(日历、邮件),各有 sysPrompt 与 Toolkit(桩或真实工具)。在监督者的 Toolkit 中注册:
toolkit.registration().subAgent(() -> calendarAgent).apply(),邮件同理。可选使用 SubAgentConfig 设置toolName与description。 - 监督者:用同一模型与包含 subAgent 注册的 Toolkit 构建 ReActAgent。监督者系统提示中应说明何时使用
schedule_event与manage_email。 - 调用:注入监督者 ReActAgent,调用
supervisorAgent.call(userMsg).block()。对于跨领域请求(如「安排会议并发邮件」),监督者会调用多个工具并合并结果。
示例项目
- 主要类:
SupervisorConfig(model、calendarAgent、emailAgent、supervisorAgent),CalendarStubTools,EmailStubTools,SupervisorRunner(可选演示)。 - 演示:设置
supervisor.run-examples=true可在启动时运行两个场景:(1) 单领域:「明天上午 9 点安排团队站会」;(2) 多领域:「下周二下午 2 点与设计团队开 1 小时会,并给他们发邮件提醒查看新原型」。
@Qualifier("supervisorAgent")),传入用户 Msg 调用;用 getTextContent() 获取回复文本。
相关文档
- Agent as Tool - 子智能体注册与 SubAgentConfig
- Subagents - 使用 Task/TaskOutput 与 Markdown/API 子智能体的编排
- Pipeline - 顺序与并行智能体组合