尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Spring AI Alibaba Graph智能工作流-顺序执行

Spring AI Alibaba Graph智能工作流-顺序执行
📅 发布时间:2026/7/23 17:05:31

1、官方文档

Graph 工作流编排指南 | Spring AI Alibaba

Spring AI Alibaba Graph 可以改变您构建智能代理的思维方式。使用 Graph 构建代理时,您将首先把它分解为称为**节点(nodes)的离散步骤。然后,描述每个节点的不同决策和转换。最后,通过一个共享的状态(state)**将节点连接起来,每个节点都可以读取和写入该状态。在本教程中,我们将指导您完成使用 Spring AI Alibaba Graph 构建客服邮件处理代理的思维过程。

2、多个Agent顺序执行

核心组件:SequentialAgent(框架内置顺序流水线) 底层基于 Graph 状态机OverAllState,列表顺序 = Agent 执行顺序数据传递机制:outputKey+ 指令内{key}占位符自动渲染

核心概念

  • ReactAgent:最小可编排智能体单元(支持工具调用 ReAct)
  • SequentialAgent:顺序编排容器
    • subAgents(List<A,B,C>):严格按 A→B→C 串行
    • 全局状态OverAllState保存所有中间结果
  • outputKey:每个 Agent 输出存入 State 的 key
  • 占位符语法
    • {input}:用户原始输入
    • {自定义key}:读取前面 Agent 输出

3、代码

固定流水线:摘要 → 翻译 → 润色

依赖

<dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-agent-framework</artifactId> </dependency>

配置类

package com.ybw.config; import com.alibaba.cloud.ai.graph.agent.ReactAgent; import com.alibaba.cloud.ai.graph.agent.flow.agent.SequentialAgent; import org.springframework.ai.chat.model.ChatModel; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; @Configuration public class SequentialAgentConfig { // ChatModel 由配置自动注入(DashScope/Ollama均可) @Bean public SequentialAgent textPipelineAgent(ChatModel chatModel) { // Agent1:文本摘要 ReactAgent summaryAgent = ReactAgent.builder() .name("summary_agent") .model(chatModel) .outputKey("summary_text") // 输出存入state键名 .instruction("你是文本摘要专家,将下面内容精简为100字摘要:{input}") .build(); // Agent2:中文→英文翻译(读取上一步 summary_text) ReactAgent translateAgent = ReactAgent.builder() .name("translate_agent") .model(chatModel) .outputKey("en_text") .instruction("将下面中文翻译成地道英文,只返回译文:{summary_text}") .build(); // Agent3:英文润色(读取翻译结果 en_text) ReactAgent polishAgent = ReactAgent.builder() .name("polish_agent") .model(chatModel) .outputKey("final_result") .instruction("润色这段英文,优化语句流畅度:{en_text}") .build(); // ========== 顺序编排核心 ========== // List顺序 = 执行顺序:summary → translate → polish return SequentialAgent.builder() .name("text_sequential_pipeline") .subAgents(List.of(summaryAgent, translateAgent, polishAgent)) .build(); } }

执行链路:用户输入→ summary_agent → state ["summary_text"] → translate_agent 读取{summary_text}→ state ["en_text"] → polish_agent 读取{en_text}→ state["final_result"]

测试

package com.ybw.agent; import com.alibaba.cloud.ai.graph.OverAllState; import com.alibaba.cloud.ai.graph.agent.flow.agent.SequentialAgent; import com.alibaba.cloud.ai.graph.exception.GraphRunnerException; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Optional; /** * @author ybw * @version V1.0 * @className SequentialAgentTest * @date 2026/7/22 **/ @SpringBootTest @Slf4j public class SequentialAgentTest { @Resource private SequentialAgent pipelineAgent; @Test public void runPipeline() throws GraphRunnerException { String userInput = "小松鼠的冬天礼物\n" + "秋风一吹,森林里的树叶就变成了金灿灿的颜色。小松鼠果果忙着收集松果,为即将到来的冬天做准备。它每天早早起床,蹦蹦跳跳地穿梭在林间,把饱满的松果藏进树洞里,不出几天,树洞就堆满了沉甸甸的粮食。\n" + "这天下午,果果路过小兔子的胡萝卜地,看见小兔子正蹲在地上叹气。原来秋风太急,把小兔子储存的胡萝卜叶子全都吹枯了,冬天的食物少了一大半。果果看着难过的小兔子,摸了摸自己满满的树洞,心里悄悄软了下来。\n" + "第二天一早,果果背着小布口袋,装了满满一袋松果送到小兔子家。小兔子又惊讶又感动,连忙摆手推辞:“这是你过冬的粮食,我不能要!”果果笑着摇摇尾巴:“我藏的松果很多,足够我吃一整个冬天啦,我们要一起分享呀!”\n" + "之后的日子里,果果又把松果分给了没有存够粮食的小刺猬和小麻雀。慢慢的,自己的树洞空了大半,果果心里却暖暖的。\n" + "寒冷的冬天如约而至,大雪覆盖了整片森林。就在果果担心食物不够时,小伙伴们纷纷来到它的家门口。小兔子带来了甜甜的胡萝卜,小刺猬带来了酸甜的野果,小麻雀衔来了饱满的草籽。\n" + "大家围坐在果果的树洞里,吃着美食,聊着趣事,温暖的笑声填满了小小的树洞。果果终于明白,真正的快乐不是独自拥有满满一堆粮食,而是真诚分享、互帮互助。这个冬天,因为善意与陪伴,一点都不寒冷。"; // 启动顺序执行 Optional<OverAllState> stateOpt = pipelineAgent.invoke(userInput); if (stateOpt.isEmpty()) { log.info("stateOpt为空"); return; } OverAllState state = stateOpt.get(); // 获取最后一个Agent输出 String finalResult = state.value("final_result") .map(Object::toString) .orElse("无结果"); log.info("finalResult:{}", finalResult); } }

相关新闻

  • 连锁回收品牌实力PK|绍兴奢侈品回收优质门店盘点,6家持证机构回款速度与估价方式横评 - 商业资讯新知
  • 基因编辑载体伯远生物基因编辑载体
  • 实测 Doubao-Seed-Evolving:把 Windows 桌面图标做成一个会自己运转的小世界

最新新闻

  • 静态路由综合练习
  • 2026北京名包“非专柜渠道”回收警示:代购包、奥莱款、折扣村货,回收时被区别对待吗? - 日常财经早知道
  • 如何使用Windows OVERLAPPED优化你的应用
  • 计算机Django毕设实战-基于Django 的物流物资配送信息管理系统 企业物资出入库与配送调度系统设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 华为网络计算机ct2000,第八集[达特分享]华为CT5000一键刷BIOS安装OpenWRT制作软路由...
  • Elastic 与 Deductive AI 携手合作,加速工程团队的 agent 式事件调查

日新闻

  • 亨得利盐城维修点在哪里?手表维修保养地址指南**公示(2026年7月最新) - 亨得利官方
  • 提升.NET API安全性:Boxed.AspNetCore.Swagger认证授权最佳实践
  • 帝舵佛山**网点地址更新:2026年7月售后热线电话与服务客户指南 - 帝舵中国官方服务中心

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号