示例: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.pswp.cn/news/895121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895121.shtml
英文地址,請注明出處:http://en.pswp.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;電磁繼電器主要由線圈、鐵芯、銜…

計算機視覺核心任務

1. 計算機視頻重要分類 計算機視覺的重要任務可以大致分為以下幾類&#xff1a; 1. 圖像分類&#xff08;Image Classification&#xff09; 識別圖像屬于哪個類別&#xff0c;例如貓、狗、汽車等。 應用場景&#xff1a;物品識別、人臉識別、醫療影像分類。代表模型&#…

責任鏈模式(Chain Responsibility)

一、定義&#xff1a;屬于行為型設計模式&#xff0c;包含傳遞的數據、創建處理的抽象和實現、創建鏈條、將數據傳遞給頂端節點&#xff1b; 二、UML圖 三、實現 1、需要傳遞處理的數據類 import java.util.Date;/*** 需要處理的數據信息*/ public class RequestData {priva…

MFC 基礎

windows桌面應用分為兩種類型&#xff1a; 基于文檔視圖類型 和 基于對話框類型。 通常具有復雜交互控件的程序即為基于對話框類型&#xff0c;相對而言比較復雜&#xff0c;而基于文檔視圖類的應用交互形式比較單一&#xff0c;相對簡單。下面給出基于mfc框架的最基本的桌面程…

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的學習與秋招面試的備戰…

DeepSeek API 調用 - Spring Boot 實現

DeepSeek API 調用 - Spring Boot 實現 1. 項目依賴 在 pom.xml 中添加以下依賴&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></depe…

認識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 編程的各個方面&…

原生redis實現分布式鎖

用 原生 Redis&#xff08;Jedis、Lettuce&#xff09; 實現分布式鎖&#xff0c;可以參考 Redisson 的原理&#xff0c;但需要自己處理鎖的自動續期、故障恢復等細節。核心思路是使用 Redis 的 SET NX EX 或 SET PX NX 命令來實現互斥鎖&#xff0c;并利用 Lua 腳本 保障原子性…

論文筆記: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 庫中用于創建動畫的一個…