你可以组合不同的模式创建复杂的工作流:
// 1. 创建研究Agent(并行执行)
ReactAgent webResearchAgent = ReactAgent.builder()
.name("web_research")
.model(chatModel)
.description("从互联网搜索信息")
.instruction("请搜索并收集关于以下主题的信息:{input}")
.outputKey("web_data")
.build();
ReactAgent dbResearchAgent = ReactAgent.builder()
.name("db_research")
.model(chatModel)
.description("从数据库查询信息")
.instruction("请从数据库中查询并收集关于以下主题的信息:{input}")
.outputKey("db_data")
.build();
ParallelAgent researchAgent = ParallelAgent.builder()
.name("parallel_research")
.description("并行收集多个数据源的信息")
.subAgents(List.of(webResearchAgent, dbResearchAgent))
.mergeOutputKey("research_data")
.build();
// 2. 创建分析Agent
ReactAgent analysisAgent = ReactAgent.builder()
.name("analysis_agent")
.model(chatModel)
.description("分析研究数据")
.instruction("请分析以下收集到的数据并提供见解:{research_data}")
.outputKey("analysis_result")
.build();
// 3. 创建报告Agent(路由选择格式)
ReactAgent pdfReportAgent = ReactAgent.builder()
.name("pdf_report")
.model(chatModel)
.description("生成PDF格式报告")
.instruction("""
请根据研究结果和分析结果生成一份PDF格式的报告。
研究结果:{research_data}
分析结果:{analysis_result}
""")
.outputKey("pdf_report")
.build();
ReactAgent htmlReportAgent = ReactAgent.builder()
.name("html_report")
.model(chatModel)
.description("生成HTML格式报告")
.instruction("""
请根据研究结果和分析结果生成一份HTML格式的报告。
研究结果:{research_data}
分析结果:{analysis_result}
""")
.outputKey("html_report")
.build();
LlmRoutingAgent reportAgent = LlmRoutingAgent.builder()
.name("report_router")
.description("根据需求选择报告格式")
.model(chatModel)
.subAgents(List.of(pdfReportAgent, htmlReportAgent))
.build();
// 4. 组合成顺序工作流
SequentialAgent hybridWorkflow = SequentialAgent.builder()
.name("research_workflow")
.description("完整的研究工作流:并行收集 -> 分析 -> 路由生成报告")
.subAgents(List.of(researchAgent, analysisAgent, reportAgent))
.build();
// 使用
Optional<OverAllState> result = hybridWorkflow.invoke("研究AI技术趋势并生成HTML报告");
- Agents – Agent基础概念
- Tools – 工具的创建和使用
- Hooks – Hook机制
- Memory – 状态和记忆管理
本文整理自 Spring AI Alibaba 官方文档《多智能体编排》:https://java2ai.com/docs/frameworks/agent-framework/advanced/multi-agent

AI项目博客






