跳到主要内容
AgentScope Java 与 Spring AI Alibaba Workflow 集成指南 | 极客日志
Java AI java
AgentScope Java 与 Spring AI Alibaba Workflow 集成指南 AgentScope Java 与 Spring AI Alibaba Workflow 集成方案涵盖核心思路、工程配置、代码实现与最佳实践。通过复用 DashScope 客户端统一大模型调用,将 Spring AI Workflow 封装为 AgentScope 可调用的工具,并实现对齐异步模型、上下文数据及异常处理。提供 Maven 依赖整合、YAML 配置模板、医疗病历分析场景的代码示例(Workflow 定义、工具封装、ReAct 智能体集成、API 入口),以及可观测性集成建议,确保二者在 Spring 生态中稳定协同。
佛系玩家 发布于 2026/2/10 更新于 2026/7/26 58 浏览AgentScope Java 与 Spring AI Alibaba Workflow 集成指南
结合 agentscope-ai/agentscope-java、alibaba/spring-ai-alibaba 及 java2ai 生态中 Graph Core 工作流规范,以下是可落地的集成方案,涵盖核心思路、工程配置、代码实现、最佳实践四部分,兼顾 AgentScope 智能体特性与 Spring AI 工作流的工程化能力。
一、核心集成思路
1. 能力边界划分(关键前提)
框架/组件 核心职责 AgentScope Java 智能体(Agent)生命周期管理、多智能体协作、工具调用、上下文(Context)管理 Spring AI Alibaba 阿里云大模型(通义千问/百炼)标准化调用、Workflow 声明式编排、Spring 生态适配 Java2AI Graph Core 工作流节点标准化定义、执行引擎适配、可视化编排规范(参考)
2. 集成核心逻辑
以'AgentScope 为智能体核心 + Spring AI Alibaba 为工作流引擎'为核心,通过三层适配实现能力融合:
模型层复用 :AgentScope 复用 Spring AI Alibaba 的 DashScope 客户端,统一大模型调用;
工作流层封装 :将 Spring AI Alibaba Workflow 封装为 AgentScope 可调用的'工具/服务';
执行层适配 :对齐异步模型(Reactor/CompletableFuture)、生命周期(Spring/AgentScope)、上下文数据格式。
二、前置工程配置
1. 依赖整合(Maven pom.xml)
需兼容 JDK 17+、Spring Boot 3.2+,核心依赖如下(版本以官方最新为准):
<parent >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-parent</artifactId >
<version > 3.2.5</version >
<relativePath />
</parent >
<dependencies >
com.alibaba
spring-ai-alibaba-dashscope-spring-boot-starter
0.1.0
com.alibaba
spring-ai-alibaba-workflow-core
0.1.0
io.agentscope
agentscope-core
0.1.0
io.agentscope
agentscope-spring-boot-starter
0.1.0
com.java2ai
graph-core
1.0.0
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-validation
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
<version >
</version >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
</dependency >
<dependency >
<groupId >
</groupId >
<artifactId >
</artifactId >
</dependency >
</dependencies >
2. 配置文件(application.yml) 统一模型密钥、工作流引擎、AgentScope 配置:
spring:
ai:
dashscope:
api-key: ${DASHSCOPE_API_KEY:你的阿里云 API 密钥}
chat:
options:
model: qwen-turbo
temperature: 0.7
workflow:
executor:
thread-pool-size: 8
persistence:
enabled: true
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
java2ai:
graph:
core:
node-package: com.yourpackage.agent.workflow.node
三、核心代码实现
步骤 1:定义 Spring AI Alibaba Workflow 模板 参考 Java2AI Graph Core 节点规范,定义标准化的 AI 工作流(以医疗场景'病历分析'为例):
package com.yourpackage.workflow;
import com.alibaba.spring.ai.workflow.annotation.Workflow;
import com.alibaba.spring.ai.workflow.annotation.WorkflowNode;
import com.alibaba.spring.ai.workflow.executor.WorkflowContext;
import org.springframework.ai.dashscope.DashScopeChatClient;
import org.springframework.stereotype.Component;
@Workflow(name = "medical-record-analysis", description = "医疗病历分析工作流")
@Component
public class MedicalRecordAnalysisWorkflow {
private final DashScopeChatClient dashScopeChatClient;
public MedicalRecordAnalysisWorkflow (DashScopeChatClient dashScopeChatClient) {
this .dashScopeChatClient = dashScopeChatClient;
}
@WorkflowNode(name = "extract-info", order = 1, requiredParams = "medicalRecord")
public String extractMedicalInfo (WorkflowContext context) {
String medicalRecord = context.getParam("medicalRecord" , String.class);
String prompt = """
提取以下病历的关键信息(患者姓名、症状、检查结果、诊断结论):%s
要求:结构化输出,简洁明了
""" .formatted(medicalRecord);
return dashScopeChatClient.call(prompt).getResult().getOutput().getContent();
}
@WorkflowNode(name = "validate-data", order = 2, dependOn = "extract-info")
public String validateData (WorkflowContext context) {
String extractedInfo = context.getResult("extract-info" , String.class);
boolean isComplete = extractedInfo.contains("检查结果" ) && extractedInfo.contains("诊断结论" );
return isComplete ? "数据完整" : "缺少检查结果/诊断结论,数据不完整" ;
}
@WorkflowNode(name = "generate-report", order = 3, dependOn = "validate-data")
public String generateReport (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 工具规范:
package com.yourpackage.agent.tool;
import io.agentscope.core.tool.Tool;
import io.agentscope.core.tool.ToolParam;
import com.alibaba.spring.ai.workflow.executor.WorkflowExecutor;
import com.alibaba.spring.ai.workflow.model.WorkflowExecutionResult;
import org.springframework.stereotype.Component;
@Component
@Tool(name = "medical_record_workflow_tool", description = "执行医疗病历分析工作流")
public class MedicalRecordWorkflowTool {
private final WorkflowExecutor workflowExecutor;
public MedicalRecordWorkflowTool (WorkflowExecutor workflowExecutor) {
this .workflowExecutor = workflowExecutor;
}
public String execute (@ToolParam(name = "medicalRecord", description = "待分析的病历文本", required = true) String medicalRecord) {
WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis" ,
param -> param.put("medicalRecord" , medicalRecord));
return result.getNodeResult("generate-report" , String.class);
}
}
步骤 3:AgentScope 智能体集成 Workflow 工具 创建 ReAct 智能体,将 Workflow 工具注册到 Agent 中,实现'智能体决策 + 工作流执行':
package com.yourpackage.agent;
import io.agentscope.core.agent.ReActAgent;
import io.agentscope.core.model.dashscope.DashScopeChatModel;
import io.agentscope.core.tool.Toolkit;
import io.agentscope.spring.annotation.Agent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@Agent
public class MedicalAnalysisAgent {
@Autowired
private MedicalRecordWorkflowTool medicalRecordWorkflowTool;
@Autowired
private DashScopeChatModel dashScopeChatModel;
@Bean
public ReActAgent createMedicalAnalysisAgent () {
Toolkit toolkit = Toolkit.createDefault();
toolkit.registration().tool(medicalRecordWorkflowTool::execute).group("workflow_tools" ).apply();
return ReActAgent.builder()
.id("medical-analysis-agent" )
.name("MedicalAnalysisAgent" )
.model(dashScopeChatModel)
.toolkit(toolkit)
.sysPrompt("""
你是医疗病历分析智能体,用户输入病历文本后,必须调用「medical_record_workflow_tool」工具执行分析,
并返回最终的分析报告,禁止直接生成结果。
""" )
.build();
}
}
步骤 4:业务入口(API 调用示例) 通过 Spring Boot Web 暴露接口,实现'前端调用 → Agent 决策 → Workflow 执行 → 结果返回':
package com.yourpackage.controller;
import io.agentscope.core.agent.ReActAgent;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/agent")
public class MedicalAgentController {
private final ReActAgent medicalAnalysisAgent;
public MedicalAgentController (ReActAgent medicalAnalysisAgent) {
this .medicalAnalysisAgent = medicalAnalysisAgent;
}
@PostMapping("/analyze-medical-record")
public ResponseEntity<String> analyzeMedicalRecord (@RequestBody String medicalRecord) {
String response = medicalAnalysisAgent.chat("分析以下病历:" + medicalRecord).getTextContent();
return ResponseEntity.ok(response);
}
}
四、关键适配与最佳实践
1. 异步模型对齐(核心) AgentScope 基于 Reactor 异步编程,Spring AI Workflow 支持 CompletableFuture,需统一异步模型:
public CompletableFuture<String> executeAsync (String medicalRecord) {
return CompletableFuture.supplyAsync(() -> {
WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis" ,
param -> param.put("medicalRecord" , medicalRecord));
return result.getNodeResult("generate-report" , String.class);
});
}
toolkit.registration().tool(medicalRecordWorkflowTool::executeAsync).async(true ).apply();
2. 上下文数据互通 实现 AgentScope 智能体上下文与 Spring AI Workflow 上下文的双向同步:
public String execute (String medicalRecord, @RequestAttribute("agentContext") Map<String, Object> agentContext) {
WorkflowExecutionResult result = workflowExecutor.execute("medical-record-analysis" ,
param -> {
param.put("medicalRecord" , medicalRecord);
param.put("agentContext" , agentContext);
});
agentContext.put("workflowResult" , result.getNodeResult("generate-report" , String.class));
return result.getNodeResult("generate-report" , String.class);
}
3. 异常处理兜底 为 Workflow 执行添加异常捕获,确保 Agent 稳定性:
public String execute (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) {
return "病历分析失败:" + e.getMessage() + ",已触发人工审核流程" ;
}
}
4. 可观测性集成 复用 Spring Boot Actuator 监控 Workflow 与 Agent 状态:
management:
endpoints:
web:
exposure:
include: health, metrics, workflows, agents
metrics:
enable: true
endpoint:
workflows:
enabled: true
agents:
enabled: true
五、总结
核心集成要点
依赖层 :复用 Spring AI Alibaba 的 DashScope 客户端,避免重复配置模型密钥;
工具层 :将 Spring AI Workflow 封装为 AgentScope 标准工具,符合智能体调用规范;
执行层 :对齐异步模型、上下文数据、异常处理,确保二者协同稳定;
工程层 :复用 Spring 生态的可观测性、持久化、微服务能力,降低运维成本。
关键参考资源 相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online