java简单实现请求deepseek
1.deepseek的api创建
deepseek官网链接
点击右上API开放平台后找到API keys 创建APIkey:



注意:创建好的apikey只能在创建时可以复制,要保存好
2.java实现请求deepseek
使用springboot+maven
2.1 pom文件:
<?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.demo</groupId><artifactId>deepseek-java</artifactId><version>0.0.1-SNAPSHOT</version><name>deepseek-java</name><description>Demo project for Spring Boot</description><properties><java.version>21</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20231013</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>maven-ali</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>
2.2 json转化文件:
参数可以参考DeepSeek API 文档
import org.json.JSONArray;
import org.json.JSONObject;/*** @Description:自定义json转化* @Author:* @Date: 2025/2/20* @Version: v1.0*/
public class JsonExample {/*** toJson* @param msg 你要输入的内容* @param model 模型类型 例如 deepseek-chat、deepseek-reasoner* @return 组装好的json数据*/public static String toJson(String msg,String model){// 创建JSON对象JSONObject json = new JSONObject();// 创建messages数组JSONArray messages = new JSONArray();// 添加第一个messageJSONObject systemMessage = new JSONObject();systemMessage.put("content", "You are a helpful assistant");systemMessage.put("role", "system");messages.put(systemMessage);// 添加第二个messageJSONObject userMessage = new JSONObject();userMessage.put("content", msg);userMessage.put("role", "user");messages.put(userMessage);// 将messages数组添加到JSON对象json.put("messages", messages);// 添加其他字段json.put("model", model);json.put("frequency_penalty", 0);json.put("max_tokens", 2048);json.put("presence_penalty", 0);// 添加response_format对象JSONObject responseFormat = new JSONObject();responseFormat.put("type", "text");json.put("response_format", responseFormat);// 添加其他字段json.put("stop", JSONObject.NULL);json.put("stream", false);json.put("stream_options", JSONObject.NULL);json.put("temperature", 1);json.put("top_p", 1);json.put("tools", JSONObject.NULL);json.put("tool_choice", "none");json.put("logprobs", false);json.put("top_logprobs", JSONObject.NULL);// 控制台打印输出JSON字符串并且使用2个空格进行缩进//System.out.println(json.toString(2));return json.toString();}
}
转化后JSON如下:
{"messages": [{"content": "You are a helpful assistant","role": "system"},{"content": "Hi","role": "user"}],"model": "deepseek-chat","frequency_penalty": 0,"max_tokens": 2048,"presence_penalty": 0,"response_format": {"type": "text"},"stop": null,"stream": false,"stream_options": null,"temperature": 1,"top_p": 1,"tools": null,"tool_choice": "none","logprobs": false,"top_logprobs": null
}
2.2 实现类:
import okhttp3.*;import java.io.IOException;/*** @Description:* @Author:* @Date: 2025/2/20* @Version: v1.0*/
public class MyDeepSeekClient {private static final String API_URL = "https://api.deepseek.com/chat/completions"; // 替换为实际的API URLprivate static final String API_KEY = "你的APIkey"; // 替换为实际的API密钥public static void main(String[] args) {try {String json = JsonExample.toJson("你好", "deepseek-chat");OkHttpClient client = new OkHttpClient().newBuilder().build();MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, json);Request request = new Request.Builder().url(API_URL)//deepseek的API.method("POST", body).addHeader("Content-Type", "application/json").addHeader("Accept", "application/json").addHeader("Authorization", "Bearer "+API_KEY)//deepseek的API_KEY.build();// 异步发送 POST 请求client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {e.printStackTrace();}@Overridepublic void onResponse(Call call, Response response) throws IOException {try {if (response.isSuccessful()) {//判断响应是否成功// 成功System.out.println("状态码: " + response.code());System.out.println("响应体: " + response.body().string());} else {// 失败System.out.println("状态码: " + response.code());System.out.println("响应体: " + response.body().string());}} finally {// 关闭响应体,防止资源泄漏response.close();}}});} catch (Exception e) {e.printStackTrace();}}
}
输入结果如下:
状态码: 200
响应体: {"id":"6d83333a-ac8e-4ebf-9030-dc4e5ec620a3","object":"chat.completion","created":1740040067,"model":"deepseek-chat","choices":[{"index":0,"message":{"role":"assistant","content":"你好!很高兴见到你。有什么我可以帮忙的吗?"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":9,"completion_tokens":11,"total_tokens":20,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":9},"system_fingerprint":"fp_3a5770e1b4"}
注意事项:
-
响应体大小:如果响应体较大,直接调用
responseBody.string()可能会占用大量内存。对于大文件或流式数据,可以使用responseBody.byteStream()或responseBody.charStream()。
相关文章:
java简单实现请求deepseek
1.deepseek的api创建 deepseek官网链接 点击右上API开放平台后找到API keys 创建APIkey: 注意:创建好的apikey只能在创建时可以复制,要保存好 2.java实现请求deepseek 使用springbootmaven 2.1 pom文件: <?xml version&…...
Ext系列文件系统 -- 磁盘结构,磁盘分区,inode,ext文件系统,软硬链接
目录 1.理解硬盘 1.1 磁盘、服务器、机柜、机房 1.2 磁盘物理结构 1.3 磁盘的存储结构 1.4 磁盘的逻辑结构 1.4.1 理解逻辑结构 1.4.2 真实过程 1.5 CHS地址和LBA地址的相互转换 2.引入文件系统 2.1 “块”概念 2.2 “分区”概念 2.3 “inode”概念 3.ext2文件系…...
PyTorch Tensor 形状变化操作详解
PyTorch Tensor 形状变化操作详解 在深度学习中,Tensor 的形状变换是非常常见的操作。PyTorch 提供了丰富的 API 来帮助我们调整 Tensor 的形状,以满足模型输入、计算或数据处理的需求。本文将详细介绍 PyTorch 中常见的 Tensor 形状变换操作࿰…...
文字识别软件cnocr学习笔记
• 安装 pip install cnocr • 基础的使用方法 首次运行会下载安装模型,如果没有梯子,会报错: 在网络上查找cnocr的模型资源,并下载到本地。https://download.csdn.net/download/qq_33464428/89514689?ops_request_misc%257B%2…...
本地部署DeepSeek R1 + 界面可视化open-webui【ollama容器+open-webui容器】
本地部署DeepSeek R1 界面可视化open-webui 本文主要讲述如何用ollama镜像和open-webui镜像部署DeepSeek R1, 镜像比较方便我们在各个机器之间快速部署。 显卡推荐 模型版本CPU内存GPU显卡推荐1.5B4核8GB非必需4GBRTX1650、RTX20607B、8B8核16GB8GBRTX3070、RTX…...
macOS部署DeepSeek-r1
好奇,跟着网友们的操作试了一下 网上方案很多,主要参考的是这篇 DeepSeek 接入 PyCharm,轻松助力编程_pycharm deepseek-CSDN博客 方案是:PyCharm CodeGPT插件 DeepSeek-r1:1.5b 假设已经安装好了PyCharm PyCharm: the Pyth…...
基于STM32与BD623x的电机控制实战——从零搭建无人机/机器人驱动系统
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 一、为什么选择这两个芯片?1.1 STM32微控制器1.2 ROHM BD623x电机驱动 二、核心控制原理详解2.1 H桥驱动奥…...
基于ffmpeg+openGL ES实现的视频编辑工具-字幕添加(六)
在视频编辑领域,字幕的添加是一项极为重要的功能,它能够极大地丰富视频内容,提升观众的观看体验。当我们深入探究如何实现这一功能时,FreeType 开源库成为了强大助力。本文将详细阐述借助 FreeType 库生成字幕数据的过程,以及如何实现字幕的缩放、移动、旋转、颜色修改、对…...
C++中const T为什么少见?它有什么用途?
在C中,右值引用(T&&)是移动语义和完美转发的核心特性之一,但你是否注意到,const T&&(const右值引用)却很少被使用?它到底有什么用途? 今天我们就来深入…...
Leetcode 位计算
3095. 或值至少 K 的最短子数组 I 3097. Shortest Subarray With OR at Least K II class Solution:def minimumSubarrayLength(self, nums: List[int], k: int) -> int:n len(nums)bits [0] * 30res infdef calc(bits):return sum(1 << i for i in range(30) if…...
SpringBoot3.x整合WebSocket
SpringBoot3.x整合WebSocket 本文主要介绍最新springboot3.x下如何整合WebSocket. WebSocket简述 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它允许在浏览器和服务器之间进行实时的、双向的通信。相对于传统的基于请求和响应的 HTTP 协议ÿ…...
猿大师办公助手对比其他WebOffice在线编辑Office插件有什么优势
1. 原生Office功能完整嵌入,排版一致性保障 猿大师办公助手直接调用本地安装的微软Office、金山WPS或永中Office,支持所有原生功能(如复杂公式、VBA宏等),确保网页编辑与本地打开的文档排版完全一致。 提供OLE嵌入和完…...
STM32创建静态库lib
创建静态库lib 1. 新建工程1.1 创建工程文件夹1.2 编写用户相关代码1.2.1 stm32f4xx_it.h1.2.2 stm32f4xx_it.c1.2.3 标准库配置:stm32f4xx_conf.h1.2.4 HAL库的配置:stm32f4xx_hal_conf.h1.2.5 LL库配置:stm32f4xx_ll_conf.h 1.3 移植通用文…...
Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠
Hive JOIN过滤条件位置玄学:ON vs WHERE的量子纠缠 作为数据工程师,Hive JOIN就像吃火锅选蘸料——放错位置味道全变!今天带你破解字节/阿里等大厂高频面试题:ON和WHERE后的过滤条件究竟有什么不同? 一、核心差异对比表 特性ON子句WHERE子句执行时机JOIN操作时JOIN完成后…...
MAC快速本地部署Deepseek (win也可以)
MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型(LLM)本地运行框架,旨在简化大模型的部署和管理流程,使开发者、研究人员及爱好者能够高效地在本地环境中实验和…...
javaEE-13.spring MVC
目录 什么是spring web mvc: 什么是MVC: 一.创建一个spring项目 二.实现功能: 创建helloController.java项目: 建立连接: RequestMapping注解: 1.RequestMapping注解的使用: 2. RequestMapping 是GET还是POST请求 3.指定请求方法 RestControll…...
C/C++ | 每日一练 (2)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 C/C | 每日一练 (2)题目参考答案封装继承多态虚函数底…...
Nginx 常用命令和部署详解及案例示范
一、Nginx常用命令 1.1 启动 Nginx 要启动 Nginx 服务,可以使用以下命令: sudo systemctl start nginx1.2 停止 Nginx 如果需要停止 Nginx 服务,可以使用以下命令: sudo systemctl stop nginx1.3 重启 Nginx 在修改了 Nginx…...
GO大模型应用开发框架-
Eino 旨在提供基于 Golang 语言的终极大模型应用开发框架。 它从开源社区中的诸多优秀 LLM 应用开发框架,如 LangChain 和 LlamaIndex 等获取灵感,同时借鉴前沿研究成果与实际应用,提供了一个强调简洁性、可扩展性、可靠性与有效性࿰…...
保姆级!springboot访问Ollama API并调用DeepSeek模型 Api
要在springboot中访问Ollama API并调用DeepSeek模型,你需要遵循以下步骤。首先,确保你有一个有效的Ollama服务器实例运行中,并且DeepSeek模型已经被加载。 可以参考我的这篇博客 保姆级!使用Ollama本地部署DeepSeek-R1大模型 并java通过api 调用 使用Spring Boot + Sprin…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
