SpringBoot整合DeepSeek实现AI对话功能

 更新时间:2025年02月10日 09:15:06   作者:chengpei147  
本文介绍了如何在SpringBoot项目中整合DeepSeek API和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了人工智能模型的集成,感兴趣的小伙伴跟着小编一起来看看吧

本篇博文会分为DeepSeek开放平台上的API,以及本地私有化部署DeepSeek R1模型两种方式来整合使用,本地化私有部署可以参考这篇博文:本地私有化部署DeepSeek模型的详细教程_其它综合_脚本之家

Spring AI

Spring AI 是由 Spring(一个广泛使用的开源框架)推出的一个新项目,旨在将 人工智能(AI) 集成到 Spring 应用程序中。Spring 是一个支持 Java 开发的框架,而 Spring AI 使得 Java 开发人员能够更容易地构建、管理和集成人工智能模型和机器学习功能。
我们这里直接使用Spring官方提供的相关依赖来整合,官网地址:https://docs.spring.io/spring-ai/reference/api/chat/deepseek-chat.html

本篇博文主要就是采用的spring ai提供的两个starter依赖进行配置整合,分别是spring-ai-openai-spring-boot-starterspring-ai-ollama-spring-boot-starter

版本依赖

根据官网的描述,spring ai框架支持的SpringBoot版本应该是3.2.x 和 3.3.x

而SpringBoot 3.2.x 和 3.3.x依赖的JDK版本最低应该也是JDK17,所以这里演示整合的代码都是基于spring boot 3.3.8 以及 JDK17

整合DeepSeek API key

进入DeepSeek开放平台页面,注册账号登录后,可以创建API key,新账号有赠送的10元额度,具体价格可以参考这里:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/

有了API key后我们可以开始构建工程了,基于springboot 3.3.8版本搭建一个工程,引入以下依赖:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

增加以下配置:

spring:
  ai:
    openai:
      base-url: https://api.deepseek.com
      api-key: sk-xxxxxxxxxxxxxxxxx
      chat:
        options:
          model: deepseek-chat

项目会自动装配OpenAiAutoConfiguration,就可以在需要的地方注入OpenAiChatModel代码如下:

@Resource
private OllamaChatModel chatModel;

private final List<Message> chatHistoryList = new ArrayList<>();

@PostConstruct
public void init() {
	chatHistoryList.add(new SystemMessage("You are a helpful assistant."));
}
    
@GetMapping("/chat")
public ChatResponse test(String message) {
    chatHistoryList.add(new UserMessage(message));
    Prompt prompt = new Prompt(chatHistoryList);
    ChatResponse chatResponse = chatModel.call(prompt);
    if (chatResponse.getResult() != null && chatResponse.getResult().getOutput() != null) {
        chatHistoryList.add(chatResponse.getResult().getOutput());
    }
    return chatResponse;
}

整合本地化部署的DeepSeek R1模型

本地化私有部署可以参考这篇博文:本地私有化部署DeepSeek模型的详细教程_其它综合_脚本之家部署完成后同样是基于springboot 3.3.8版本搭建一个工程,引入的依赖就换为:

<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>

增加以下配置:

spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:1.5b

项目会自动装配OllamaAutoConfiguration,就可以在需要的地方注入ollamaChatModel
代码跟使用spring-ai-openai-spring-boot-starter几乎一样,只是注入的ChatModel类换成了OllamaChatModel
而且实测本地化部署也可以使用spring-ai-openai-spring-boot-starter,修改配置文件如下:

spring:
  ai:
    openai:
      base-url: http://localhost:11434
      api-key: xxxxxxx
      chat:
        options:
          model: deepseek-r1:1.5b

其他也就一样了,只是把地址换成了本地ollama的服务地址,api-key不需要了但是也不能不填,不填会报错,模型就配置本地有的模型即可
如果想像网站那样可以一个字一个字的输出,也可以调用chatModel.stream流式输出爱的回复

到此这篇关于SpringBoot整合DeepSeek实现AI对话功能的文章就介绍到这了,更多相关SpringBoot DeepSeek实现AI对话内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot集成阿里云短信的实战指南

    SpringBoot集成阿里云短信的实战指南

    在SpringBoot项目中集成阿里云短信服务,核心是完成一系列前置申请,并调用其官方SDK发送短信,下面小编就和大家详细介绍一下具体的实现方法吧
    2026-01-01
  • mybatis-plus实现逻辑删除的示例代码

    mybatis-plus实现逻辑删除的示例代码

    本文主要介绍了mybatis-plus实现逻辑删除的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 解决JDK8的ParallelStream遍历无序的问题

    解决JDK8的ParallelStream遍历无序的问题

    这篇文章主要介绍了解决JDK8的ParallelStream遍历无序的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Jmeter固定定时器的使用详解

    Jmeter固定定时器的使用详解

    jmeter提供了多种定时器以便于我们进行接口的测试,你知道jmeter提供的定时器有哪些吗,本文就详细的介绍了Jmeter固定定时器的使用,感兴趣的可以了解一下
    2021-11-11
  • Mybatis-Plus如何实现时间日期的比较

    Mybatis-Plus如何实现时间日期的比较

    文章主要讨论了在使用Mybatis-Plus进行数据库查询时,如何正确处理日期和时间的比较,作者强调了使用数据库函数进行比较的重要性,避免了直接将时间转换为字符串进行比较的错误,同时,作者建议在需要比较天数时使用LocalDate
    2024-11-11
  • java 实现图片圆角处理、背景透明化

    java 实现图片圆角处理、背景透明化

    这篇文章主要介绍了java 实现图片圆角处理、背景透明化,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • JavaWeb简单文件上传流程的实战记录

    JavaWeb简单文件上传流程的实战记录

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,下面这篇文章主要给大家介绍了关于JavaWeb实现简单文件上传流程的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Mybatis-Plus中resultType的使用及说明

    Mybatis-Plus中resultType的使用及说明

    MyBatis中resultType用于指定查询结果的返回类型,可以是JavaBean、实体类或基本类型如String,此外,MyBatis还支持将查询结果封装成Map,单条数据时可以将{表字段名,结果值}封装到Map中,多条数据时可以将{表中某一字段名,JavaBean}方式封装到Map中
    2025-12-12
  • 用JAVA实现一套背压机制

    用JAVA实现一套背压机制

    背压依我的理解来说,是指订阅者能和发布者交互,可以调节发布者发布数据的速率,解决把订阅者压垮的问题,这篇文章主要介绍了用JAVA自己实现一套背压机制,需要的朋友可以参考下
    2023-06-06
  • Spring Boot 与微服务入门实战详细总结

    Spring Boot 与微服务入门实战详细总结

    本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战,强调其在简化开发流程、支持分布式系统及云原生部署方面的优势,本文给大家介绍Spring Boot 与微服务详细总结,感兴趣的朋友一起看看吧
    2025-07-07

最新评论