Skip to content

从0到1:用Spring Boot+AI玩转DeepSeek智能对话系统

一、运行环境与前提条件

  • 依赖组件版本说明
组件说明版本
JavaSpring AI 基于 Spring Boot 3.x 开发,因此JDK版本要求为17及以上17+
MavenMaven3.9+
Spring BootSpring AI 支持 Spring Boot 版本为 3.4.x3.4.x+
Spring AISpring AI1.0.0-M7

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-urlapi-keymodel 即可。

m7-001

三、实战案例

案例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("你好,你是谁?"));
}

运行结果如下:

001

案例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("你好,你是谁?"));
}

运行结果如下: 002

案例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);
    }
}

运行结果如下: 003

案例4:大模型多轮对话

案例5:回话记忆

源码下载

参考