示例:JAVA调用deepseek
近日,国产AI DeepSeek在中国、美国的科技圈受到广泛关注,甚至被认为是大模型行业的最大“黑马”。在外网,DeepSeek被不少人称为“神秘的东方力量”。1月27日,DeepSeek应用登顶苹果美国地区应用商店免费APP下载排行榜,在美区下载榜上超越了ChatGPT。同日,苹果中国区应用商店免费榜显示,DeepSeek成为中国区第一。总之就是deepseek目前比较火,同时也提供了开放平台,尝试接入一下,也比较方便,官网每个接口都提供了各种语言的示例代码,java采用的okhttp,我用httpurlconnection尝试下
一、获取 API key
开放平台地址:DeepSeek
登录deepseek开放平台,创建API keys,注意创建的时候复制key,要不然找不到了
新账号有10元的体验额度,不足可以充值,10元体验额度的有效期为1个月
v3和R1的收费标准
1. deepseek-chat 模型优惠期至北京时间 2025 年 2 月 8 日 24:00,期间 API 调用享历史价格,优惠结束后将按每百万输入 tokens 2 元,每百万输出 tokens 8 元计费。
2. deepseek-reasoner 模型上线即按每百万输入 tokens 4 元,每百万输出 tokens 16 元计费。
二、获取开放API文档
接口地址:首次调用 API | DeepSeek API Docs
进入接口文档,提供了对话、补全、模型等接口,我们找一个【对话补全】接口,给了一个上下文,让他补充说话
三、JAVA调用API文档
使用java调用API,跟其他接口没什么区别,方便上手,注意下入参和返回参数就可以,采用json格式。
-----对话上下文
{ "content": "欢迎加入虚拟电厂", "role": "system" , "name": "muyunfei" },
{ "content": "你好,虚拟电厂与deepseek结合的方向说一下吧", "role": "user" , "name": "路人甲"}
组装请求参数:
{"messages": [{"content": "欢迎加入虚拟电厂","role": "system","name": "muyunfei"}, {"content": "你好,虚拟电厂与deepseek结合的方向说一下吧","role": "user","name": "路人甲"}],"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
}
返回数据参数格式:
{"id": "2fe86f3b-6e3b-4e65-b35a-1127c14c8739","object": "chat.completion","created": 1738810567,"model": "deepseek-chat","choices": [{"index": 0,"message": {"role": "assistant","content": "Hello! How can I assist you today? 😊"},"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"}
------------------------------------------------------------------------
-------------------------- 完整代码 ------------------------
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;/*** 实现了。。。。。。** @author 牟云飞**<p>Modification History:</p>*<p>Date Author Description</p>*<p>------------------------------------------------------------------</p>*<p>2025年2月4日 牟云飞 新建</p>*/
public class DeepseekTestMain {private static final String DEEPSEEK_API_URL_COMPLETIONS = "https://api.deepseek.com/chat/completions"; // API地址 ——// 对话补全private static final String DEEPSEEK_API_KEY = "换成自己的key"; // 官网申请的api keypublic static void main(String[] args) {DeepseekTestMain test = new DeepseekTestMain();try {test.sendDeepseekChat(DEEPSEEK_API_URL_COMPLETIONS, "虚拟电厂与deepseek结合的方向说一下");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 对话补全* * @param mess* @return* @throws IOException*/public String sendDeepseekChat(String deepseekUrl, String context) throws IOException {String result = null;URL url_req = new URL(deepseekUrl);HttpsURLConnection connection = (HttpsURLConnection) url_req.openConnection();// 设置参数connection.setDoOutput(true); // 需要输出connection.setDoInput(true); // 需要输入connection.setUseCaches(false); // 不允许缓存connection.setConnectTimeout(60000); // 设置连接超时connection.setReadTimeout(60000); // 设置读取超时connection.setRequestMethod("POST"); // 设置POST方式连接// 设置请求属性connection.setRequestProperty("Content-Type", "application/json");connection.setRequestProperty("Accept", "application/json");connection.setRequestProperty("Charset", "UTF-8");// 设置请求头参数connection.addRequestProperty("Authorization", "Bearer " + DEEPSEEK_API_KEY); // 设置appIdHttpsURLConnection https = (HttpsURLConnection) connection;SSLSocketFactory oldSocketFactory = trustAllHosts(https);HostnameVerifier oldHostnameVerifier = https.getHostnameVerifier();https.setHostnameVerifier(DO_NOT_VERIFY);// 输入数据String requestData = "{ \"messages\": "+ "[ "+ " { \"content\": \"欢迎加入虚拟电厂\", \"role\": \"system\" , \"name\": \"muyunfei\" }, "+ " { \"content\": \"你好,虚拟电厂与deepseek结合的方向说一下吧\", \"role\": \"user\" , \"name\": \"路人甲\"} "+ "],"+ " \"model\": \"deepseek-chat\","+ " \"frequency_penalty\": 0,"+ " \"max_tokens\": 2048,"+ " \"presence_penalty\": 0,"+ " \"response_format\": {\n \"type\": \"text\"\n },"+ " \"stop\": null,"+ " \"stream\": false,"+ " \"stream_options\": null,"+ " \"temperature\": 1,"+ " \"top_p\": 1,"+ " \"tools\": null,"+ " \"tool_choice\": \"none\","+ " \"logprobs\": false,"+ " \"top_logprobs\": null}";try (OutputStream os = connection.getOutputStream()) {byte[] input = requestData.getBytes("utf-8");os.write(input,0,input.length);}// 输出数据InputStream in = connection.getInputStream(); // 获取返回数据BufferedInputStream bis = new BufferedInputStream(in);ByteArrayOutputStream baos = new ByteArrayOutputStream();int c;while (-1 != (c = bis.read())) {baos.write(c);}bis.close();in.close();baos.flush();byte[] data = baos.toByteArray();String responseMsg = new String(data);System.out.println(responseMsg);
// {
// "id": "2fe86f3b-6e3b-4e65-b35a-1127c14c8739",
// "object": "chat.completion",
// "created": 1738810567,
// "model": "deepseek-chat",
// "choices": [{
// "index": 0,
// "message": {
// "role": "assistant",
// "content": "Hello! How can I assist you today? 😊"
// },
// "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"
// }JSONObject jsonObject = JSONObject.fromObject(responseMsg);JSONArray choices = JSONArray.fromObject(jsonObject.get("choices"));// 获取补全内容,是个数组,多个补全回复多个System.out.println(choices.toString());JSONObject item = JSONObject.fromObject(JSONObject.fromObject(choices.get(0)).get("message"));System.out.println(item.get("content"));// 对JSON作解析return result;}private SSLSocketFactory trustAllHosts(HttpsURLConnection connection) {SSLSocketFactory oldFactory = connection.getSSLSocketFactory();try {SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, trustAllCerts, new java.security.SecureRandom());SSLSocketFactory newFactory = sc.getSocketFactory();connection.setSSLSocketFactory(newFactory);} catch (Exception e) {e.printStackTrace();}return oldFactory;}private TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {public java.security.cert.X509Certificate[] getAcceptedIssuers() {return new java.security.cert.X509Certificate[] {};}public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}} };private HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {public boolean verify(String hostname, SSLSession session) {return true;}};}
相关文章:

示例:JAVA调用deepseek
近日,国产AI DeepSeek在中国、美国的科技圈受到广泛关注,甚至被认为是大模型行业的最大“黑马”。在外网,DeepSeek被不少人称为“神秘的东方力量”。1月27日,DeepSeek应用登顶苹果美国地区应用商店免费APP下载排行榜,在…...

【提示工程】:如何有效与大语言模型互动
随着人工智能技术的快速发展,大语言模型(LLM)如 GPT 系列在各类任务中的应用越来越广泛。从文本生成到代码编写,从数据分析到内容创作,这些模型展现出了强大的能力。然而,要充分发挥大语言模型的潜力,关键在于如何设计高质量的提示词(Prompts)。这门技术被称为提示工程…...

操作系统—经典同步问题
补充 互斥信号量mutex初值均为1 同步信号量根据问题实际描述自己设计 生产者-消费者问题 问题描述:一组生产者进程和一组消费者进程 共享一个初始为空、大小为n的缓冲区。(缓冲区:临界资源) 只有缓冲区没满时,生产者…...

profinet工业通信协议网关:提升钢铁冶炼智能制造效率的利器
工业通信协议网关profinet转ethercat(稳联技术WL-PN-ECATM)在钢铁冶炼生产线中的智能应用实践 在现代钢铁冶炼生产中,复杂的设备互联和数据传输对生产效率和质量控制至关重要。本案例详细阐述了某大型钢铁集团通过工业通信协议网关实现生产线…...
Vue基础:计算属性(描述依赖响应式状态的复杂逻辑)
文章目录 引言computed() 方法期望接收一个 getter 函数可写计算属性:计算属性的 Setter计算属性的缓存机制调试 Computed引言 推荐使用计算属性来描述依赖响应式状态的复杂逻辑 computed 函数:它接受 getter 函数并为 getter 返回的值返回一个不可变的响应式 ref 对象。 c…...

leetcode:1534. 统计好三元组(python3解法)
难度:简单 给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。 如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。 0 < i < j < k < arr.length|arr[i] - arr[j]| &l…...

BUU27 [SUCTF 2019]CheckIn1
题目是上传文件 直接上传muma.jpg还不成功: 好吧,那做一个图片马上去,换马以后发现还是不行,呃啊啊啊啊 干啥啥不行,搜wp第一名,哎 新面孔:exif_imagetype 函数在 PHP 中用于检测一个文件是否为…...

unity学习30:Audio Source, Audio clip 音效和音乐
目录 1 音乐相关必须要有 Audio listener 和Source 2 Scene里必须要有 Audio listener 3 Audio Source 3.1 Audio Source 就是音源,可播放的音乐clip 分类 3.2 创建Audio Source 3.3 各种属性 3.4 3D sound Settings 4 使用脚本来播放声音 4.1 声明AudioC…...

【Qt 常用控件】输入类控件1(QLineEdit和QTextEdit 输入框)
目录 1.QLineEdit 单行输入框 例:输入个人信息,通过按钮提交 例:为输入框设置验证器,检查输入的电话 例:验证两次输入的密码是否一致 例:是否显示密码按钮,toggled信号。 2.QTextEdit多行输入框 、QPl…...

openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能
本文记录了openEuler22.03LTS将docker升级由18.09.0升级至26.1.4的过程(当前docker最新版本为27.5.1,生产环境为保障稳定性,选择升级到上一个大版本26的最新小版本)。 一、现有环境 1、系统版本 [rootlocalhost opt]# cat /etc…...
深入解析:如何利用 Java 爬虫按关键字搜索淘宝商品
在电商领域,通过关键字搜索商品是常见的需求。无论是商家分析竞争对手,还是消费者寻找心仪的商品,获取搜索结果中的商品信息都至关重要。本文将详细介绍如何利用 Java 爬虫按关键字搜索淘宝商品,并提供完整的代码示例。 一、Java…...

STM32上部署AI的两个实用软件——Nanoedge AI Studio和STM32Cube AI
1 引言 STM32 微控制器在嵌入式领域应用广泛,因为它性能不错、功耗低,还有丰富的外设,像工业控制、智能家居、物联网这些场景都能看到它的身影。与此同时,人工智能技术发展迅速,也逐渐融入各个行业。 把 AI 部署到 STM…...

C++ Primer 成员访问运算符
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

芯科科技的BG22L和BG24L带来应用优化的超低功耗蓝牙®连接
全新的BG22L为常见蓝牙设备提供强大的安全性和处理能力,而BG24L支持先进的AI/ML加速和信道探测功能 2025年2月6日 – 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ&#x…...
java后端开发面试常问
面试常问问题 1 spring相关 (1)Transactional失效的场景 <1> Transactional注解默认只会回滚运行时异常(RuntimeException),如果方法中抛出了其他异常,则事务不会回滚(数据库数据仍然插…...
双非硕士的抉择:自学嵌入式硬件开发还是深入Linux C/C++走软开?
今天给大家分享的是一位粉丝的提问,双非硕研一是自学嵌入式走偏硬件还是说深入学习Linuxc/c走软开呢? 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。 粉丝提问: 老师好ÿ…...
Windows系统使用Git教程详解
使用 Git 可以帮助开发人员更好地进行版本控制和团队协作,下面是 Windows 上 Git 的详细使用教程。 安装 Git 首先,你需要在 Windows 上安装 Git。你可以从 Git 官网下载最新的安装包(https://git-scm.com/downloads),…...

Linux firewalld开启日志审计功能(2)
在Firewalld防火墙中启用和配置logdenied选项,记录被拒绝的数据包(等同于开启日志功能) 效果展示: 1.开启日志记录功能 firewall-cmd --set-log-deniedunicast #重新加载生效配置 firewall-cmd --reload 2.配置rsyslog捕获日志…...

【声音转文字CapsWriter】声音随时转化为文字,CapsWriter提高工作效率
文章目录 前言1. 软件与模型下载2. 本地使用测试3. 异地远程使用3.1 内网穿透工具下载安装3.2 配置公网地址3.3 修改config文件3.4 异地远程访问服务端 4. 配置固定公网地址4.1 修改config文件 5. 固定tcp公网地址远程访问服务端 前言 今天我要给大家安利一个神器——CapsWrit…...

深入理解小波变换:信号处理的强大工具
引言 在科学与工程领域,信号处理一直是关键环节,傅里叶变换与小波变换作为重要的分析工具,在其中发挥着重要作用。本文将深入探讨小波变换,阐述其原理、优势以及与傅里叶变换的对比,并通过具体案例展示其应用价值。 一…...

三甲医院“AI平台+专家系统”双轮驱动模式的最新编程方向分析
医疗人工智能领域正在经历从“单点技术应用”到“系统性赋能”的深刻转型。在这一转型过程中,国内领先的三甲医院通过探索“AI平台+专家系统”双轮驱动模式,不仅解决了医疗AI落地“最后一公里”的难题,更推动了医疗服务质量与效率的全面提升。本文从技术架构、编程方向、落地…...
OD 算法题 B卷【矩阵稀疏扫描】
文章目录 矩阵稀疏扫描 矩阵稀疏扫描 如果矩阵中的很多系数都为零,则为稀疏矩阵,给定一个矩阵,如果某行、列存在0的个数超出(包含)了行宽、列宽的一半(整除),则认为该行、列为稀疏的…...

Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件
代码:express-exe: 将Express开发的js打包成exe服务丢给客户端使用 实现目标 Express 集成 Sequelize 操作 Sqlite3 数据库; 启动 Sqlite3 时默认开启 WAL 模式,避免读写互锁,支持并发读; 利用 Conf 实现主进程与 Ex…...
2359. 找到离给定两个节点最近的节点
2359. 找到离给定两个节点最近的节点 题目链接:2359. 找到离给定两个节点最近的节点 代码如下: class Solution { public:int closestMeetingNode(vector<int>& edges, int node1, int node2) {auto calc_dis [&](int x) {vector<in…...

网络交换机:构建高效、安全、灵活局域网的基石
在数字化时代,网络交换机作为局域网(LAN)的核心设备,承担着数据转发、通信优化和安全防护的关键任务。其通过独特的MAC地址学习、冲突域隔离、VLAN划分等技术,显著提升了网络性能,成为企业、学校、医院等场景不可或缺的基础设施。…...
【ArcGIS微课1000例】0148:Geographic Imager6.2使用教程
文章目录 一、Geographic Imager6.2下载安装二、Geographic Imager6.2使用方法1. 打开Geographic Imager2. 导入地理影像3. 导入DEM地形渲染4. 设置地理坐标系统5. 进行地理影像的处理6. 导出地理影像一、Geographic Imager6.2下载安装 在专栏上一篇文章中已经详细讲述了Geogr…...

字节开源FlowGram:AI时代可视化工作流新利器
字节终于开源“扣子”同款引擎了!FlowGram:AI 时代的可视化工作流利器 字节FlowGram创新性地融合图神经网络与多模态交互技术,构建了支持动态拓扑重构的可视化流程引擎。该系统通过引入 f ( G ) ( V ′ , E ′ ) f(\mathcal{G})…...

vCenter与ESXi主机每分钟周期性断连修复
问题概述 最近我的测试服务器借给客户用作临时中转,仅更改了ESXi的管理IP,设备拿回来改回原来IP,vCenter开启后重新接收证书,主机和所有VM管理运行正常,跑着跑着发现主机和vCenter会频繁断开连接后又马上自动恢复&…...
[蓝桥杯]上三角方阵
上三角方阵 题目描述 方阵的主对角线之上称为"上三角"。 请你设计一个用于填充 nn 阶方阵的上三角区域的程序。填充的规则是:使用 1,2,3.... 的自然数列,从左上角开始,按照顺时针方向螺旋填充。 例如&am…...

ApacheSuperset CVE-2023-27524
前言:CVE-2023-27524 是一种远程代码执行漏洞,攻击者通过该漏洞可在受影响系统上执行任意代码,从而获得未授权访问权 CVE-2023-27524 GitHubhttps://github.com/horizon3ai/CVE-2023-27524 任务一 代理 | 拉取镜像 vi /etc/proxychains4.conf //最下面修…...