Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元
![Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元](https://img.niaorui.com/blogimg/20251123/d52db6432fbc4877963f29d54c496e05.jpg)
1.1 什么是 Spring AI?
你可能已经听说过 LangChain(Python 生态中最流行的 AI 应用开发框架),它让开发者可以轻松地将大语言模型(LLM)与数据、工具和业务逻辑结合起来,构建出强劲的 AI 应用。而 Spring AI,正是 Spring 团队为 Java 开发者打造的“LangChain for Java”。
它不是简单地把 LangChain 翻译成 Java,而是基于 Spring 生态(尤其是 Spring Boot)重新设计的一套企业级 AI 集成框架,目标是:
✅ 让 Java 开发者也能像 Python 开发者一样,快速、安全、可维护地构建 AI 增强的应用程序。
1.2 为什么 Java 开发者也需要玩转 AI?
大多数人都觉得,在AI应用开发方面,用Python是最佳的选择,甚至许多 Java 工程师可能会觉得:“AI 是 Python 的天下,我用不到。”
但现实是:
- 90% 以上的企业核心系统是用 Java(Spring)构建的(ERP、CRM、金融系统等)。
- 这些系统积累了海量的业务数据和流程。
- 如果能让这些系统“变机智”,列如:自动生成报表、智能客服问答、自动化审批、文档摘要提取,那将极大提升企业效率。
而 Spring AI 正是连接 企业级 Java 系统 与 前沿 AI 模型 的桥梁。
1.3 Spring AI 与 LangChain 的异同
LangChain 作为 Python 生态的 “AI 开发瑞士军刀”,以模块化、高灵活性著称,但 Spring AI 在企业级场景中展现出独特价值,核心差异如下:
|
对比维度 |
Spring AI 优势体现 |
LangChain 特点 |
|
技术栈适配性 |
原生支持 Java 技术栈,API 设计符合 Spring 编程习惯(注解、依赖注入),可直接复用 Java 成熟库(如 JDBC、Apache POI),无需跨语言协作。 |
基于 Python 构建,依赖 Pandas、Matplotlib 等 Python 生态工具,Java 团队需额外维护 Python 服务。 |
|
生态集成 |
与 Spring Boot、Spring Cloud 深度融合,可将 AI 能力直接嵌入 CRM、ERP 等现有系统,避免系统重构,让老系统迅速具备AI 能力 |
需通过 HTTP 接口与 Java 系统对接,增加跨服务调用复杂度和故障点。 |
|
部署与运维 |
支持打包为 JAR 包或 GraalVM 原生镜像,无缝对接 K8s、Serverless 等企业级环境,与现有 Spring 应用运维体系一致。 |
依赖 Python 虚拟环境,在企业级运维中兼容性较弱,跨环境部署易出现依赖冲突。 |
|
学习与迁移成本 |
Java 开发者无需学习新范式,可复用 Spring 技术积累;模型切换仅需修改配置,代码复用率高。 |
需掌握 Python 及 LangChain 特有概念(如 Chain、Agent),跨语言团队沟通成本高。 |
简单说:LangChain 更适合研究和原型,Spring AI 更适合生产环境。
![Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元](https://img.niaorui.com/blogimg/20251123/cee42cb49a3d4e44ad7da09ea4c34da8.jpg)
1.4 开发前准备工作
1.4.1 大模型选型
Spring AI 通过统一接口支持多厂商模型,无需修改代码即可切换,结合 2025 年最新生态支持,推荐选型如下:
|
模型类型 |
代表产品 |
适用场景 |
优势说明 |
|
海外主流模型 |
OpenAI GPT-3.5/4/4o/5 |
通用对话、代码生成 |
生态成熟,支持复杂 Prompt 工程,适合原型验证 |
|
Anthropic Claude 3 |
长文本处理(10 万 + tokens) |
上下文窗口大,金融法律文档分析场景适配 |
|
|
国产开源模型 |
阿里通义千问 QwQ-32B |
企业级部署、成本敏感场景 |
国家超算平台提供免费 100 万 tokens 试用,320 亿参数量性能接近大模型 |
|
DeepSeek Chat |
代码生成、数学推理 |
原生支持 Spring AI Starter 依赖,国内访问延迟低 |
|
|
本地部署模型 |
Ollama + Llama 3 |
隐私敏感、离线场景 |
支持 Docker 部署,适配嵌入式向量数据库查询 |
选型提议:测试阶段优先使用通义千问 QwQ-32B(免费额度),生产环境根据合规要求选择阿里云 / OpenAI 企业版。
当然可选的大模型还有许多。海外模型由于一些缘由,我们可能无法直接使用,但AI喵已经为大家清除了这些障碍,请扫描文章最下方二维码。
1.4.2 阿里云百炼
本系列教程将使用阿里百炼平台提供的大模型,需要您到阿里百炼平台注册账号。注册地址:
https://bailian.console.aliyun.com/
注册完毕登录控制台,左侧秘钥管理中可以创建 API-KEY, 这样我们就可以在应用中使用了。
1.4.3 本地项目搭建
- 基础环境要求
|
组件 |
最低版本 |
推荐版本 |
说明 |
|
JDK |
17 |
21(LTS) |
Spring AI 1.0.0 + 需 JDK 17+,JDK 21 支持虚拟线程优化 AI 任务调度 |
|
Spring Boot |
3.2.x |
3.4.5 |
需与 Spring AI 版本匹配(如 Spring AI 1.0.2 适配 Spring Boot 3.4.5) |
|
构建工具 |
Maven 3.6+ / Gradle 8.0+ |
Maven 3.9.6 |
推荐 Maven 管理依赖,通过 BOM 统一版本控制 |
|
开发工具 |
IntelliJ IDEA 2023+ |
2024.2 |
安装 Spring Assistant 插件快速创建项目 |
|
可选依赖 |
Docker 20.10+ |
25.0.0 |
用于本地部署向量数据库(如 Milvus)或 Ollama 模型 |
- 项目说明
本系列教程采用maven父子项目,每个章节作为一个子项目(模块),并放到 github上。所有版本将采用基础环境要求的推荐版本。
![Spring AI[01]:初识 Spring AI-Java 开发者的 AI 新纪元](https://img.niaorui.com/blogimg/20251123/7f28118ac679451bba8142ffa4222689.jpg)
<!--
这里只给出重大部分,完整文件请移步
https://github.com/kaiwill/kaifamiao/blob/master/pom.xml
-->
<properties>
...
<java.version>21</java.version>
<!-- Spring AI -->
<spring-ai.version>1.0.2</spring-ai.version>
<!-- Spring Boot -->
<spring-boot.version>3.4.5</spring-boot.version>
<!--阿里百炼提供了SDK,为了方便这里引入了 Alibaba Cloud AI -->
<spring-ai-alibaba.version>1.0.0.3</spring-ai-alibaba.version>
<fastjson.version>2.0.51</fastjson.version>
...
</properties>
...
<dependencyManagement>
<dependencies>
<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>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
<version>${spring-ai-alibaba.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
...
<!-- 完整文件请查看 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 模型依赖:根据选型替换(如openai/deepseek/qwq) -->
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
本章节将会在 chapter01 中配置Spring AI基础环境,选择的是 阿里云百炼平台。
- 获取API Key,参考文档 https://bailian.console.aliyun.com/?tab=api#/api
- 测试环境中,我们可以将 API Key 配置到环境变量中。参考文档:https://bailian.console.aliyun.com/?tab=api#/api/?type=model&url=2803795
- 这里选择用阿里百炼提供的SDK,所以引入了 spring-ai-alibaba-starter-dashscope这个starter
- ,如果使用`spring-ai-starter-model-openai`则需要配置 `base_url`为 `[https://dashscope.aliyuncs.com/compatible-mode/v1](https://dashscope.aliyuncs.com/compatible-mode/v1)` 即可,由于`spring-ai-starter-model-openai`默认访问的是 openai
spring:
ai:
dashscope:
api-key: ${AI_BAI_LIAN_API_KEY} # 必填,在操作系统环境变量中设置这个变量后,重启IDEA才能生效。由于IDEA启动的时候会缓存这个变量
chat:
options:
model: qwen-plus
# 这个值0~1,值越大代表生成的结果随机性越强。如果是一个聊天,这个值可以大一点。如果是一些严谨的规划,则这个值可以设置小一些
temperature: 0.7
// chapter01/src/main/java/com/kaifamiao/chapter01/Application.java
@SpringBootApplication
@Slf4j
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如果项目能正常启动,那么说明基本环境已经搭建好了。
下一章预告:第2章《核心 API 入门 —— 使用 ChatClient 与大模型对话》
在下一章中,我们将深入 ChatClient API,学习:
- 如何发送结构化消息(User/System/Assistant)
- 如何使用流式响应(Streaming)实现“打字机效果”
- 如何使用 PromptTemplate 构建动态提示词
- 实战:构建一个“AI 写周报”功能
准备好了吗?我们下一章继续!
源代码地址:
https://github.com/kaiwill/kaifamiao