Spring AI Alibaba是一款Spring AI为基础,深度集成百炼平台,支持多种大模型开发的AI框架。
所以Spring AI Alibaba开源项目就是基于Spring AI构建,是阿里云百炼平台,在Java AI应用领域开发的最佳实践,提供高层次的AI API抽象与云原生基础设施集成方案。

Spring AI Alibaba的官网:Spring AI Alibaba 官网_快速构建 JAVA AI 应用
对于Spring AI Alibaba的学习文档:https://java2ai.com/docs/1.0.0.2/tutorials/basics/concepts/?spm=0.29160081.0.0.25a974b1WVFya0
我们对比一下三者的区别,我们看一下。
对比维度 | Spring AI | Spring AI Alibaba | LangChain4j |
---|---|---|---|
定位 | AI 应用开发底层框架,提供 AI 开发需要的底层原子抽象 | AI 智能体开发框架,提供从 Agent 构建到 workflow 编排、RAG 检索、模型适配等能力 | 简化将 LLM 集成到 Java 应用程序中的过程,提供统一 API 和全面的工具箱 |
Spring Boot 集成 | 原生支持 | 原生支持 | 社区适配 |
模型支持 | 支持 OpenAI、Azure OpenAI、Amazon Bedrock 等主流模型,包括聊天、文生图、音频转录等多种类型 | 支持 OpenAI、Ollama、阿里云 Qwen 等多种大模型,模型类型丰富 | 支持 15 + 个流行的 LLM 提供商,如 OpenAI、Google Vertex AI 等 |
向量数据库 | 支持 Azure Vector Search、Chroma、Milvus 等主流向量数据库 | 支持阿里云 ADB、OpenSearch 等主流向量数据库 | 支持 20 + 个嵌入存储,如 Pinecone、Milvus 等 |
函数调用 | 支持,可声明 Java.util.function 实现供 OpenAI 模型使用 | 支持,有 20 + 官方工具集成 | 支持,提供函数调用工具 |
提示词管理 | 无专门的提示词管理功能 | 通过 Nacos 配置中心进行提示词管理 | 无专门的提示词管理功能 |
Chat Memory | 支持 JDBC、Neo4j、Cassandra 等 | 支持优化版的 JDBC、Redis、ElasticSearch 等 | 有多种实现适配,如消息窗口和令牌窗口等 |
工作流 | 无 | 支持,使用 Spring AI Alibaba Graph 编排包含 LLM、工具等节点的工作流 | 无 |
多智能体 | 无 | 支持,可创建多个相互协作的智能体,解决复杂业务场景 | 无 |
可观测性 | 支持 | 支持,可接入阿里云 ARMS | 部分支持 |
社区活跃度与文档健全性 | 官方社区,活跃度高,有丰富的文档、示例应用等 | 官方社区,活跃度高,提供详细的文档和丰富的示例仓库 | 个人发起社区,有一定的活跃度和丰富的示例 |
我们首先要想使用SSA的话,首先我们需要接入阿里百炼平台的通义模型https://bailian.console.aliyun.com
获取我们需要的三件套
我们需要先获取api key

然后获取模型,在大模型广场选择自己喜欢的即可。qwen-plus

获取模型名之后然后获取baseURL开发地址:https://dashscope.aliyuncs.com/compatible-mode/v1
通过idea进行模型的调用。
我们只需要简单的创建一个项目即可,在maven的文件里面引入:
XML
<properties>
<spring-ai.version>1.0.0</spring-ai.version>
<spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version>
<spring-boot.version>3.4.5</spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>${spring-ai-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
</dependencies>
当我们的配置进行好设置之后,我们就需要编写启动类,然后定义约束:

注意我们的api-key不应该直接写入配置文件当中,可以定义一个Config类进行单独的设置,
java
@Configuration
public class SAAConfig {
@Value("${spring.ai.dashscope.api-key}")
private String apiKey;
@Bean
public DashScopeApi dashScopeApi() {
return DashScopeApi.builder().apiKey(apiKey).build();
}
}
我们进行设置之后,就可以将我们的配置文件里面的值进行替换掉,这样更加的安全。当我们设置好之后现在我们就可以开始调用大模型了,但是我们怎么进行交互呢,对于和大模型进行对话交互我们可以使用ChatModel接口进行使用。我们在学习文档里面就可以找到,我们只进行对话的交互,所以我们使用ChatModel即可

我们对于控制台的使用可以这样使用:
java
@RestController
public class ChatHelloController {
@Resource
private ChatModel chatModel;
@GetMapping("/hello")
public String hello(@RequestParam(name = "message",defaultValue= "hello")
String message) {
String result = chatModel.call(message);
System.out.println(result);
return result;
}
//流式输出,也就是慢慢的进行输出。
@GetMapping("/hello/stream")
public Flux<String> helloStream(@RequestParam(name = "message",defaultValue= "hello")
String message) {
return chatModel.stream(message);
}
}
这样我们就可以进行简单的调用大模型了,输出结果就是

现在我们已经可以进行简单的使用了,当然了如果我们现在需要进行简单大模型替换的话,我们应该怎么办呢?只需要进行这样的简单替换我们就可以使用了。

当我们进行配置的时候,如果不进行指定,那么我们会默认使用通义千问,只需要保留API-key即可。当我们想使用spring ai的时候只需要换一下dashScope的依赖即可,然后三件套改成以下形式也是一样的。
XML
#通过openai协议调用通义千问
#spring.ai.openai.api-key=$faliOwen-api}
#spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode
#spring.ai.openai.chat.options.model=qwen-plus