示例: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;}};}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895121.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET周刊【2月第1期 2025-02-02】

国内文章 dotnet 9 已知问题 默认开启 CET 导致进程崩溃 https://www.cnblogs.com/lindexi/p/18700406 本文记录 dotnet 9 的一个已知且当前已修问题。默认开启 CET 导致一些模块执行时触发崩溃。 dotnet 使用 ColorCode 做代码着色器 https://www.cnblogs.com/lindexi/p/…

AES200物理机部署DeepSeek-R1蒸馏模型

AES200物理机部署DeepSeek-R1模型 华为官方官宣自己的NPU支持DeepSeek-R1模型部署&#xff0c;华为的大模型推理部署依托于其大模型推理引擎&#xff1a;MindIE&#xff0c;但是根据MindIE的文档&#xff0c;其只支持以下硬件&#xff1a; 表1 MindIE支持的硬件列表 类型配置…

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops&#xff0c;Git与CICD&#xff0c;云服务与云原生&#xff0c;Linux&#xff0c;安全性&#xff0c;案例研究&#xff08;30张图详解&#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么&#xff1f;什么是k8s&#xff08;Ku…

正泰中间电磁继电器【8脚10A】DC24V 待机功率

需求&#xff1a;继电器能耗测试。 1.连接24V2A的电源&#xff0c; 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注&#xff1a;联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励&#xff1a;电磁继电器主要由线圈、铁芯、衔…

npm无法加载文件 因为此系统禁止运行脚本

安装nodejs后遇到问题&#xff1a; 在项目里【node -v】可以打印出来&#xff0c;【npm -v】打印不出来&#xff0c;显示npm无法加载文件 因为此系统禁止运行脚本。 但是在winr&#xff0c;cmd里【node -v】,【npm -v】都也可打印出来。 解决方法&#xff1a; cmd里可以打印出…

JVM春招快速学习指南

1.说在前面 在Java相关岗位的春/秋招面试过程中&#xff0c;JVM的学习是必不可少的。本文主要是通过《深入理解Java虚拟机》第三版来介绍JVM的学习路线和方法&#xff0c;并对没有过JVM基础的给出阅读和学习建议&#xff0c;尽可能更加快速高效的进行JVM的学习与秋招面试的备战…

认识Electron 开启新的探索世界一

一、Electron轻松入门 1.搭建开发环境&#xff1a; 一般情况下开发者会使用node.js来创建electron项目&#xff0c;node.js是一个基于Chrome V8引擎的javascript运行环境&#xff0c;所以首先需要到官网去下载安装node.js 下载链接&#xff1a;https://nodejs.org/enhttps://no…

MySQL下载过程

MySQL Enterprise Edition Downloads | Oracle mysql官方下载网址&#xff08;9.2版本&#xff09; 下面的示例是5.7的包&#xff0c;过程是一样的 port&#xff1a;3308&#xff08;默认的是3306&#xff0c;笔者下了一个占用了该端口&#xff09; root&#xff1a;123456 问题…

【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)

重要信息 官网&#xff1a;www.cnsse.org 时间&#xff1a;2025年2月21-23日 地点&#xff1a;中国-青岛 简介 第五届计算机网络安全与软件工程&#xff08;CNSSE 2025&#xff09;将于2025年2月21-23日在中国-青岛举行。CNSSE 2025专注于计算机网络安全、软件工程、信号处…

Qt:QWidget核心属性

目录 QWidget核心属性 enab geometry WindowFrame的影响 windowTitle windowIcon qrc文件管理资源 windowOpacity cursor font toolTip focusPolicy styleSheet QWidget核心属性 在Qt中使用QWidget类表示"控件"&#xff0c;如按钮、视图、输入框、滚动…

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下&#xff0c;使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…

论文笔记:Rethinking Graph Neural Networks for Anomaly Detection

目录 摘要 “右移”现象 beta分布及其小波 实验 《Rethinking Graph Neural Networks for Anomaly Detection》&#xff0c;这是一篇关于图&#xff08;graph&#xff09;上异常节点诊断的论文。 论文出处&#xff1a;ICML 2022 论文地址&#xff1a;Rethinking Graph Ne…

神经网络常见激活函数 6-RReLU函数

文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元&#xff1a;Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

Vue(6)

一.路由板块封装 &#xff08;1&#xff09;路由的封装抽离 目标&#xff1a;将路由板块抽离出来 好处&#xff1a;拆分板块&#xff0c;利于维护 // 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象…

【python】matplotlib(animation)

文章目录 1、matplotlib.animation1.1、FuncAnimation1.2、修改 matplotlib 背景 2、matplotlib imageio2.1、折线图2.2、条形图2.3、散点图 3、参考 1、matplotlib.animation 1.1、FuncAnimation matplotlib.animation.FuncAnimation 是 Matplotlib 库中用于创建动画的一个…

【东莞常平】戴尔R710服务器不开机维修分享

1&#xff1a;2025-02-06一位老客户的朋友刚开工公司ERP服务器一台戴尔老服务器故障无法开机&#xff0c;于是经老客户介绍找到我们。 2&#xff1a;服务器型号是DELL PowerEdge R710 这个服务器至少也有15年以上的使用年限了。 3&#xff1a;客户反馈的故障问题为&#xff1a;…

Spring AI -使用Spring快速开发ChatGPT应用

前言 Spring在Java生态中一直占据大半江山。最近我发现Spring社区推出了一个Spring AI项目&#xff0c;目前该项目还属于Spring实验性项目&#xff0c;但是我们可以通过该项目&#xff0c;可以非常快速的开发出GPT对话应用。 本篇文章将会对SpringAI进行简单的介绍和使用&#…

经典排序算法复习----C语言

经典排序算法复习 分类 交换类 冒泡快排 分配类 计数排序基数排序 选择类 选择排序 堆排序 归并类 归并排序 插入类 直接插入排序 希尔排序 折半插入排序 冒泡排序 基于交换。每一轮找最大值放到数组尾部 //冒泡排序 void bubSort(int* arr,int size){bool sorte…

BFS解决拓扑排序(3题)

目录 拓扑排序 1.如何排序&#xff1f; 2.如何形成拓扑排序 3.如何建图 1.看数据稠密度 2. 根据算法流程灵活建图 1.课程表 2.课程表2 3.火星词典 拓扑排序 找到做事情的先后顺序&#xff0c;拓扑排序的结果可能不是唯一的 1.如何排序&#xff1f; 1.找出图中入度为…

kafka 3.5.0 raft协议安装

前言 最近做项目&#xff0c;需要使用kafka进行通信&#xff0c;且只能使用kafka&#xff0c;笔者没有测试集群&#xff0c;就自己搭建了kafka集群&#xff0c;实际上笔者在很早之前就搭建了&#xff0c;因为当时还是zookeeper&#xff08;简称ZK&#xff09;注册元数据&#…