SpringBoot + DeepSeek 实战
完整项目已经放到文末,自行下载使用
DeepSeek 是国内研发的一款大语言模型(LLM),在代码理解和生成方面表现突出,甚至在一些测试中超过了 GPT-4。相比其他模型,它的本地化适配更好,最重要的是,它提供的 API 无需复杂网络环境。
首先应该没人不知道deepseek是什么吧???所以我直入主题,通过今天的学习,我们可以熟练掌握如何使用 Spring Boot 集成 DeepSeek 搭建一个 AI 智能问答服务,让用户可以输入问题,然后调用 DeepSeek API 进行智能回答。
一、查阅Spring官网,了解Spring是如何解决整合AI的
Spring Al是一个用于人工智能工程的应用程序框架。它的目标是将Spring生态系统设计原则(如可移植性和模块化设计)应用于人工智能领域,并推广使用POJO作为人工智能领域应用程序的构建块。
Spring Al的核心是解决ai集成的基本挑战:将企业数据和api与A模型连接起来。
(白话文:说白了,Spring Al就是一个Spring官方为了我们更便捷、更简单的去集成不同人工智能模型的框架
二、功能整合
2.1、找到具体开发文档,了解如何整合
由上图我们得知,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的,这里我们简单说下Spring AI和openAI的关系,方便大家知其所以然:
Spring AI 是 Spring 团队推出的用于在 Spring 应用程序中集成人工智能功能的框架,而 OpenAI 是一家知名的人工智能研究和技术公司,他拥有GPT 系列模型:从 GPT-1 到 GPT-4
集成关系
Spring AI 支持集成 OpenAI 的服务和模型。借助 Spring AI 提供的 API 和抽象层,开发者能够在基于 Spring 的项目里轻松地调用 OpenAI 的强大人工智能能力。
开发便利性
Spring AI 为开发者提供了简化的编程模型和统一的接口,使得在 Spring 项目中使用 OpenAI 服务变得更加便捷。具体表现为:
简化配置:Spring AI 封装了与 OpenAI 服务进行交互所需的复杂配置,开发者只需进行少量的配置,即可快速集成 OpenAI 服务。
统一抽象:它提供了统一的抽象层,将不同的 AI 服务提供商(包括 OpenAI)的 API 进行了抽象,使得开发者可以以一致的方式使用不同的 AI 功能,降低了学习成本和开发难度。
(白话文总结:说白了,Spring Al通过简单的配置,就可以实现与OpenAI的交互,使得我们更简单的去访问OpenAI服务,并且SpringAI所提供的api可以实现对不同AI模型的访问)
我们去deepseek官网,查看deepseek是如何描述与其对接的呢?
到这里,我们就明白了,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的。
2.2、整合
2.2.1、技术栈介绍
SpringBoot:用于快速构建 Java 后端服务。
Deepseek:高性能的深度学习推理框架,用于问答模型的推理。
Spring AI:Spring 生态中的 AI 工具包,用于简化 AI 模型的集成。
Postman:用于测试和调用 API 接口。
2.2.1、环境准备
在开始之前,请确保你已经完成以下准备工作:
安装 JDK 17 或更高版本。
安装 Maven:用于构建和管理项目依赖。
安装 Postman:用于测试 API 接口。
准备 Deepseek 模型:确保你已经有一个训练好的问答模型(如 qa_model.ds)。
2.2.3、创建 Spring Boot 项目
过程省略;
2.2.4、引入依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
</dependencies>
需要注意的是:
因为目前 Spring AI 还没有发布正式版,在 Maven 中央仓库中还找不到正式依赖,所以需要再添加 spring-milestones 和 spring-snapshots 仓库。
2.2.5、添加 DeepSeek 配置参数
spring:
ai:
openai:
api-key: "sk-xxxxxx" #读取自己的
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
temperature: 0.5
需要注意的是:
前提需要去deepseek官网创建API key,并且需要完成充值(不充值调用接口会报错),具体金额自己看,最小的就行,反正是测试
2.2.6、集成 DeepSeek API
上面提到,Spring AI 中的 DeepSeek API 目前还是走的 OpenAI 客户端,所以,要使用 DeepSeek,只需要在 API 中需要注入一个 OpenAiChatModel 客户端实例来发起请求。
参考代码如下:
@RestController
public class ChatController {
private final OpenAiChatModel chatModel;
@Autowired
public ChatController(OpenAiChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public String generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return this.chatModel.call(message);
}
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return this.chatModel.stream(prompt);
}
}
普通聊天和流式聊天的区别是:
普通聊天是一次性返回结果,流式聊天是几个字几个字的返回,流式聊天返回的结果需要前端框架进行封装。
这样,我们的 Spring Boot + DeepSeek API 智能问答接口就完成了。
2.2.7、功能测试
启动 Spring Boot 项目后,我们可以通过 Postman 或浏览器访问:
本文完整示例代码已上传 Gitee:
https://gitee.com/zw_fky/springboot_ai_deepseek.git
赶紧试试吧,感受 AI 的魅力吧!
本篇完结