炸裂:SpringAI内置DeepSeek啦!

news/2025/2/12 16:10:44/文章来源:https://www.cnblogs.com/vipstone/p/18711725

好消息,Spring AI 最新快照版已经内置 DeepSeek 了,所以以后项目中对接 DeepSeek 就方便多了。但因为快照版会有很多 Bug,所以今天咱们就来看稳定版的 Spring AI 如何对接 DeepSeek 满血版。

SpringAI和DeepSeek介绍

Spring AI 是 Spring 生态系统中的一个重要项目,旨在将人工智能集成到 Spring 应用程序中,它为 Java 开发者提供了一种便捷的方式来构建、管理和部署 AI 模型。

Spring AI 的核心是解决了 Spring 生态和 AI 的快速集成:将您的企业数据和****APIAI 模型连接起来。

Spring AI 几乎支持所有主流的 AI 模型提供商,例如 Anthropic、OpenAI、Microsoft、Amazon、Google 和 Ollama。支持的功能如下:

  • 聊天
  • 嵌入附件
  • 文本转图片
  • 音频转文本
  • 文本转音频

Spring AI 最新预览版也将集成 DeepSeek 大模型。

DeepSeek 介绍

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

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

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

SpringAI 集成 DeepSeek 步骤如下。

1.环境准备

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

  • JDK 17 或更高版本
  • Maven 或 Gradle 构建工具
  • DeepSeek API Key(可通过官网注册获取),申请地址:https://platform.deepseek.com/usage

2.创建SpringBoot项目

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

3.添加依赖

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

以下是基于 Maven 的依赖配置示例:

<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>
</dependencies>

4.配置文件

在 application.properties 或 application.yml 文件中添加 DeepSeek 的配置信息:

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

其中,api-key 是你在 DeepSeek 官网注册后获取的密钥,base-url 是 DeepSeek API 的服务地址,model 指定使用的模型版本。

DeepSeek模型介绍

DeepSeek 目前支持以下两种模型:

  • deepseek-chat(V3):适用于聊天机器人、智能客服、内容生成等,能够理解和生成日常对话内容。
  • deepseek-reasoner(R1):专为复杂推理任务设计,适合解决需要深度逻辑分析和推理的问题。

5.编写代码

创建一个控制器类,用于处理与 DeepSeek 的交互,以下是一个简单的示例:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api/chat")
public class ChatController {@Autowiredprivate DeepSeekClient deepSeekClient;@PostMappingpublic String chat(@RequestBody String message) {return deepSeekClient.chatCompletion(message).getOutput().getContent();}@GetMapping(value = "/stream", produces = "text/event-stream")public Flux<String> chatStream(@RequestParam String message) {return deepSeekClient.chatFluxCompletion(message).map(response -> response.getOutput().getContent());}
}

在上述代码中,chat 方法用于处理普通的非流式请求,而 chatStream 方法则支持流式响应,能够实时返回 AI 的推理结果。

课后思考:关于流式输出

大模型的响应速度是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户,那么问题来了,想要实现流式结果输出,后端和前端要如何配合?后端要使用什么技术实现流式输出呢?

欢迎评论区给出你的解决答案,文章点赞过 100 咱们公布完整解决思路和具体实现源码哦。

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:DeepSeek、场景题、并发编程、MySQL、Redis、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、JVM、设计模式、消息队列等模块。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openssl生成证书请求时报错:invalid extension string:v3_conf.c:140:name=subjectAltName,section=@alt_names

解决方法: 1. 使用自定义的openssl-ca.cnf openssl req -new -key client.key -out client.csr -subj "/C=cn/ST=nanjing/L=nanjing/O=zte/OU=zte/CN=localhost" -config ./openssl-ca.cnf2. 修改系统的/etc/pki/tls/openssl.cnf 注释掉[ v3_req ]段部分 # [ v3_req…

linux中文件操作相关命令和使用

linux中文件操作相关命令和使用 cat more/less head/tail vi/vim等相关命令 cat 1. 文件查看 cat 文件名 --全部内容显示 -- 好东西 可以用于配置文件查看过滤 cat 文件名 | grep 筛选内容 --内容筛选显示 2. 文件创建并输入初始化文本 -- 新建content.txt 文…

