【JavaEE】【SpringAI】快速入门
spring-ai接入deepseek与chatgpt的简单使用
目录
一、简介
官网:https://spring.io/projects/spring-ai
2025年5⽉20⽇SpringAI官⽅宣布1.0GA(GeneralAvailability)版本正式发布,这是Spring官⽅推出的⾸个稳定版⼈⼯智能(AI)集成框架.旨在帮助Java/Spring开发者更便捷地在企业级应⽤中集成AI能⼒(如⼤语⾔模型、机器学习、向量数据库、图像⽣成等).它的发布标志着Spring⽣态正式进⼊AI时代,为Java开发者提供了标准化的AI开发⼯具链,AI技术正式进⼊Spring⽣态的核⼼⼯具链。

Spring AI 是⼀个AI⼯程领域的应⽤框架,它的⽬标是将Spring⽣态系统的设计原则(如可移植性和模块化设计)应⽤于AI领域,并促进使⽤POJO作为AI领域应⽤程序的构建块.
Spring AI 提供以下功能:
- ⽀持主要的AI模型提供商,⽐如Anthropic、OpenAI、Microsoft、Amazon、Google和Ollama,⽀持的模型种类也⾮常多,⽐如:聊天模型,嵌⼊模型,图像模型,⾳频模型,内容审核等。
- 跨AI提供商的可移植API⽀持.⽀持聊天(Chat),⽂本到图像(text-to-image)和嵌⼊(Embedding) 模型的统⼀接⼝,同时提供同步和流式API选项.⽀持访问模型特定功能。
SpringAI为⾮AI专家的开发者也能快速调⽤⼤语⾔模型,提供了构建AI应⽤的基础抽象层,允许开发⼈员通过极少的代码修改即可轻松替换组件.简化集成AI功能的应⽤程序开发,避免不必要的复杂性。
二、术语
2.1 模型
模型:旨在处理和⽣成信息的算法,通常模仿⼈类的认知功能。通过从⼤型数据集中学习模式和洞察,这些模型可以进⾏预测、⽣成⽂本、图像或其他输出,从⽽增强各个⾏业的各种应⽤。⽐如ChatGPT、⽂⼼⼀⾔、通义千问等等.每种模型能⼒不同,适合的任务也不同。
可以简单理解为模型是⼀个"超级加⼯⼚",这个⼯⼚是经过特殊训练的,训练师给它看了海量的例⼦(数据),并告诉它该怎么做。通过看这些例⼦,它⾃⼰摸索出了⼀套规则,学会了完成某个"特定任务".模型就是⼀套学到的"规则"或者"模式",它能根据你给的东西,产⽣你想要的东西.
我们给的东西就称之为:输⼊
模型产出的结果,就称之为输出
模型就相当于我们大量做题,我们自己总结出的做题方法,输入就是题目,输出就是答案。
2.2 LLM
LLM(Large LanguageModel), ⼤语⾔模型,也称⼤型语⾔模型,是⼈⼯智能模型中专⻔处理⽂本的⼀种类型,属于语⾔模型的范畴.LLM的特点是规模庞⼤,包含数⼗亿的参数,在⼤量的⽂本数据上进⾏训练,学习语⾔数据中的复杂模式,旨在理解和⽣成⼈类语⾔.可以执⾏⼴泛的任务,包括⽂本总结、翻译、情感分析等.
简单介绍⼏种⽬前主流的⼤语⾔模型(LLM).
- GPT-5(OpenAI)
-
- ⽀持128K⻓上下⽂,在多轮复杂推理、创意写作中表现突出
- DeepSeekR1(深度求索)
-
- 开源,专注于逻辑推理与数学求解,⽀持128K⻓上下⽂和多语⾔(20+语⾔),在科技领域表现突出
- Qwen2.5-72B-Instruct (阿⾥巴巴)
-
- 通义千问开源模型家族重要成员,擅⻓代码⽣成结构化数据(如JSON)处理⻆⾊扮演对话等,尤其适合企业级复杂任务,⽀持包括中⽂英⽂法语等29种语⾔
- Gemini2.5Pro(Google)
-
- 多模态融合标杆,⽀持图像/代码/⽂本混合输⼊,适合跨模态任务(如图⽂⽣成、技术⽂档解析)
2.3 提示词
提⽰词是⽤⼾或系统提供给⼤语⾔模型(LLM)的指令或⽂本,⽤于引导模型⽣成特定输出.可以理解为模型的输⼊,⽆论是⼀个单词、⼀个问题、⼀段描述,还是结构化指令,都可视为提⽰词.
从⼯程视觉来看,提⽰词分为⽤⼾提⽰词和系统提⽰词
| 类型 | 定义 | 核⼼功能 | ⽰例 |
|---|---|---|---|
| ⽤⼾提⽰词 | 由终端⽤⼾直接输⼊,触发单次任务 | 传达即时需求(如提问、创作指令) | ⽤⼾输⼊:“总结这篇论⽂的核⼼观点” |
| 系统提⽰词 | 由开发者预设,嵌⼊系统后端 | 定义模型⻆⾊、⾏为规范、知识边界 | 预设:“你是⼀名严谨的学术助⼿,回答需引⽤权威⽂献” |
系统提⽰词如同"操作系统",持续影响所有交互(如⻆⾊设定、安全过滤), ⽤⼾提⽰词如同"操作指令",驱动单次任务执⾏(如⽣成报告、翻译⽂本)
2.4 词元(Tokens)
词元是⼤语⾔模型(LLM)处理⽂本时的最⼩语义单位.⽤于将⽂本拆解为模型可理解的离散单元.
词元通过分词器将⽂本拆分⽽来,不同模型的分词规则不同,同⼀个词在不同模型中可能被拆分成不同词元.
模型的上下⽂窗⼝(如128K)实际是词元数量限制, API收费通常按词元数计费(词元=⾦钱),词元数越多,计算耗时和内存占⽤越⾼.所以在使⽤时,应尽量避免冗余词(如请,谢谢)
三、快速入门
3.1 环境要求
- JDK
-
- 最低要求:JDK17+(SpringBoot3.x强制要求)
-
- 推荐版本:
-
-
- JDK21(2023年LTS版本,⽀持虚拟线程/分代ZGC,性能提升显著)
-
-
-
- JDK17(旧项⽬过渡⽅案)
-
- SpringBoot
-
- 最低要求:SpringBoot3.2+(SpringAI1.0.0起强制依赖)
-
- 推荐版本:
-
-
- SpringBoot3.4.x(最新稳定版,优化企业级特性)
-
-
-
- SpringBoot3.3.x(部分旧项⽬兼容⽅案)
-
3.2 deepseek接入准备
DeepSeek以开源和⾼效推理为核⼼竞争⼒,主要模型包括:
- DeepSeek-R系列(如R1):专注复杂推理的模型,数学、代码能⼒突出,⽀持深度思考模式(⾼智能推理状态)
- DeepSeek-V系列(如V2,V3):通⽤语⾔模型,⽀持⽂本⽣成、多轮对话等任务,性能对标GPT-4Turbo4.
- DeepSeek-Coder:专注于代码⽣成与补全,⽀持多语⾔编程(Python,Java等),强化学习优化,训练成本仅为同类模型的1/30.
DeepSeek的特点:
- 完全开源:模型代码、权重公开,兼容OpenAIAPI接⼝
- 极致性价⽐:推理成本仅为同类模型的1/7(如对⽐Llama3-70B),训练成本低⾄560万美元(仅为
⾏业平均的1/3)
申请DeepSeekAPIKeys:
- 点击[API开放平台],进⼊API开放平台,注册⽤⼾

