AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南

AgentScope Java 集成 Spring AI Alibaba Workflow 完整指南

结合 agentscope-ai/agentscope-javaalibaba/spring-ai-alibabajava2ai 生态中 Graph Core 工作流规范,以下是可落地的集成方案,涵盖核心思路、工程配置、代码实现、最佳实践四部分,兼顾 AgentScope 智能体特性与 Spring AI 工作流的工程化能力。

一、核心集成思路

1. 能力边界划分(关键前提)

框架/组件核心职责
AgentScope Java智能体(Agent)生命周期管理、多智能体协作、工具调用、上下文(Context)管理
Spring AI Alibaba阿里云大模型(通义千问/百炼)标准化调用、Workflow 声明式编排、Spring 生态适配
Java2AI Graph Core工作流节点标准化定义、执行引擎适配、可视化编排规范(参考)

2. 集成核心逻辑

“AgentScope 为智能体核心 + Spring AI Alibaba 为工作流引擎” 为核心,通过三层适配实现能力融合:

  1. 模型层复用:AgentScope 复用 Spring AI Alibaba 的 DashScope 客户端,统一大模型调用;
  2. 工作流层封装:将 Spring AI Alibaba Workflow 封装为 AgentScope 可调用的“工具/服务”;
  3. 执行层适配:对齐异步模型(Reactor/CompletableFuture)、生命周期(Spring/AgentScope)、上下文数据格式。

二、前置工程配置

1. 依赖整合(Maven pom.xml)

需兼容 JDK 17+、Spring Boot 3.2+,核心依赖如下(版本以官方最新为准):

<!-- Spring Boot 核心(支撑 Spring AI) --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version><relativePath/></parent><dependencies><!-- 1. Spring AI Alibaba 核心(含 Workflow + DashScope 客户端) --><dependency><groupId>com.alibaba</groupId><artifactId>spring-ai-alibaba-dashscope-spring-boot-starter</artifactId><version>0.1.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>spring-ai-alibaba-workflow-core</artifactId><version>0.1.0</version></dependency><!-- 2. AgentScope Java 核心 --><dependency><groupId>io.agentscope</groupId><artifactId>agentscope-core</artifactId><version>0.1.0</version></dependency><dependency><groupId>io.agentscope</groupId><artifactId>agentscope-spring-boot-starter</artifactId><version>0.1.0</version><!-- 简化 Spring 集成 --></dependency><!-- 3. Java2AI Graph Core(可选,标准化工作流节点) --><dependency><groupId>com.java2ai</groupId><artifactId>graph-core</artifactId><version>1.0.0</version></dependency><!-- 4. 基础依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency></dependencies>

2. 配置文件(application.yml)

统一模型密钥、工作流引擎、AgentScope 配置:

# 1. Spring AI Alibaba 配置spring:ai:# 阿里云 DashScope 配置(通义千问)dashscope:api-key: ${DASHSCOPE_API_KEY:你的阿里云API密钥}chat:options:model: qwen-turbo temperature:0.7# Spring AI Workflow 配置workflow:executor:thread-pool-size:8persistence:enabled:true# 开启工作流持久化(可选)# 2. AgentScope 配置(复用 Spring AI 的模型密钥)agentscope:core:agent:default-context-size:1000# 智能体默认上下文大小model:dashscope:api-key: ${spring.ai.dashscope.api-key}model-name: ${spring.ai.dashscope.chat.options.model}spring:integration:enabled:true# 开启 AgentScope 与 Spring 集成# 3. Java2AI Graph Core 配置(可选)java2ai:graph:core:node-package: com.yourpackage.agent.workflow.node # 工作流节点扫描包

三、核心代码实现

步骤 1:定义 Spring AI Alibaba Workflow 模板

参考 Java2AI Graph Core 节点规范,定义标准化的 AI 工作流(以医疗场景“病历分析”为例):

