之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说真是一个福音,其功能已经能满足基于大模型开发企业级应用。借着这次机会,给大家分享一下Spring AI框架。
注意 :由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 Spring AI-1.0.0,JDK版本使用的是19,Spring-AI-Alibaba-1.0.0.3-SNAPSHOT 。
代码参考: https://github.com/forever1986/springai-study
目录
- [1 Spring AI Alibaba](#1 Spring AI Alibaba)
-
- [1.1 什么是Spring AI Alibaba](#1.1 什么是Spring AI Alibaba)
- [1.2 项目介绍](#1.2 项目介绍)
- [1.3 核心组件](#1.3 核心组件)
- [2 入门示例](#2 入门示例)
-
- [2.1 申请API KEY](#2.1 申请API KEY)
- [2.2 代码](#2.2 代码)
- [2.3 演示效果](#2.3 演示效果)
前面几乎讲了整个Spring AI的内容,相信在学习的朋友应该能够知道如何使用。但是作为中国的开发者,比较痛苦的就是很多大模型的内容无法访问,很多模型无法使用。而Spring AI更是不会去考虑中国的开发者,因此可以看到里面的模型很多都是国外的,并且其实Spring AI中对于图像、音频、视频等大模型支持还是有限的。
那么作为中国的开发者,也是比较幸运的,这时候有一个框架可以了解一下:Spring AI Alibaba,一个为中国开发者而生的框架Spring AI。
1 Spring AI Alibaba
1.1 什么是Spring AI Alibaba
Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。简单来说:如果学了Spring AI,那么Spring AI Alibaba几乎零成本就可以上手,同时还可以使用其应用开发领域的最佳实践方法。
其github地址 :https://github.com/alibaba/spring-ai-alibaba/
其官方文档 :https://java2ai.com/docs/1.0.0.2/overview/
其框架大体如下:

- Agentic Framework :基于 Spring AI Alibaba Graph 开发者可快速构建工作流、多智能体应用,无需关心流程编排、上下文记忆管理等底层实现。通过 Graph 与低代码、自规划智能体结合,为开发者提供从低代码、高代码到零代码构建智能体的更灵活选择。
- Development Tools & Community :主要为了解决企业智能体落地过程中关心的痛点问题。Spring AI Alibaba 支持与百炼平台深度集成,提供模型接入、RAG知识库解决方案;支持 ARMS、Langfuse 等可观测产品无缝接入;支持企业级的 MCP 集成,包括 Nacos MCP Registry 分布式注册与发现、自动 Router 路由等。
- Agents :社区发布了基于 Spring AI Alibaba 框架实现的 JManus 智能体,除了对标 OpenManus 的通用智能体能力外,其目标是基于 JManus 探索自主规划在智能体开发方向的应用,为开发者提供从低代码、高代码到零代码构建智能体的更灵活选择。
总体来说,Spring AI Alibaba基于Spring AI的框架,在上层构建了一个企业级Agents实现的解决方案,并深度的融合百炼平台。在《Spring AI 系列之二十 - Hugging Face 集成》中讲过Hugging Face通过云部署方式统一了大模型的访问,而百炼平台也是具备同样的功能,而且百炼平台有更多的国内开源模型,并支持更多实际业务场景的实践。
1.2 项目介绍
目前Spring AI Alibaba也发布了基于Spring AI 1.0.0的正式版:1.0.0.2:(注意:本次实验采用1.0.0.3-SNAPSHOT版本,由于1.0.0.2还存在一些问题,因此采用最新的1.0.0.3-SNAPSHOT)
xml
<dependencyManagement>
<dependencies>
<!-- spring ai alibaba 插件统一版本号管理-->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>1.0.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- spring ai alibaba 模型服务适配插件-->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
</dependencies>
下面通过mvn dependency:tree命令看看基础模型组件dashscope包括什么内容:

从上图可以知道其依赖了Spring AI底层的核心模块:commons、model、rag、client-chat等,再加上自身的模块。之前非正式版的Spring AI Alibaba版本比较臃肿,包括了比较多的内容,现在已经将这些内容外移,需要时才引入,只保留最基本的内容。下面大概来看看Spring AI Alibaba除了上面的核心jar包外,还有哪些相关重要的组件。
1.3 核心组件
以下是目前Spring AI Alibaba的相关组件,
- spring-ai-alibaba-bom :用于为所有组件做统一版本管理
- spring-ai-alibaba-starter-dashscope :百炼模型服务适配,基于百炼平台部署的大模型都可以使用
- spring-ai-alibaba-starter-nacos-prompt :Nacos Prompt 管理,基于Nacos动态的Promt模版管理
- spring-ai-alibaba-starter-memory :会话记忆组件。扩展存储类型:redis、oracle、es等等
- spring-ai-alibaba-starter-nacos-mcp-client :Nacos MCP 客户端,推荐 Nacos 3.0.1 版本。Nacos2 Server 用户请用老版本(spring-ai-alibaba-starter-nacos2-mcp-client)
- spring-ai-alibaba-starter-nacos-mcp-server :Nacos MCP 服务端,推荐 Nacos 3.0.1 版本。Nacos2 Server 用户请用老版本(spring-ai-alibaba-starter-nacos2-mcp-server)
- spring-ai-alibaba-graph-core :智能体 Graph 框架核心组件,这个是构建Agent、工作流等底层框架
- spring-ai-alibaba-starter-nl2sql :自然语言到 SQL 转换组件,一个较为复杂的 AI 应用场景:自然语言转SQL语句,底层基于graph完成的
- community 增加了更多生态集成
- spring-ai-alibaba-starter-tool-calling-* :工具调用组件,集成更多生态工具
- spring-ai-alibaba-starter-document-reader-* :文档读取组件,集成更多生态文档读取
- spring-ai-alibaba-starter-arms-observation :ARMS 可观测
从上面来看,其除了集成Spring AI原先基本功能(模型调用、聊天记忆、提示词、工具调用、ETL等功能)之外,有些做了扩展功能,有些基于企业级应用场景的框架等,本次将会讲解每个核心组件的内容,本章先从一个入门示例开始,了解第一个dashscope组件。
2 入门示例
代码参考lesson24子模块下面的ali-get-start子模块
示例说明:快速搭建一个聊天模型deepseek模型
2.1 申请API KEY
1)由于需要访问,可以在百炼平台注册用户,前180天有百万级别的token免费使用
2)打开API KEY 界面

3)创建API KEY

2.2 代码
1)在springai-study模块的pom中引入spring-ai-alibaba的版本管理,同时由于使用SNAPSHOT插件,引入oss.sonatype.org的Maven仓库
xml
<properties>
<spring-ai-alibaba.version>1.0.0.3-SNAPSHOT</spring-ai-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring ai alibaba 插件-->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<!-- 版本号为1.0.0.3-SNAPSHOT-->
<version>${spring-ai-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- maven仓库 -->
<repositories>
<repository>
<id>sonatype</id>
<name>OSS Sonatype</name>
<url>https://oss.sonatype.org/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
2)新建lesson24子模块
3)在lesson24子模块下,新建ali-get-start子模块,其pom引入如下:
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
</dependencies>
4)创建application.properties配置文件
text
spring.ai.dashscope.api-key=你的阿里百炼API KEY
5)创建DemoController 演示类:
java
import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DemoController {
private final ChatClient dashScopeChatClient;
public DemoController(ChatClient.Builder chatClientBuilder) {
this.dashScopeChatClient = chatClientBuilder
.defaultSystem( "你是一个博学的智能聊天助手,请根据用户提问回答!")
// 实现 Logger 的 Advisor
.defaultAdvisors(
new SimpleLoggerAdvisor()
)
// 设置 ChatClient 中 ChatModel 的 Options 参数
.defaultOptions(
DashScopeChatOptions.builder()
.withModel("deepseek-r1") // 设置deepseek-r1模型,默认是qwen-plus
.withTopP(0.7)
.build()
)
.build();
}
@GetMapping("/ai/generate")
public String generate(@RequestParam(value = "message", defaultValue = "你是谁?") String message) {
return dashScopeChatClient.prompt(message).call().content();
}
}
6)创建Lesson24GetStartApplication 启动类:
java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Lesson24GetStartApplication {
public static void main(String[] args) {
SpringApplication.run(Lesson24GetStartApplication.class, args);
}
}
2.3 演示效果
text
http://localhost:8080/ai/generate

说明 :从上面可以看出,其编码和Spring AI一模一样,代码都不需要做任何修改即可使用。当然涉及到新的模块功能,可能需要学习。而百炼平台支持的模型可以参考其官方文档,几乎涵盖了国内外所有开源模型。
结语:本章通过简单介绍Spring AI Alibaba是什么,以及为什么适合中国开发者。然后使用一个示例演示作为入门,可以看到其使用与Spring AI并无差别,这样就可以接入国内大多数大模型问题,关键是还提供很多免费token使用。
Spring AI系列上一章:《Spring AI 系列之二十六 - 可观测》
Spring AI系列下一章:《Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版》