首页 > 编程语言 >SpringBoot接入DeepSeek大模型全流程

SpringBoot接入DeepSeek大模型全流程

来源:互联网 2026-07-22 08:07:03

在SpringBoot3.4.4项目中,使用JDK17或21,整合Hutool工具类与Knife4j接口文档依赖,通过SpringAI框架配置DeepSeekAPI与ChatClient组件,实现基于内存的会话记忆功能,支持多会话隔离与上下文交互,提升对话连贯性与智能体验,实现高效多轮对话管理,适用于智能客服等场景。

一、基础环境准备

在正式开始之前,需要先准备好基础环境,这直接决定了后续开发的顺畅度。

  • JDK 必须选择 17 或 21,没有商量的余地。为什么非这两个版本不可?因为项目底层使用的是最新版 Spring Boot 3 和 Spring AI 框架,它们对这两个版本的支持最为完善。

推荐优先考虑 21 版本。该版本引入了虚拟线程,能够显著提升性能,让并发处理更加轻量高效。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

二、新建项目

打开 IDEA,新建一个项目,选择 Spring Initializr 模板。需要注意,确保 Server URL 指向 https://start.spring.io/,避免选择错误导致无法拉取合适的模板。

Java 版本直接选择 21 即可。接下来,Spring Boot 版本选择 3.4.4。在勾选依赖时,可以按需添加,例如 Spring Web 和 Lombok 等常用依赖。如果后续需要修改,直接通过修改 Maven 配置来添加依赖也是完全可行的。

点击创建,一个 Spring Boot 项目就生成了。接下来需要等待 Maven 将依赖下载完毕。如果遇到 Lombok 依赖报错,可以手动在 pom.xml 中指定其版本。

小提示:Lombok 版本可以这样指定:


    org.projectlombok
    lombok
    1.18.36
    true

三、整合依赖

项目骨架搭建完成后,可以根据实际需求整合一些常用的开发依赖。这里以 Hutool 工具库和 Knife4j 接口文档为例,将它们集成进来。

1、Hutool 工具库

Hutool 在 Java 圈中是非常主流的工具类库,几乎涵盖了日常开发中会用到的所有功能,例如字符串处理、日期操作、文件操作、加解密、反射、正则匹配等。引入方式也很简单,在 pom.xml 中添加以下依赖即可:


    cn.hutool
    hutool-all
    5.8.37

2、Knife4j 接口文档

Knife4j 可以看作是 Swagger 的增强版,它提供了更美观、更易用的 API 文档界面,支持动态参数调试、分组文档等实用功能。引入时需要注意,我们使用的是 Spring Boot 3.x,因此需要使用对应的依赖。

1)在 pom.xml 中添加依赖:


    com.github.xiaoymin
    knife4j-openapi3-jakarta-spring-boot-starter
    4.4.0

2)新建一个 controller 包,用于存放 API 接口。先编写一个健康检查接口,方便后续验证接口文档是否正常引入:

@RestController
@RequestMapping("/health")
public class HealthController {

  @GetMapping("/check")
  public String checkHealth(){
    return "OK";
  }
}

3)在 application.yml 中配置接口文档,指定扫描 controller 包:

server:
  port: 8080
  servlet:
    context-path: /api
######################################################
############          接口文档配置           #####################
######################################################
# 访问地址   ${server.servlet.context-path}/doc.html
springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
  api-docs:
    path: /v3/api-docs
  group-configs:
    - group: 'default'
      paths-to-match: '/**'
      packages-to-scan: com.qianliuliang.love.controller # 配置扫描哪些包的接口要加入到文档
# knife4j config
knife4j:
  enable: true
  setting:
    language: zh_cn

4)启动项目,访问 http://localhost:8080/api/doc.html,如果能看到接口文档页面,说明配置成功。

如果是开发一个完整的项目,除了引入依赖,还需要编写一些通用的基础代码,例如自定义异常、响应包装类、全局异常处理器、请求包装类、全局跨域配置等。这些是项目的“骨架”,能让后续开发更规范。

5)最后,在接口文档页面直接发起调试,如果成功返回 “OK”,说明项目初始化没有问题。