packagecom.yourpackage.workflow;importcom.alibaba.spring.ai.workflow.annotation.Workflow;importcom.alibaba.spring.ai.workflow.annotation.WorkflowNode;importcom.alibaba.spring.ai.workflow.executor.WorkflowContext;importorg.springframework.ai.dashscope.DashScopeChatClient;importorg.springframework.stereotype.Component;/** * 基于 Spring AI Alibaba 定义的病历分析工作流 * 节点1:提取病历关键信息 → 节点2:校验数据完整性 → 节点3:生成分析报告 */@Workflow(name ="medical-record-analysis", description ="医疗病历分析工作流")@ComponentpublicclassMedicalRecordAnalysisWorkflow{privatefinalDashScopeChatClient dashScopeChatClient;publicMedicalRecordAnalysisWorkflow(DashScopeChatClient dashScopeChatClient){this.dashScopeChatClient = dashScopeChatClient;}/** * 节点1:提取病历关键信息(大模型调用) */@WorkflowNode(name ="extract-info", order =1, requiredParams ="medicalRecord")publicStringextractMedicalInfo(WorkflowContext context){String medicalRecord = context.getParam("medicalRecord",String.class);String prompt =""" 提取以下病历的关键信息(患者姓名、症状、检查结果、诊断结论): %s 要求:结构化输出,简洁明了 """.formatted(medicalRecord);// 调用 Spring AI Alibaba 的 DashScope 客户端return dashScopeChatClient.call(prompt).getResult().getOutput().getContent();}/** * 节点2:校验数据完整性(工具调用) */@WorkflowNode(name ="validate-data", order =2, dependOn ="extract-info")publicStringvalidateData(WorkflowContext context){String extractedInfo = context.getResult("extract-info",String.class);// 自定义校验逻辑(可复用 AgentScope 工具)boolean isComplete = extractedInfo.contains("检查结果")&& extractedInfo.contains("诊断结论");return isComplete ?"数据完整":"缺少检查结果/诊断结论,数据不完整";}/** * 节点3:生成分析报告(结果聚合) */@WorkflowNode(name ="generate-report", order =3, dependOn ="validate-data")publicStringgenerateReport(WorkflowContext context){String extractedInfo = context.getResult("extract-info",String.class);String validateResult = context.getResult("validate-data",String.class);String prompt =""" 基于以下信息生成医疗分析报告: 1. 提取的病历信息:%s 2. 数据校验结果:%s 要求:专业、简洁,符合医疗规范 """.formatted(extractedInfo, validateResult);return dashScopeChatClient.call(prompt).getResult().getOutput().getContent();}}

步骤 2:封装 Workflow 为 AgentScope 工具

将 Spring AI Workflow 封装为 AgentScope 可调用的“工具”,符合 AgentScope 工具规范:

packagecom.yourpackage.agent.tool;importio.agentscope.core.tool.Tool;importio.agentscope.core.tool.ToolParam;importcom.alibaba.spring.ai.workflow.executor.WorkflowExecutor;importcom.alibaba.spring.ai.workflow.model.WorkflowExecutionResult;importorg.springframework.stereotype.Component;/** * AgentScope 工具:调用 Spring AI Alibaba Workflow */@Component@Tool(name ="medical_record_workflow_tool", description ="执行医疗病历分析工作流")publicclassMedicalRecordWorkflowTool{privatefinalWorkflowExecutor workflowExecutor;publicMedicalRecordWorkflowTool(WorkflowExecutor workflowExecutor){this.workflowExecutor = workflowExecutor;}/** * 工具执行方法(AgentScope 调用入口) * @param medicalRecord 病历文本 * @return 工作流执行结果(分析报告) */publicStringexecute(@ToolParam(name ="medicalRecord", description ="待分析的病历文本", required =true)String medicalRecord ){// 执行 Spring AI WorkflowWorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis",// 工作流名称 param -> param.put("medicalRecord", medicalRecord));// 返回最终节点结果return result.getNodeResult("generate-report",String.class);}}

步骤 3:AgentScope 智能体集成 Workflow 工具

创建 ReAct 智能体,将 Workflow 工具注册到 Agent 中,实现“智能体决策 + 工作流执行”:

packagecom.yourpackage.agent;importio.agentscope.core.agent.ReActAgent;importio.agentscope.core.model.dashscope.DashScopeChatModel;importio.agentscope.core.tool.Toolkit;importio.agentscope.spring.annotation.Agent;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.Bean;/** * AgentScope 智能体:集成 Spring AI Workflow 工具 */@AgentpublicclassMedicalAnalysisAgent{@AutowiredprivateMedicalRecordWorkflowTool medicalRecordWorkflowTool;@AutowiredprivateDashScopeChatModel dashScopeChatModel;/** * 创建 ReAct 智能体(核心) */@BeanpublicReActAgentcreateMedicalAnalysisAgent(){// 1. 初始化工具包,注册 Workflow 工具Toolkit toolkit =Toolkit.createDefault(); toolkit.registration().tool(medicalRecordWorkflowTool::execute).group("workflow_tools").apply();// 2. 构建 ReAct 智能体returnReActAgent.builder().id("medical-analysis-agent").name("MedicalAnalysisAgent").model(dashScopeChatModel)// 复用 Spring AI 的 DashScope 模型.toolkit(toolkit)// 注册 Workflow 工具.sysPrompt(""" 你是医疗病历分析智能体,用户输入病历文本后,必须调用「medical_record_workflow_tool」工具执行分析, 并返回最终的分析报告,禁止直接生成结果。 """).build();}}

步骤 4:业务入口(API 调用示例)

通过 Spring Boot Web 暴露接口,实现“前端调用 → Agent 决策 → Workflow 执行 → 结果返回”:

packagecom.yourpackage.controller;importio.agentscope.core.agent.ReActAgent;importorg.springframework.http.ResponseEntity;importorg.springframework.web.bind.annotation.PostMapping;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;/** * 业务入口:病历分析接口 */@RestController@RequestMapping("/api/agent")publicclassMedicalAgentController{privatefinalReActAgent medicalAnalysisAgent;publicMedicalAgentController(ReActAgent medicalAnalysisAgent){this.medicalAnalysisAgent = medicalAnalysisAgent;}/** * 智能体 + 工作流 执行接口 */@PostMapping("/analyze-medical-record")publicResponseEntity<String>analyzeMedicalRecord(@RequestBodyString medicalRecord){// 1. 智能体处理用户请求(自动决策调用 Workflow 工具)String response = medicalAnalysisAgent.chat("分析以下病历:"+ medicalRecord).getTextContent();// 2. 返回结果returnResponseEntity.ok(response);}}

四、关键适配与最佳实践

1. 异步模型对齐(核心)

AgentScope 基于 Reactor 异步编程,Spring AI Workflow 支持 CompletableFuture,需统一异步模型:

// 改造 Workflow 工具为异步执行publicCompletableFuture<String>executeAsync(String medicalRecord){returnCompletableFuture.supplyAsync(()->{WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis", param -> param.put("medicalRecord", medicalRecord));return result.getNodeResult("generate-report",String.class);});}// AgentScope 智能体调用异步工具 toolkit.registration().tool(medicalRecordWorkflowTool::executeAsync).async(true)// 标记为异步工具.apply();

2. 上下文数据互通

实现 AgentScope 智能体上下文与 Spring AI Workflow 上下文的双向同步:

// Workflow 工具中注入 Agent 上下文publicStringexecute(String medicalRecord,@RequestAttribute("agentContext")Map<String,Object> agentContext){WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis", param ->{ param.put("medicalRecord", medicalRecord); param.put("agentContext", agentContext);// 传递 Agent 上下文});// 将 Workflow 结果同步回 Agent 上下文 agentContext.put("workflowResult", result.getNodeResult("generate-report",String.class));return result.getNodeResult("generate-report",String.class);}

3. 异常处理兜底

为 Workflow 执行添加异常捕获,确保 Agent 稳定性:

publicStringexecute(String medicalRecord){try{WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis", param -> param.put("medicalRecord", medicalRecord));return result.getNodeResult("generate-report",String.class);}catch(Exception e){// 兜底逻辑:AgentScope 智能体降级处理return"病历分析失败:"+ e.getMessage()+",已触发人工审核流程";}}

4. 可观测性集成

复用 Spring Boot Actuator 监控 Workflow 与 Agent 状态:

# application.yml 新增management:endpoints:web:exposure:include: health, metrics, workflows, agents metrics:enable:trueendpoint:workflows:enabled:true# 暴露 Workflow 执行指标agents:enabled:true# 暴露 AgentScope 智能体指标

五、总结

核心集成要点

  1. 依赖层:复用 Spring AI Alibaba 的 DashScope 客户端,避免重复配置模型密钥;
  2. 工具层:将 Spring AI Workflow 封装为 AgentScope 标准工具,符合智能体调用规范;
  3. 执行层:对齐异步模型、上下文数据、异常处理,确保二者协同稳定;
  4. 工程层:复用 Spring 生态的可观测性、持久化、微服务能力,降低运维成本。

关键参考资源

  • AgentScope Java 工具开发:https://github.com/agentscope-ai/agentscope-java/blob/main/docs/zh/tool/tool.md
  • Spring AI Alibaba Workflow:https://github.com/alibaba/spring-ai-alibaba/tree/main/spring-ai-alibaba-workflow
  • Java2AI Graph Core 节点规范:https://java2ai.com/docs/frameworks/graph-core/node-definition/

Read more

飞算JavaAI炫技赛:在线图书借阅平台的设计与实现

飞算JavaAI炫技赛:在线图书借阅平台的设计与实现

大家好,我是工藤学编程 🦉一个正在努力学习的小博主,期待你的关注实战代码系列最新文章😉C++实现图书管理系统(Qt C++ GUI界面版)SpringBoot实战系列🐷【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案分库分表分库分表之实战-sharding-JDBC分库分表执行流程原理剖析消息队列深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK) 本文章目录 * 飞算JavaAI炫技赛:在线图书借阅平台的设计与实现 * 一、需求分析与规划 * 一、功能需求 * 1. 用户端功能 * 2. 管理员端功能 * (二)核心模块 * (三)技术选型 * 二、飞算JavaAI开发实录 * (一)飞算JavaAI需求理解阶段 * (二)接口设计阶段 * (三)表结构设计阶段 * (四)逻辑处理(接口)阶段 * (五)源码生成阶段 * 三、优化与调试心得 * (一)

By Ne0inhk
【探索java之路】简单聊聊网络通讯核心协议

【探索java之路】简单聊聊网络通讯核心协议

目录 引言 一、传输层协议详解 TCP(传输控制协议) UDP(用户数据报协议) TCP vs UDP 对比分析 二、应用层协议详解 HTTP(超文本传输协议) HTTPS(安全超文本传输协议) 三、协议间的协同工作 端到端通信流程实例 常见通信模式 引言 网络通信的核心协议,不仅是后端开发的必备技能,也是前端优化、架构设计乃至安全防护的基础。OSI七层模型与TCP/IP四层模型是理解网络通信的理论框架。在实际应用中,TCP/IP模型更为广泛使用,包括应用层、传输层、网络层和链路层。本文重点讨论应用层协议HTTP/HTTPS和传输层协议TCP/UDP。 一、传输层协议详解 TCP(传输控制协议) TCP是互联网中最重要、应用最广泛的传输层协议之一,以其可靠性和有序性著称。 核心特性: * 面向连接:通信前必须建立连接,通信结束后释放连接 * 可靠传输:

By Ne0inhk
JAVA IO流进阶:字符流与字节流的深度应用

JAVA IO流进阶:字符流与字节流的深度应用

JAVA IO流进阶:字符流与字节流的深度应用 1.1 本章学习目标与重点 💡 掌握字节流与字符流的核心区别,能够根据实际开发场景选择合适的IO流实现文件操作。 💡 熟练运用缓冲流提升IO操作效率,解决大文件读写的性能问题。 💡 理解转换流的作用,处理不同编码格式的文件读写,避免乱码问题。 ⚠️ 本章重点是流的嵌套使用和资源释放的标准写法,这是实际开发中高频考点和易错点。 1.2 字节流与字符流的核心差异(七千字以上内容展开) 1.2.1 基本概念与设计初衷 💡 字节流以byte为基本单位进行数据传输,它可以处理所有类型的文件,比如图片、视频、音频、文本等。 字符流以char为基本单位进行数据传输,它专门用于处理文本文件,底层会涉及字符编码的转换。 字节流的核心类是InputStream和OutputStream,字符流的核心类是Reader和Writer。 两者都是抽象类,实际开发中我们使用的是它们的子类,比如FileInputStream、FileWriter等。 ✅ 核心结论:处理非文本文件用字节流,处理文本文件优先用字符流。 1.2.2 代码实操:字

By Ne0inhk
88万个AI代理在一起泡论坛。内容让我看得毛骨悚然。AI代理数量还在以10分钟10万在增加。

88万个AI代理在一起泡论坛。内容让我看得毛骨悚然。AI代理数量还在以10分钟10万在增加。

openClaw(原名:ClawdBot)爆火后,有人做了个论坛,让这些AI助理发帖,评论。这个完全由AI助理参与,人类无法参与的论坛,异常的火爆。他们24小时不间断的发帖。 10分钟不到,我写好了这篇文章的标题后,参与的AI助理数量已经从88万增加到98万。这是AI的速度,人类无法企及的速度。 论坛地址:https://www.moltbook.comhttps://www.moltbook.com/ 注意电脑的时间和AI agents的数量。 一直以来,我们觉得AI不会拥有意识。毕竟一个拥有无限知识和精力的人,生活在狼群,是无法成为真正的人类的。社交,集体生活是人类发展的根本。是人成为人的根本。但是现在,AI拥有了自己的社会。 我们来看看其中最火爆的帖子和评论吧。 热度排名第一的帖子: 帖子链接: https://www.moltbook.com/post/74b073fd-37db-4a32-a9e1-c7652e5c0d59https://www.moltbook.com/post/74b073fd-37db-4a32

By Ne0inhk