第1章:初识 Spring AI-Java 开发者的 AI 新纪元
开发过程中遇见不会的怎么办?
👉『 开发喵AI 』👈
已集成 GPT-5、Claude3.7、Gemini 御三家
致力于解决用户魔法上网、答案高要求、内容高标准
已内置 100余种 命令与角色
解决问题的方式有很多种,请试试 开发喵AI 给你的答案🙇🙇♀️
后台发送『 开发喵AI 』 了解详情 🔎
📢大家都在用的AI工具,在等什么,赶快上车!📌 本章目标:建立对 Spring AI 的整体认知,理解它为什么重要,并快速搭建第一个 AI 应用。
返回目录
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 更适合生产环境。
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上。所有版本将采用基础环境要求的推荐版本。
<!--
这里只给出重要部分,完整文件请移步
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
即可,因为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
👉『 开发喵AI工具 』👈