- 注册之后,⾃⾏充值
充值前需要先进⾏实名认证,根据词元进行收费。
- 创建APIKeys,记得复制保存

调用参考链接:https://api-docs.deepseek.com/zh-cn/
3.3 项目初始化
3.3.1 创建⽗⼯程
- 创建⼀个空的Maven项⽬,删除所有代码,只保留pom.xml

- 完善pom⽂件
添加依赖,声明⽗⼯程的打包⽅式为pom
<?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>org.example</groupId>
<artifactId>spring-ai-project</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 声明⽗⼯程的打包⽅式为pom -->
<packaging>pom</packaging>
<!-- 完善依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
3.3.2 创建子项目
- 创建⼀个子Maven项⽬


- 声明项⽬依赖和项⽬构建插件
<?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>org.example</groupId>
<artifactId>spring-ai-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>spring-ai-demo</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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 构造必要文件

3.3.3 添加SpringAIBOM
官方参考链接:https://docs.spring.io/spring-ai/reference/getting-started.html
从1.0.0-M6 版本开始,发布版本已在MavenCentral提供.我们在构建时⽆需任何改动。 之前使用Snapshot版本,需要添加Snapshot仓库。
发布版本依赖管理:
Spring AI 提供了⼀个物料清单(BOM),⾥⾯声明了给定SpringAI版本所使⽤的依赖项的推荐版本. 它只包含依赖管理,不包含插件声明或对Spring或SpringBoot的直接引⽤.可以通过Parent继承,也可以通过 dependencyManagement 导⼊.
添加BOM到项⽬中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.4 接入deepseek
Spring AI ⽣态专⻔为OpenAI及兼容API服务(如DeepSeek)设计了Starter spring-ai-openai-spring-boot-starter ,⽤于快速集成⼤语⾔模型能⼒到SpringBoot应⽤中。
核⼼价值包括:
- 简化配置:⾃动封装OpenAIAPI的请求/响应等逻辑
- 统⼀接⼝:提供ChatClient等标准化接⼝,⽀持⽆缝切换不同模型提供商
- Spring⽣态集成:与SpringBoot的⾃动配置、依赖注⼊等特性深度整合
3.4.1 添加依赖
在子项目中pom文件中添加依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
<version>1.0.0-M6</version>
</dependency>
3.4.2 配置API密钥
在applicaition.yml中配置
spring:
ai:
openai:
api-key: sk-your-key
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
temperature: 0.7
- spring.ai.openai.api-key : 在DeepSeek开放平台申请的APIkey
- spring.ai.openai.chat.options.temperature: 默认值0.8. ⽤于控制⽣成补全内容的多样性.值越⾼,输出越随机,值越低,结果越集中和确定.不建议在同⼀个补全请求中同时修改temperature和 top_p, 因为这两个设置的交互作⽤难以预测.
- deepseek-chat 模型指向DeepSeek-V3-0324, 通过指定 model=‘deepseek-chat’ 调⽤。deepseek-reasoner 模型指向DeepSeek-R1-0528, 通过指定 model=‘deepseek-reasoner’ 调⽤.
更多配置参考链接:https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html
https://docs.springframework.org.cn/spring-ai/reference/api/chat/deepseek-chat.html
3.4.3 编写接⼝
Spring AI已经集成了OpenAI的API,因此我们不需要实现向OpenAI发送请求和接收响应的交互程序了, Spring AI已经实现了这⼀内容,我们只需要通过调⽤SpringAI为我们提供的接⼝即可
package com.spring.ai.controller;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/ds")
public class DeepSeekChatController {
@Autowired
private OpenAiChatModel openAiChatModel;
@GetMapping("/chat")
public String generate(String message) {
return openAiChatModel.call(message);
}
}
测试:http://127.0.0.1:8080/ds/chat?message=你是谁
3.5 接⼊ChatGPT
OpenAI是⼀个⼈⼯智能研究实验室和公司,致⼒于推动⼈⼯智能技术的安全发展和普惠应⽤.ChatGPT是OpenAI开发并发布的核⼼产品之⼀,是基于其⾃研的GPT系列模型构建的对话式AI应⽤.Spring AI ⽀持OpenAI的各种AI语⾔模型.
3.5.1 准备⼯作
⾸先需要使⽤OpenAI创建⼀个API来访问ChatGPT模型。
- 注册账号OpenAI注册⻚⾯:https://auth.openai.com/create-account

- 创建APIkeys,复制⽣成的APIkey,并保存
访问APIKeys⻚⾯,创建APIKeys:https://platform.openai.com/account/api-keys

3.5.2 添加依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
3.5.3 配置API密钥
spring:
ai:
openai:
api-key: sk-your-key
3.5.4 编写接口
package com.spring.ai.controller;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/openai")
public class OpenAIChatController {
@Autowired
private OpenAiChatModel openAiChatModel;
@RequestMapping("/chat")
public String generate(String message) {
return openAiChatModel.call(message);
}
}
本地开发时,即使配置了代理,有时候也⽆法让你的SpringAI应⽤正常请求api,这通常是代理软件⽆法让你的整个系统实现全局代理造成的,你只需要 在启动类 中加⼊下述代码即可。
package com.spring.ai;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringAiApplication {
public static void main(String[] args) {
SpringApplication.run(SpringAiApplication.class,args);
System.setProperty("http.proxyHost","127.0.0.1"); //修改为你代理服务器的 IP
System.setProperty("https.proxyHost","127.0.0.1");
System.setProperty("http.proxyPort","7897"); //修改为你代理软件的端⼝
System.setProperty("https.proxyPort","7897"); //同理
}
}
更多推荐


所有评论(0)