这款开源组件太惊艳!Spring Boot仅需一行代码,轻松接入DeepSeek

开发 前端
deepseek4j 是面向 DeepSeek 推出的 Java 开发 SDK,支持 DeepSeek R1 和 V3 全系列模型。提供对话推理、函数调用、JSON结构化输出、以及基于 OpenAI 兼容 API 协议的嵌入向量生成能力。

环境:SpringBoot3.4.

1. 简介

本篇文章将介绍一个非常不错的开源组件deepseek4j。

deepseek4j 是面向 DeepSeek 推出的 Java 开发 SDK,支持 DeepSeek R1 和 V3 全系列模型。提供对话推理、函数调用、JSON结构化输出、以及基于 OpenAI 兼容 API 协议的嵌入向量生成能力。通过 Spring Boot Starter 模块,开发者可以快速为 Spring Boot 2.x/3.x 以及 Solon 等主流 Java Web 框架集成 AI 能力,提供开箱即用的配置体系、自动装配的客户端实例,以及便捷的流式响应支持。

特性

  • 完整的 DeepSeek API 支持,支持返回思维链和会话账单
  • 支持自定义连接参数、代理配置、超时设置、请求响应日志
  • Reactor 响应式支持,简化流式返回开发

2. 实战案例

2.1 环境准备

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
  <groupId>io.github.pig-mesh.ai</groupId>
  <artifactId>deepseek-spring-boot-starter</artifactId>
  <version>1.4.5</version>
</dependency>

基本配置

deepseek:
  api-key: sk-xxxooo
  model: deepseek-reasoner
  base-url: https://api.deepseek.com

说明:deepseek-reasoner 是 DeepSeek 最新推出的推理模型 DeepSeek-R1。

2.2 基本使用

如下示例使用流式返回结果:

private final DeepSeekClient deepSeekClient;
public ChatController(DeepSeekClient deepSeekClient) {
  this.deepSeekClient = deepSeekClient;
}
@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chat(String prompt) {
  return deepSeekClient.chatFluxCompletion(prompt);
}

访问:http://localhost:8080/chat?prompt=使用Java实现访问者模式

输出结果:

图片图片

上图是推理内容:

图片图片

上图是最终答案。

2.3 进阶配置

@GetMapping(value = "/chat/advanced", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chatAdvanced(String prompt) {
  ChatCompletionRequest request = ChatCompletionRequest.builder()
      // 模型选择,支持 DEEPSEEK_CHAT、DEEPSEEK_REASONER 等
      .model(ChatCompletionModel.DEEPSEEK_REASONER)
      // 添加用户消息
      .addUserMessage(prompt)
      // 设置最大生成 token 数,默认 2048
      .maxCompletionTokens(1000).build();
  return deepSeekClient.chatFluxCompletion(request);
}

2.4 同步输出 (非实时响应流)

@Resource
private DeepSeekProperties deepSeekProperties ;
@GetMapping(value = "/sync/chat")
public ChatCompletionResponse syncChat(String prompt) {
  ChatCompletionRequest request = ChatCompletionRequest.builder()
      .model(deepSeekProperties.getModel())
      .addUserMessage(prompt).build();
  return deepSeekClient.chatCompletion(request).execute();
}

注意:不推荐使用同步阻塞调用方式,R1模型推理耗时较长易导致客户端连接超时,且响应延迟会影响用户体验。

2.5 SSE实现

该开源组件还提供了一个基于SSE的DeepSeek调试页面。

图片图片

该sse.html是基于vue3实现的,我们可以非常方便的将其中数据处理逻辑copy到自己的项目中使用。

2.6 联网搜索

@GetMapping(value = "/search/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chatV3(String prompt) {
  // 指定联网搜索参数
  SearchRequest searchRequest = SearchRequest.builder()
      .enable(true)
      .freshness(FreshnessEnums.ONE_DAY)// 一天内的数据
      .summary(true) // 返回摘要
      .count(10) // 返回10条
      .page(1) // 第一页
      .build();
  return deepSeekClient.chatSearchCompletion(prompt, searchRequest);
}

配置:

deepseek:
  search-api-key: sk-xxxooo

内部使用的 "博查bochaai" 搜索,你需要到平台上申请api-key;需要充值。 

https://open.bochaai.com/api-keys

2.7 详细配置

配置项

默认值

说明

deepseek.base-url

https://api.deepseek.com/v1

DeepSeek API 的基础 URL

deepseek.api-key

-

API 密钥,必填项

deepseek.model

-

使用的模型名称

deepseek.default-system-prompt

true

是否使用默认的系统提示词,默认开启


日志配置

配置项

默认值

说明

deepseek.log-requests

false

是否记录请求日志

deepseek.log-responses

false

是否记录响应日志

deepseek.log-level

DEBUG

日志级别

网络配置

配置项

默认值

说明

deepseek.proxy

-

代理设置

deepseek.connect-timeout

-

连接超时时间(秒)

deepseek.read-timeout

-

读取超时时间(秒)

deepseek.call-timeout

-

调用超时时间(秒)


责任编辑:武晓燕 来源: Springboot实战案例源码
相关推荐

2009-05-20 09:56:38

DNS解析故障

2020-10-24 20:00:17

Windows 10Windows操作系统

2010-04-01 19:03:12

微软

2011-03-18 14:13:56

安全意识安全培训

2009-09-18 09:59:56

2011-09-15 12:48:52

2009-02-17 20:28:47

开源手机操作系统

2021-12-13 22:57:03

加密货币比特币金融

2009-09-14 09:38:43

鲍尔默员工

2019-09-11 09:10:02

区块链比特币加密货币

2009-02-13 09:16:46

雅虎阿里巴巴业务调整

2012-05-23 14:22:12

全程移动互联网普及工程

2023-09-15 14:19:56

开发者大会

2022-06-23 14:25:02

人工智能高考志愿填报

2021-04-30 15:16:09

数字化

2021-03-25 06:44:45

Windows10 操作系统微软

2010-03-03 08:39:48

Windows 7语言包

2012-05-28 00:00:00

HTML5

2009-05-25 16:19:25

技术周刊51CTODNS解析故障
点赞
收藏

51CTO技术栈公众号