从0到1:用Spring Boot+AI玩转DeepSeek智能对话系统
一、运行环境与前提条件
- 依赖组件版本说明
组件 | 说明 | 版本 |
---|---|---|
Java | Spring AI 基于 Spring Boot 3.x 开发,因此JDK版本要求为17及以上 | 17+ |
Maven | Maven | 3.9+ |
Spring Boot | Spring AI 支持 Spring Boot 版本为 3.4.x | 3.4.x+ |
Spring AI | Spring AI | 1.0.0-M7 |
获取 DeepSeek API-KEY
获取DeepSeek API-KEY,请参考DeepSeek官网「获取DeepSeek API-KEY」
二、创建 Spring Boot 项目
创建 spring-ai-m7-deepseek-example-001
Spring Boot 项目。
- 引入依赖
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 基于Spring Boot 自动配置集成-->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
- 为什么要引入openai的依赖呢?
因为 DeepSeek 的 API 在设计上与 OpenAI 的接口高度兼容,包括请求格式、响应结构以及认证方式(如:api-key 请求头),因此 Spring AI
通过重用现有的 OpenAI 客户端与 DeepSeek AI 集成,我们只需修改 base-url
、api-key
和 model
即可。
三、实战案例
案例1: 基于 Spring Boot 自动配置集成
引入Starter
依赖
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
</dependency>
参数配置
properties
spring.ai.openai.api-key=sk-d4dde90f75924ef1ad645c6879sssee
spring.ai.openai.base-url=https://api.deepseek.com
spring.ai.openai.chat.options.model=deepseek-chat
yaml
spring:
ai:
openai:
api-key: sk-d4dde90f75924ef1ad645c6879sssee
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
大模型对话
java
@Autowired
private ChatModel chatModel;
@Test
void chat() {
System.out.println(chatModel.call("你好,你是谁?"));
}
运行结果如下:
案例2:基于手动配置集成
依赖管理
将 spring-ai-starter-model-openai
依赖替换为 spring-ai-openai
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai</artifactId>
</dependency>
创建 ChatModel
java
@Bean
public ChatModel chatModel() {
return OpenAiChatModel.builder()
.openAiApi(OpenAiApi.builder()
.baseUrl("https://api.deepseek.com")
.apiKey("API KEY")
.build())
.defaultOptions(OpenAiChatOptions.builder()
.model("deepseek-chat")
.build())
.build();
}
API KEY
替换成自己在DeepSeek
官网创建的API-KEY
model
可以使用deepseek-chat
(DeepSeek-V3) 或deepseek-reasoner
(开源的DeepSeek-R1
)。
大模型对话
java
@Autowired
private ChatModel chatModel;
@Test
void chat() {
System.out.println(chatModel.call("你好,你是谁?"));
}
运行结果如下:
案例3:大模型流式对话
基于SSE(Server-Sent Events)协议实现大模型内容流式返回,通过服务器向客户端持续推送数据流,从而实现低延迟、实时的内容传输。
大模型对话
java
@RestController
public class ChatController {
private final ChatModel chatModel;
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping(value = "/chat", produces = "text/event-stream")
public Flux<String> chat(@RequestParam("message") String message) {
return chatModel.stream(message);
}
}
运行结果如下: