AI技术已经崛起 我们要紧跟潮流 学习AI相关知识
一 Spring AI Alibaba框架学习
spring ai能做的,Spring AI Alibaba都能做且更厉害 有百炼平台 是一套生态。
前置知识: JDK 17 spring boot3 maven redis 大模型入门概念: DeepSeek 通义千问等
Spring AI Alibaba 为什么出现
before : 微服务 springboot after: 大模型 模型推理 模型训练 AI迅猛发展,我们要将目光投入AI应用开发。 Langchain4J、Spring Ai、Spring AI Alibaba介于微服务和大模型之间的框架模型。
Spring AI Alibaba是什么
简化开发者开发智能体应用的过程,方便开发者可以非常方便的开发AI智能体应用。以Spring AI为基础,深度集成百炼平台,支持chatbot、工作流、多智能体应用开发模式的AI框架。
Spring AI Alibaba能干什么
- 专属于spring 开发的AI工具
- Model prompt RAG Tools组件
- 阿里云大模型与云原生最佳实践
Spring AI Alibaba 去哪里下载 / 学习
Spring AI官网:spring.io/projects/sp…
Spring AIAlibaba官网:java2ai.com
SpringAIAlibaba仓库:github.com/alibaba/spr…
SpringAIAlibaba官方示例仓库:github.com/springaiali…
Spring AI1.0 GA 文章:java2ai.com/blog/spring…
SpringAI仓库:github.com/spring-proj…
Spring AI VS Spring AI Alibaba VS LangChain4J 对比
Spring AI Alibaba > Spring AI > LangChain4J
📊 核心对比表格
| 维度 | Spring AI (Spring 官方) | Spring AI Alibaba (阿里云扩展) | LangChain4J (LangChain Java版) |
|---|---|---|---|
| 开发方 | Spring 官方团队(Pivotal) | 阿里云(Spring AI 二方库) | 社区开源项目(非官方) |
| 核心定位 | Spring 生态原生 AI 框架 | 阿里云服务深度集成 | LangChain 的 Java 实现 |
| 技术栈 | Spring Boot 2.7+/3.x | Spring Boot 2.7+/3.x + 阿里云SDK | Java 11+ (兼容 Spring) |
| AI 服务支持 | OpenAI、Azure OpenAI、HuggingFace、本地模型 | 阿里云百炼/通义千问、OpenAI、Azure | OpenAI、Anthropic、HuggingFace、本地模型 |
| Spring 集成 | ✅ 原生支持(自动配置、Bean 管理) | ✅ 阿里云服务深度集成 | ⚠️ 需手动集成 Spring(无官方支持) |
| 开发体验 | 🌟 极致流畅(@Autowired 直接注入) | 🌟 阿里云用户无缝衔接 | ⚠️ 需适配 Java 风格(非 Python 思维) |
| 文档/社区 | ✅ Spring 官方文档 + 社区活跃 | ✅ 阿里云文档 + 企业级支持 | ⚠️ 社区较小,依赖 LangChain 中文资料 |
| 典型场景 | Spring Boot 项目集成 AI | 阿里云生态项目(如钉钉/飞书集成) | 需跨语言(Python 业务)的 Java 项目 |
二 Spring AI Alibaba案例 永远的hello world
前置约定
模型: 阿里云百炼模型 / DeepSeek / OpenAI ...
Spring Ai Alibaba 和 Spring AI、Spring Boot的版本兼容问题
| 依赖项 | 版本要求 | 兼容性 | 说明 |
|---|---|---|---|
| Spring Boot | 3.2.12+ | ✅ 严格兼容 | 仅支持 Spring Boot 3.2.x(最低 3.2.0) |
| Spring AI | 0.8.0 | ✅ 必须匹配 | Spring AI Alibaba 0.8.0 必须依赖 Spring AI 0.8.0 |
| 阿里云百炼服务 | 2025 年 4 月后 | ✅ 完美支持 | 通义千问模型(qwen-max, qwen-plus)原生调用 |
| 其他版本 | 1.0.0 / 0.9.0 | ❌ 不兼容 | 1.0.0 为谣言,0.9.0 为测试版(已废弃) |
配置门道和关键点: OpenAI协议或者Spring AI Alibaba官网推荐模型服务灵积(DashScope) 整合规则 实现一致接口设计和规范。
阿里云百炼平台入口官网
模型地址(专门卖大模型): bailian.console.aliyun.com/
大模型调用三件套
- 1 获取api-key
- 2 获取模型名 模型广场 - 选择模型 - 获取模型名
- 3 获取base URL 开发地址
SDK 调用配置的base_url:https://dashscope.aliyuncs.com/compatible-mode/v1
HTTP 请求地址:POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
IDEA 建立Project父项目
创建project
添加bom依赖版本
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.miao</groupId>
<artifactId>SpringAIAlibaba-test01</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 主干 -->
<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>
<!-- 1. 先导入Spring Boot核心BOM(基础依赖版本) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 2. 再导入官方Spring AI BOM -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 3. 最后导入阿里云Spring AI BOM(覆盖官方版本,保证适配) -->
<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>
</dependencies>
</dependencyManagement>
</project>
开发五步骤
1 建Module
2 改POM
Dashscope 灵积服务协议
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.miao</groupId>
<artifactId>SpringAIAlibaba-test01</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>SAA-01HelloWorld</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 模型服务灵积 调用alibaba生态的协议 对标openai协议 -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>1.0.0.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.38</version>
</dependency>
</dependencies>
</project>
3 写YML
server.port=8081
#大模型对话中文UTF8编码处理
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.servlet.encoding.charset=UTF-8
spring.application.name=SAA-01HelloWorld
#spring-ai-alibaba config
#百炼大模型的api-key
spring.ai.dashscope.api-key=sk-6d5c7b3b89097f
spring.ai.dashscope.url=https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.dashscope.model=qwen3-vl-flash
4 主启动
package com.miao.saa;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SAA01HelloWordApplication {
public static void main(String[] args) {
SpringApplication.run(SAA01HelloWordApplication.class, args);
}
}
5 业务类
api-key不可以明文配置进入环境变量
1.k-v键值对设置
2.修改环境变量
3.需要重启IDEA
配置类SaaLLMConfig
package com.miao.saa.config;
import com.alibaba.cloud.ai.dashscope.api.DashScopeApi;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SaaLLMConfig {
/**
* 方式一 : 通过配置文件注入 API Key
*/
@Value("${spring.ai.dashscope.api-key}")
private String apiKey;
@Bean
public DashScopeApi dashScopeApi() {
return DashScopeApi.builder()
.apiKey(apiKey)
.build();
}
}
对话模型 Chat Model
ChatModel: 交互聊天模型
在 Spring AI(Spring Artificial Intelligence)框架中,ChatModel 是一个核心接口,用于与大语言模型(LLM, Large Language Model)进行对话式交互。它抽象了与不同 AI 服务商(如 OpenAI、Anthropic、Ollama、Google Vertex AI 等)的聊天 API 的调用细节,使开发者能以统一的方式构建 AI 应用
ChatModel 是 Spring AI 提供的一个高层次抽象接口,代表一个支持多轮对话(chat-style)的 AI 模型。与传统的“单次提示-响应”模型(如 TextModel)不同,ChatModel 支持:
- 多轮上下文对话(包含系统消息、用户消息、助手回复等)
- 结构化消息输入(
Message列表) - 流式响应(可选)
- 工具调用(Function Calling / Tool Use)
package com.miao.saa.controller;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RestController
@RequestMapping(value = "chat")
public class ChatModelController {
/**
* 文生文对话模型 ChatModel 调用阿里云的百炼平台
*/
@Resource
private ChatModel chatModel;
/**
* 普通通用调用 一次性返回
*/
@GetMapping(value = "call")
public String doChatCall(@RequestParam(name = "msg", defaultValue = "你是谁") String message) {
return chatModel.call(message);
}
/**
* 流式调用 有多少返回多少 挤牙膏式返回
*/
@GetMapping(value = "steam")
public Flux<String> doChatStream(@RequestParam(name = "msg", defaultValue = "你是谁") String message) {
return chatModel.stream(message);
}
}
总结 拓展
如何切换其它模型
直接更改 大模型名称和base-api
省略配置
可以 省略配置 ,有默认配置alibaba的通义千问
spring.ai.dashscope.model=qwen3-vl-flash 可以省略,有默认
spring.ai.dashscope.url=https://dashscope.aliyuncs.com/compatible-mode/v1 可以省略,有默认
与OpenAI协议对比
openai依赖:
<!--spring-ai-openai-->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
spring-ai-alibaba依赖:
<!-- 模型服务灵积 调用alibaba生态的协议 对标openai协议 -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>1.0.0.2</version>
</dependency>
openai配置:
#百炼大模型的api-key
spring.ai.openai.api-key=${qwen-api-key}
spring.ai.openai.url=https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.openai.model=qwen3-vl-flash
yml配置文件修改V2
System.getEnv("环境变量")
@Bean
public DashScopeApi dashScopeApi() {
return DashScopeApi.builder()
// 从系统环境变量中读取配置
.apiKey(System.getenv("qwen-api-key"))
.build();
}