Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

2025-03-06 17:50

本文主要是介绍Spring AI集成DeepSeek三步搞定Java智能应用的详细过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简...

DeepSeek 作为一款卓越的国产 AI 模型,越来越多的公司考虑在自己的应用中集成。对于 Java 应用来说,我们可以借助 Spring AI 集成 DeepSeek,非常简单方便!

DeepSeek 介绍

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。DeepSeek 最新版本 R1 采用了“思维链”技术,能够展示完整的推理过程,使其在复杂推理任务上表现出色,甚至在某些方面可以与 OpenAI 的 O1 模型相媲美。

DeepSeek 身上的标签有很多,其中最具代表性的标签有以下两个:

  • 低成本(不挑硬件、开源、使用简单无需复杂提示javascript词)。
  • 高性能(推理能力极强、回答准确)。

Spring AI 是什么?

Spring AI 从著名的 python 项目(如 LangChain 和 LlamaIndex)中汲取灵感,解决了 AI 集成中的核心挑战:将企业数据和 API 与 AI 模型连接起来。

你可以将 Spring AI 看作是一个适配器或者高层封装,用来帮你更方便地集成和使用不同的 AI 模型。它的核心目标是简化开发流程,降低使用多种 AI 服务时的复杂性,同时提升代码的可维护性和灵活性。

Spring AI 的主要功能包括

统一 API:Spring AI 提供了一套统一的接口,用来调用不同的 AI 模型(例如 OpenAI、Hugging Face、DeepSeek、Gemini 等)。开发者只需要学习 Spring AI 的 API,就能无缝对接各种 AI 服务,而无需深入了解各家服务的底层实现和差异。

简化配置:Spring AI 提供了自动化的配置管理,例如 API 密钥、模型参数等。你只需要简单地在配置文件中定义所需的参数,Spring AI 就会自动完成初始化和连接,避免繁琐的手动配置。

易于切换:Spring AI 的抽象设计使得更换 AI 提供商变得非常简单。开发者只需要修改少量配置,而不用修改业务代码,从而实现灵活的 AI 服务切换,适应不同场景需求。

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

1、环境准备

在开始集成之前,python确保你的开发环境满足以下要求:

  • JDK17 或更高版本
    • 高版本才能使用SpringAI,才能调用deepseek;
  • DeepSeekAPIKey(可通过官网注册获取),申请地址:https://platform.deepseek.com/usage

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

使用Spring Initializr 或其他工具创建-一个新的SpringBoot项目,确保版本为3.2.x或更高。

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

2、构建项目

2.1、pom依赖

在项目的pom.XML文件中添加SpringAI和DeepSeek的相关依赖。

以下是基于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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.4.2</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <groupId>com.tyron</groupId>
  <artifactId>Spring-AI</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Spring-AI</name>
  <description>Spring-AI</description>
  <url/>
  <properties>
    <java.version>21</java.version>
    <spring-ai.version>1.0.0-M5</spring-ai.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <grouChina编程pId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframe编程work.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-bom</artifactId>
        <version>${spring-ai.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <annotationProcessorPaths>
            <path>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </path>
          </annotationProcessorPaths>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok</artifactId>
            </exclude>
          </excludes>
        </configuration>
      </plugin>
        </plugins>
    </build>
</project>

2.2、配置文件

#必填项
spring.ai.openai.api-key=your-api-key
spring.ai.openai.base-url=https://api.deepseek.com
#模型选择(示例使用对话模型)
spring.ai.openai.chat.options.model=deepseek-chat

2.3、接口定义

@RestController()
@RequestMapping("/ai")
public class ChatController {
    private OpenAiChatModel openAiChatModel;
    @Autowired
    public ChatController(OpenAiChatModel openAiChatModel) {
        this.openAiChatModel = openAiChatModel;
    }
    /**
     * 生成
     *
     * @param message 输入信息
     * @return 输出信息
     */
    @GetMapping("/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "你是谁?") String message) {
        return Map.of("generation", this.openAiChatModel.call(message));
    }
}

3、方法调用

接口报错

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

充值后,方可调用

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

小天有话说

本文中使用 spring-ai-openai starter,只要在请求头里加个api_key,就能假装自己在调 OpenAI。Spring AI 的 openai starter 本质上是通过 RestTemplate 发请求,访问 DeepSeek API。

除此之外还可以通过本地化部署的方式进行调用,Spring Cloud Alibaba AI 中也支持这种方式,并且官网上提供了详细的方法:https://java2ai.com/blog/spring-ai-alibaba-ollama-deepseek/ 。

大模型的响应速度是很慢的,为了提升用户体验,流式输出便很有必要了,后续文章会进行样例说明。

题外话

在 2025 年,AI 已深度融入社会各领域,成为推动发展的关键力量。

技术层面,AI 模型市场呈现多元竞争格局,通过多模态融合和轻量化部署实现效率跃升。DeepSeek等国产模型通过架构创新将训练成本降低,推动AI应用从“工具辅助”向“数字劳动力”转型。

在应用领域,AI 的硬件应用不断拓展,特别是在机器人技术方面,像自动驾驶汽车,以及自主无人机、仓库和制造业机器人等。此外,智能语音助手变得更加智能,能处理复杂查询,根据用户习惯动态管理日程并做出前瞻性建议。

展望未来,AI 将朝着多模态、更个性化、更智能的方向发展。多模态 AI 将整合文本、图像、音频和视频等多源数据,实现更自然的人机交互和更深入的理解。在生成式 AI 方面,除了图像和视频生成,还将拓展到更多创意领域,如音乐创作、文学创作等,成为创作者不可或缺的工具。

对程China编程序员群体呈现“双刃剑”效应:一方面,AI工具通过代码生成、智能调试和个性化学习显著提升效率,例如Cursor、DeepSeek等工具能辅助快速开发项目,甚至帮助新手理解复杂代码;另一方面,初级程序员面临重复性任务被AI替代的压力,需向全栈开发或AI系统设计等深度领域转型。同时,AI推动工作方式革新,程序员角色从编码执行者转向任务规划者,通过多模态大模型实现跨语言协作和智能决策,成为人机协同的“技术赋能者”。整体而言,AI既是生产力跃升的催化剂,也是职业能力重构的驱动力,要求程序员在驾驭技术的同时强化创新思维与跨领域整合能力。

到此这篇关于Spring AI集成DeepSeek:三步搞定Java智能应用的文章就介绍到这了,更多相关Spring AI集成DeepSeek内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Spring AI集成DeepSeek三步搞定Java智能应用的详细过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:http://www.cppcns.com/ruanjian/java/703141.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1153660

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例