APIPark 新增 AI 大模型负载均衡,APIKey 资源池以及 AI Token 消耗统计等重磅功能!

开发者们好!APIPark V1.4 功能更新给大家带来「负载均衡」、「APIKey 资源池」以及「Token 消耗统计」等重要功能,看看是否能帮助到大家更好地使用 AI 大模型~ V1.4 版本说明新功能 [❤️新增] 新增支持 AI 模型负载均衡:同时接入多款大模型,当原定的 AI 服务商无法访问时,…

活动营销系统

一、整体架构图二、核心业务系统介绍 2.1.接入层统一异常处理逻辑2.2.邀请服务逻辑2.3.权益发放服务2.4.排行榜服务 2.4.1.榜单服务数据结构 数据结构分为两块:配置中心数据,因为排行榜没有后台配置平台,只能将配置数据放到配置中心,具备实时更改配置的能力 数据表,主要是排行榜…

004 条件渲染

1、v-ifv-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回true值的时候被渲染。<p v-if="flag">我是孙猴子</p>data(){return{flag:true}} 2、v-else你可以使用 v-else 指令来表示 v-if 的"else块"<p v-if="flag&quo…

Tinyfox 简易教程之:Hello World!

Tinyfox程序设计系列教程之入门篇一,什么是 Tinyfox: Tinyfox 是一款自带 HTTP 服务器的以 WebApi、WebSocket 及“动态HTML”为核心功能的超轻量级的独立性极强的高性能 Web 应用程序基础框架。 Tinyfox 简单易用,性能强劲,跨平台,既支持 Linux 也支持 Windows,既支持 x…

中电金信:更智能、更精准、更专业,中电金信AI产品全栈接入DeepSeek

短短两周的时间,AI届新星DeepSeek凭借低成本、高性能和开源策略,以“中国速度”席卷全网,逆袭成为全球用户量增速最快的AI模型。作为大模型领域的一匹黑马,DeepSeek为千行百业提供了AI解决方案的新选择。2025年开工首日,中电金信研究院便第一时间在产品平台、智能应用、智…

deepseek基础篇--本地知识库推理

一.Ollama 搜索安装 dmeta-embedding-zh https://ollama.com/shaw/dmeta-embedding-zh dmeta-embedding-zh 是一个仅含 4 亿参数的中文嵌入模型,适用于多种场景。它在 MTEB 基准测试中表现出色,尤其适合语义检索、RAG 和其他 LLM 应用。 安装成功 二、使用工具 Cherry Studi…

认识嵌入式开发需要的设备

认识嵌入式开发需要的设备开发板 Arduino用于快速原型设计和学习嵌入式系统基础树莓派用于学习Linux嵌入式系统和复杂应用开发STM32开发板用于学习ARM Cortex-M系列微控制器的开发ESP32开发板用于学习Wi-Fi和蓝牙等无线通信技术的开发GD32开发板调试工具 示波器观察电信号的波形…

nging Go语言Web管理面板docker-compose部署测试

Nging是一个网站服务程序,可以管理和配置 Caddy 和 Nginx 站点,并附带了实用的周边工具,例如:计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理等。Nging是一个网站服务程序,可以管理和配置 Caddy 和 Nginx 站点,并附带了实用的周边工具,例如:计划任务、…

近端策略优化(PPO)算法的理论基础与PyTorch代码详解

近端策略优化(Proximal Policy Optimization, PPO)算法作为一种高效的策略优化方法,在深度强化学习领域获得了广泛应用。特别是在大语言模型(LLM)的人类反馈强化学习(RLHF)过程中,PPO扮演着核心角色。本文将深入探讨PPO的基本原理和实现细节。 PPO属于在线策略梯度方法的范畴…

定制化训练DeepSeek模型:LoAR、COT推理与SFT技术应用

DeepSeek-R1 模型微调系列DeepSeek-R1 模型微调系列一. 前言介绍本文内容:1.1 项目背景1.2 LoRA和 QLoRA 简介1.3 LLaMA 架构和 Qwen 架构LLaMA 架构Qwen 架构二. 环境准备2.1 Unsloth 安装(显卡版本-暂时不用)2.2 创建Python项目2.3 python 依赖库2.2 LoRA peft 安装2.3 Wa…