// 执行 Graph(Supervisor -> Coder)
public void executeGraphWithCoder(CompiledGraph graph) {
Map<String, Object> input = Map.of(
"messages", List.of(
Map.of("role", "user", "content", "1 + 1 的结果是多少?")
)
);
RunnableConfig config = RunnableConfig.builder()
.threadId("supervisor-coder-thread")
.build();
graph.stream(input, config)
.doOnNext(event -> System.out.println("节点: " + event.node() + ", 状态: " + event.state()))
.doOnError(error -> System.err.println("流错误: " + error.getMessage()))
.doOnComplete(() -> System.out.println("流完成"))
.blockLast();
}
// 执行 Graph(Supervisor -> Researcher)
public void executeGraphWithResearcher(CompiledGraph graph) {
Map<String, Object> input = Map.of(
"messages", List.of(
Map.of("role", "user", "content", "下一届冬奥会在哪里举行?")
)
);
RunnableConfig config = RunnableConfig.builder()
.threadId("supervisor-researcher-thread")
.build();
graph.stream(input, config)
.doOnNext(event -> System.out.println("节点: " + event.node() + ", 状态: " + event.state()))
.doOnError(error -> System.err.println("流错误: " + error.getMessage()))
.doOnComplete(() -> System.out.println("流完成"))
.blockLast();
}
- 监督者路由:监督者智能体根据用户请求决定将任务路由到哪个工作智能体
- 条件边:使用条件边实现动态路由
- 工具集成:工作智能体可以使用工具(如搜索工具、代码执行工具)来完成任务
- 状态管理:使用 messages 和 next 键来管理对话状态和路由决策
- 清晰的系统提示:为监督者智能体提供清晰的系统提示,确保它能正确路由任务
- 工具设计:为每个工作智能体设计合适的工具,使其能够高效完成任务
- 错误处理:在节点中添加适当的错误处理逻辑
- 状态规范化:实现路由结果的规范化逻辑,确保路由决策的一致性
通过多智能体监督者模式,您可以构建一个灵活且可扩展的多智能体系统,能够根据不同的任务类型自动路由到合适的智能体。
本文整理自 Spring AI Alibaba 官方文档《多智能体监督者模式》:https://java2ai.com/docs/frameworks/graph-core/examples/multi-agent-supervisor

AI项目博客






