> 技术文档 > Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

本篇文章会分基于DeepSeek开放平台上的API,以及本地私有化部署DeepSeek R1模型两种方式来整合使用。
本地化私有部署可以参考这篇博文 全面认识了解DeepSeek+利用ollama在本地部署、使用和体验deepseek-r1大模型

Spring版本选择

根据Spring官网的描述
Spring AI是一个人工智能工程的应用框架,旨在为Java开发者提供一种更简洁的方式与AI交互,减轻在Java业务中接入LLM模型应用的学习成本。目前,Spring AI已经上架到Spring Initializr,开发者可以在https://start.spring.io/上使用并构建相关应用‌。

SpringAI支持接入多种AI服务,如OpenAI、Ollama、Azure OpenAI、Huggingface等,可以实现聊天、embedding、图片生成、语音转文字、向量数据库、function calling、prompt模板、outputparser、RAG等功能‌。

spring ai框架支持Spring Boot版本为 3.2.x and 3.3.x
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek
从SpringBoot 3.x 开始依赖的JDK版本最低是JDK17,所以这里演示整合的代码都是基于spring boot 3.3.8 以及 JDK17

整合DeepSeek API key

深度求索deepseek开放平台申请自己的API key,新用户注册后会赠送10元余额,有效期为一个月。
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

创建一个 API key

保存好自己的API KEY 千万别泄露喽
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek
创建API key后我们可以开始构建SpringBoot工程了,基于springboot 3.4.2版本搭建一个工程。
spring-ai-openai starter:伪装成 OpenAI,DeepSeek 提供了 OpenAI 兼容模式。
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

自动引入依赖:

<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/>  </parent> <groupId>com.example</groupId> <artifactId>demo-deepseek</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo-deepseek</name> <description>demo-deepseek</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>17</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> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.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>

代码

添加了 spring-ai-openai-spring-boot-starter 依赖;Spring AI 为 OpenAI Chat Client 提供了 Spring Boot 自动装配。

OpenAiAutoConfiguration配置类中自动注入了,我们只需要直接注入调用即可。

DeepSeek 其实提供了 OpenAI 兼容模式,只要在请求头里加个api_key,就能假装自己在调 OpenAI。Spring AI 的 openai starter 本质上是通过 RestTemplate 发请求,我们只需要改改 URL 和认证方式。
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

@RestControllerpublic class ChatController { @Resource private OpenAiChatModel 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; }}

修改配置文件

spring: ai: openai: base-url: https://api.deepseek.com/v1 # DeepSeek的OpenAI式端点 api-key: sk-your-deepseek-key-here chat.options: model: deepseek-chat # 指定DeepSeek的模型名称

调用接口测试
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

本地部署调用

如果想要把 DeepSeek 部署在内网服务器,或者你想在本地跑个小模型,可以采用这种方式来在本地部署一个 DeepSeek R1 蒸馏版。

spring-ai-ollama-spring-boot-starter:通过 Ollama 本地部署一个 DeepSeek R1 蒸馏版。

下载并安装

从官方网站下载并安装 Ollama:https://ollama.com

Ollama 可以让你轻松在自己的电脑上运行各种强大的 AI 模型,就像运行普通软件一样简单。

ollama pull deepseek-r1:8bollama list deepseek

更多版本可以在这里查看:https://ollama.com/library/deepseek-r1
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)_springboot deepseek

修改pom,添加依赖

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

修改配置文件

spring: ai: ollama: base-url: http://localhost:11434 chat: model: deepseek-r1:8b # 与本地模型名称对应

实现代码

@RestController@RequestMapping(\"/ai\")public class ChatController { private final ChatClient chatClient; // 构造方法注入 ChatClient.Builder,用于构建 ChatClient 实例 public ChatController(ChatClient.Builder chatClient) { this.chatClient = chatClient.build(); } @GetMapping(\"/chat\") public ResponseEntity<Flux<String>> chat(@RequestParam(value = \"message\") String message) { try { // 调用 ChatClient 生成响应,并以 Flux(响应流)形式返回 Flux<String> response = chatClient.prompt(message).stream().content(); return ResponseEntity.ok(response); } catch (Exception e) { return ResponseEntity.badRequest().build(); } }}

api-key不需要了但是也不能不填,不填会启动报错,模型就配置本地有的模型即可
如果想像网站那样可以一个字一个字的输出,也可以调用chatModel.stream流式输出