SpringBoot接入DeepSeek大模型全流程

四、大模型接入

这里使用 Spring AI 来对接 DeepSeek 模型,需要提前准备好 DeepSeek 的 ApiKey。

1)在 pom.xml 中引入依赖:

 

    org.springframework.ai
    spring-ai-openai-spring-boot-starter

2)前往 DeepSeek 官网申请一个 APIKey。官网地址是 https://www.deepseek.com/。操作步骤很直观:

点击 “API开放平台” 进入。

SpringBoot接入DeepSeek大模型全流程

依次点击,找到 “创建API key” 的按钮。

SpringBoot接入DeepSeek大模型全流程

创建好的 API key 务必妥善保管,不要提交到远端仓库,避免泄露。

3)在 application.yml 中添加模型配置:

spring:
  application:
    name: AI_LOVE
  #ds模型配置
  ai:
    openai:
      api-key: 你的apikey
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat

将 “你的apikey” 替换成刚才申请到的 key。

4)配置 ChatClient 的 Bean。首先在项目中创建一个名为 config 的包,然后在这个包下新建一个配置类,内容如下:

package com.qianliuliang.love.config;

import com.qianliuliang.love.advisor.MyLoggerAdvisor;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.ChatMemory;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * chatClient bean
 */
@Configuration
public class Client {


    /**
     * 基于内存会话记忆的  client
     *
     * @param openAiChatModel
     * @return
     */
    @Bean
    public ChatClient chatClientWithChatMemory(OpenAiChatModel openAiChatModel) {
        // 基于内存的会话记忆,可实现上下文记忆会话
        ChatMemory chatMemory = new InMemoryChatMemory();
        return ChatClient.builder(openAiChatModel)
                .defaultSystem("你是一个智能恋爱助手!名字叫LoveDD") // 系统提示词
                .defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory),
                        new MyLoggerAdvisor()) // 自定义日志
                .build();
    }

}

接下来,创建一个简单的对话类 SimpleChat,用于与大模型进行交互:

import lombok.extern.slf4j.Slf4j;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 简单会话
 */
@Slf4j
@Component
public class SimpleChat {

    @Autowired
    private ChatClient chatClient; 

    /**
     * 普通文本会话
     *
     * @param msg 用户消息
     * @param chatId 会话id
     * @return
     */
    public String doChatWithString(@RequestParam String msg, String chatId) {
        ChatResponse chatResponse = chatClient.prompt()
                .advisors(advisorSpec ->
                        advisorSpec.param("chat_memory_conversation_id", chatId) //会话id/聊天室id
                        .param("chat_memory_response_size", 10))// 支持10轮会话
                .user(msg)
                //.advisors(new SimpleLoggerAdvisor())//日志打印
                .call()
                .chatResponse();
        return chatResponse.getResult().getOutput().getText();// 返回与大模型的对话的内容
    }
}

然后,创建一个 Controller 来暴露接口:

import com.qianliuliang.love.chat.SimpleChat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/chat")
public class ChatController {


    @Autowired
    private SimpleChat simpleChat;

    /**
     * 普通文本会话
     *
     * @param msg
     * @param chatId
     * @return
     */
    @PostMapping("/doChatWithString")
    public String doChatWithString( String msg, String chatId) {
        return simpleChat.doChatWithString(msg, chatId);
    }
}

最后,重启项目,测试效果。在会话ID为1的聊天室中,告诉大模型 “我是六两”。

SpringBoot接入DeepSeek大模型全流程

接着,切换到会话ID为2的聊天室,询问大模型 “我是谁”。此时大模型会表示不知道,因为这是两个不同的聊天室,信息不互通。

SpringBoot接入DeepSeek大模型全流程

再回到会话ID为1的聊天室,询问同样的问题 “我是谁”。此时大模型会准确回答 “你是六两”,因为在聊天室1中已经告知过它。这说明记忆功能生效,且会话隔离效果良好。

SpringBoot接入DeepSeek大模型全流程

至此,整个接入流程完成。以上便是在SpringBoot项目中接入DeepSeek大模型的完整流程。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。