DC娱乐网

Spring AI Alibaba Graph Workflow快速入...

Spring AI Alibaba Graph 是一款面向 Java 开发者的工作流、多智能体框架,用于构建由多个 AI

Spring AI Alibaba Graph 是一款面向 Java 开发者的工作流、多智能体框架,用于构建由多个 AI 模型或步骤组成的复杂应用。

它基于 Spring Boot 生态进行深度集成,提供声明式的 API 来编排工作流,让开发者能将 AI 应用的各个步骤抽象为节点(Node),并通过有向图(Graph)的形式连接这些节点,形成可定制的执行流程。

与传统单 Agent(一问一答式)方案相比,Spring AI Alibaba Graph 支持更复杂的多步骤任务流程,有助于解决单一大模型对复杂任务力不从心的问题。框架核心包括:StateGraph(状态图,用于定义节点和边)、Node(节点,封装具体操作或模型调用)、Edge(边,表示节点间的跳转关系)以及 OverAllState(全局状态,贯穿流程共享数据)。这些设计使开发者能够方便地管理工作流中的状态和逻辑流转。

一、核心概念与类

StateGraph(状态图/工作流图) 定义整个工作流的主类。 支持添加节点(addNode)、边(addEdge、addConditionalEdges)、条件分支、子图等。 可校验图结构,最终编译为 CompiledGraph 以供执行。

Node(节点) 表示工作流中的单个步骤(如模型调用、数据处理等)。 支持异步节点,可封装大模型调用或自定义逻辑。

Edge(边) 表示节点之间的转移关系。 支持条件分支(根据状态决定下一个节点)。

OverAllState(全局状态) 可序列化的全局状态对象,贯穿整个工作流。 支持按 key 注册不同的合并/更新策略(如替换、合并等)。 用于数据传递、断点续跑、人工干预等。

CompiledGraph(已编译图)是 StateGraph 的可执行版本。 负责实际的节点执行、状态流转、结果流式输出。 支持中断、并行节点、检查点等高级特性。

二、典型使用流程

定义 StateGraph:在 Spring 配置类中定义 StateGraph bean,添加各节点(如模型调用、业务逻辑),用边连接。

配置全局状态:通过 OverAllStateFactory 定义初始状态及 key 策略。

执行:编译为 CompiledGraph,驱动状态在节点和边之间流转,条件逻辑决定路径。

集成:通常通过 REST Controller 或 Service 暴露为接口。

三、创建简单示例

要快速体验 Spring AI Alibaba Graph,可以基于官方提供的 WorkflowAutoconfiguration 示例搭建一个完整的工作流应用。下面将以“客户评价处理系统”为例,介绍从项目依赖到运行测试的主要步骤。

1. 添加依赖与配置模型

在 Spring Boot 项目的 Maven pom.xml 中引入 Spring AI Alibaba 的 BOM 以及所需的 Starter 依赖。如引入阿里百炼大模型 DashScope 的 Starter(或选择 OpenAI Starter,具体取决于所用模型平台)。

<properties> <!-- 设定编译所用的 Java 版本(与 Spring Boot 3.5.* 兼容:要求 17+) --> <java.version>17</java.version> </properties> <dependencies> <!-- Spring Web:提供嵌入式 Tomcat 与 MVC / REST 能力 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 阿里云 DashScope 大模型接入 Starter(封装 ChatModel、ChatClient 等) --> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-starter-dashscope</artifactId> </dependency> <!-- AI 工作流 / 状态图核心库(StateGraph、CompiledGraph 等) --> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-graph-core</artifactId> </dependency> <!-- 测试依赖:包含 JUnit、Assert、Mock 支持(仅 test 作用域) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <!-- 统一管理 spring-ai-alibaba 相关组件版本,避免逐个声明 --> <dependency> <groupId>com.alibaba.cloud.ai</groupId> <artifactId>spring-ai-alibaba-bom</artifactId> <version>1.0.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>

组件版本可以选择 <version>1.0.0.3</version> 或者 <version>1.0.0.2</version>。

添加依赖后,在项目的 application.properties 中配置模型 API 密钥。例如使用阿里 Qwen 模型时配置 DashScope 服务的访问密钥(如 spring.ai.dashscope.api-key=<您的API密钥> 。

spring.application.name=simple-graph spring.ai.dashscope.api-key=${DASHSCOPE_API_KEY}

这些配置确保 Spring AI 能自动创建所需的 ChatModel Bean,用于与对应的模型服务通信。

接下来的核心工作是创建工作流StateGraph。