说明: 原先的 Spring Boot 示例模块本示例使用 Spring AI Alibaba 的流式智能体(SequentialAgent、ParallelAgent、LoopAgent)与 AgentScopeAgent 子智能体及 AgentScope 的 DashScopeChatModel(agentscope-examples/multiagent-patterns/已在 2.0 包重构中移除。请以本文中的代码片段作为参考实现。其他可运行示例见agentscope-examples/documentation/。
Model)。各管道由基于 ReActAgent 的 AgentScopeAgent 构建,并通过 PipelineService 调用。
前置条件
- JDK 17+
- Maven 3.6+
- DashScope API Key:
export AI_DASHSCOPE_API_KEY=your-key或在application.yml中设置spring.ai.dashscope.api-key
模型配置
示例使用一个共用的Model Bean(DashScopeChatModel),供所有管道子智能体使用:
1. SequentialAgent:自然语言 → SQL → 得分
场景:用户用自然语言描述查询。管道(1)SQL 生成器将其转为 MySQL SQL,(2)SQL 评分器评估 SQL 与用户意图的匹配度(0–1)。子智能体按顺序执行,前一环节输出作为下一环节输入。 示例输入:「列出过去 30 天总金额大于 500 的所有订单。」实现
- SQL 生成器:
instruction("{input}")、outputKey("sql")— 接收用户输入,将生成的 SQL 写入状态键sql。 - SQL 评分器:
instruction("... {sql} ... {input} ...")、outputKey("score")— 接收上一步的sql与原始input,将得分写入状态键score。
2. ParallelAgent:多角度调研
场景:用户给出一个主题,管道从技术、金融/商业、市场/行业三个角度并行调研,结果合并为一份报告(research_report)。
示例输入:「调研大语言模型的当前发展状况。」(演示中使用「AI agents in enterprise software」。)
实现
- 每个子智能体使用
instruction("Research the following topic: {input}.")及各自的outputKey(tech_analysis、finance_analysis、market_analysis)。 - DefaultMergeStrategy 将子智能体输出合并为一份结果,写入 mergeOutputKey
research_report。
3. LoopAgent:SQL 迭代优化直到质量阈值
场景:从自然语言生成 SQL,并迭代优化直到质量得分超过 0.5。每次迭代执行内层 SequentialAgent:SQL 生成器 → SQL 评分器。循环直到得分 > 0.5 或达到最大迭代次数。 示例输入:「找出 2024 年下单超过 3 次的客户。」实现
LoopPipelineConfig 中构建的 SQL 生成器与 SQL 评分器 AgentScopeAgent 与 SequentialPipelineConfig 相同(相同 prompt、instruction、outputKey)。然后将它们包在一个 SequentialAgent 中,再包在带条件循环策略的 LoopAgent 中:
- LoopAgent 包装一个 SequentialAgent(
sql_agent),每次迭代执行 SQL 生成器再执行 SQL 评分器。 - loopStrategy:
LoopMode.condition(...)— 接收上一轮消息,读取最后一条(评分器输出),解析为数字;当 score > 0.5 时返回true结束循环。
调用管道:PipelineService
PipelineService 注入三个管道智能体,对外提供 runSequential、runParallel、runLoop。每个方法传入字符串输入并返回对应的结果记录。
服务实现片段(如何从状态中读取结果):
可选演示运行器
当pipeline.runner.enabled=true 时,PipelineCommandRunner 在启动时为每个管道运行一次演示(固定示例输入并输出日志):