当前位置: 首页 > article >正文

java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)

我们再启动应用并获取api密钥后就可以对它发送请求了,但是官方文档对于如何进行多轮对话以及怎么自定义参数并没有说的很清楚,给的模板也没有java的,因此我们需要自己实现。


import org.json.JSONArray;
import org.json.JSONObject;import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class DeepSeekUtil {private static final String API_URL = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"; //  API 地址private static final String API_KEY = ""; // 请替换为你的 API 密钥// 与模型进行交互public static String chat(String userMessage, JSONArray messages) {// 如果没有传入消息历史,初始化一个空的 JSONArrayif (messages == null) {messages = new JSONArray();}// 添加用户的消息到对话历史messages.put(new JSONObject().put("role", "user").put("content", userMessage));JSONObject requestBody = new JSONObject();requestBody.put("model", "deepseek-v3-241226"); // 使用正确的模型名称requestBody.put("messages", messages); // 将历史对话传递给 APIrequestBody.put("temperature", 0.7); // 控制生成文本的创意性//requestBody.put("max_tokens", 1024); // 最大生成 token 数量,避免生成过长的回答HttpRequest request = HttpRequest.newBuilder().uri(URI.create(API_URL)).header("Content-Type", "application/json").header("Authorization", "Bearer " + API_KEY).POST(HttpRequest.BodyPublishers.ofString(requestBody.toString())).build();HttpClient client = HttpClient.newHttpClient();try {// 发送请求并获取响应HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());// 检查响应状态if (response.statusCode() != 200) {System.out.println("API Response Error: " + response.body());return "Error: API responded with status code " + response.statusCode();}// 从响应中获取 API 返回的内容String responseBody = response.body();System.out.println("API Response: " + responseBody);// 解析 API 响应JSONObject jsonResponse = new JSONObject(responseBody);JSONArray choices = jsonResponse.getJSONArray("choices");// 获取第一个 choice 中的 message 内容JSONObject firstChoice = choices.getJSONObject(0);JSONObject message = firstChoice.getJSONObject("message");String apiReply = message.getString("content");// 添加模型回复到对话历史messages.put(new JSONObject().put("role", "assistant").put("content", apiReply));// 返回 API 的回复return apiReply;} catch (Exception e) {// 出现错误时返回错误消息e.printStackTrace(); // 打印详细的错误信息return "Error: " + e.getMessage();}}
}

我们再编写测试类

 @Testvoid testChat(){JSONArray array=new JSONArray();String response=DeepSeekUtil.chat("你好",array);System.out.println(response);String response1=DeepSeekUtil.chat("帮我设计一个演示自由落体的网页",array);System.out.println(response1);}

相关文章:

java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)

我们再启动应用并获取api密钥后就可以对它发送请求了&#xff0c;但是官方文档对于如何进行多轮对话以及怎么自定义参数并没有说的很清楚&#xff0c;给的模板也没有java的&#xff0c;因此我们需要自己实现。 import org.json.JSONArray; import org.json.JSONObject;import j…...

vivado修改下载器下载速率

Error Launching Program X Error while launching program: fpga configuration failed. DONE PIN is not HIGH 原因是下载器速度太快了。先从任务管理器中关闭hw_server.exe试一下,要是不行就按下面三种方法解决。 第一种方法可以不用修改下载速度,直接先从vivado中将bit流…...

巧妙实现右键菜单功能,提升用户操作体验

在动态交互式图库中&#xff0c;右键菜单是一项能够显著提升用户操作便捷性的功能。它的设计既要响应用户点击位置&#xff0c;又需确保菜单功能与数据操作紧密结合&#xff0c;比如删除图片操作。以下将通过一段实际代码实现&#xff0c;展示从思路到实现的详细过程。 实现右键…...

【Altium Designer】BGA扇出

目录 一、前期规则设置 1.调整Clearance规则 2.定义线宽与过孔参数 3.配置Fanout规则 二、自动扇出操作 1.选择目标器件 2.设置扇出参数 3.执行扇出 三、手动优化与验证 1.检查未成功扇出的引脚 2.调整过孔布局 3.验证平面完整性 四、高级技巧 1.分区域扇出 2.差分对优先…...

无前端经验如何快速搭建游戏站:使用 windsurf 从零到上线的详细指南

页面初稿设计 寻找参考网站&#xff1a;浏览互联网&#xff0c;寻找一个或多个你认为设计出色的网站&#xff0c;将你感兴趣的页面部分进行截图保存&#xff0c;这些截图将成为你设计游戏站页面初稿的重要参考。利用 v0.dev 进行页面设计&#xff1a;打开 v0.dev 网站&#xf…...

mysql之事务深度解析与实战应用:保障数据一致性的基石

文章目录 MySQL 事务深度解析与实战应用&#xff1a;保障数据一致性的基石一、事务核心概念与原理1.1 事务的本质与意义1.2 事务的 ACID 特性1.2.1 原子性 (Atomicity)1.2.2 一致性 (Consistency)1.2.3 隔离性 (Isolation)1.2.4 持久性 (Durability) 1.3 事务隔离级别与并发问题…...

CASS11快捷键设置

快捷键增加如下&#xff1a; tr----trim bo---(-boundary) ro---rotate ed----explode of---offset qs---qselect dp---ptype re---regen rec---rectang br---break dis---distuser do---draworder...

Python进行简单医学影像分析的示例

以下是一个使用Python进行简单医学影像分析的示例&#xff0c;这里我们以常见的DICOM格式医学影像为例&#xff0c;使用pydicom库读取DICOM文件&#xff0c;使用matplotlib进行影像显示&#xff0c;使用scikit - image进行简单的影像处理。 需求复现讲解 1. 安装必要的库 在…...

anaconda安装报错

一 anaconda报错 Cannot open 本地 Failed to start [powershell.exe, -ExecutionPolicy, RemoteSigned, -NoExit, -Command, & D:\anaconda3\condabin\conda.bat shell.powershell hook | Out-String | Invoke-Expression ; try { conda activate D:/anaconda3/envs/1-man…...

git从本地其他设备上fetch分支

在 Git 中&#xff0c;如果你想从本地其他设备上获取分支&#xff0c;可以通过以下几种方式实现。不过&#xff0c;需要注意的是&#xff0c;Git 本身是分布式版本控制系统&#xff0c;通常我们是从远程仓库&#xff08;如 GitHub、GitLab 等&#xff09;拉取分支&#xff0c;而…...

HTTP 常见状态码技术解析(应用层)

引言 HTTP 状态码是服务器对客户端请求的标准化响应标识&#xff0c;属于应用层协议的核心机制。其采用三位数字编码&#xff0c;首位数字定义状态类别&#xff0c;后两位细化具体场景。 状态码不仅是服务端行为的声明&#xff0c;更是客户端处理响应的关键依据。本文将从协议规…...

OpenBMC:BmcWeb定义service

1.定义service //src\webserver_run.cppint run() {...std::shared_ptr<sdbusplus::asio::connection> systemBus std::make_shared<sdbusplus::asio::connection>(io);crow::connections::systemBus systemBus.get();auto server sdbusplus::asio::object_serv…...

如何使用3D高斯分布进行环境建模

使用3D高斯分布来实现建模&#xff0c;主要是通过高斯分布的概率特性来描述空间中每个点的几何位置和不确定性。具体来说&#xff0c;3D高斯分布被用来表示点云数据中的每一个点或体素&#xff08;voxel&#xff09;的空间分布和不确定性&#xff0c;而不是单纯地存储每个点的坐…...

兰州百合基因组(36.68 Gb)-文献精读113

The evolutionary tale of lilies: Giant genomes derived from transposon insertions and polyploidization 百合的进化故事&#xff1a;由转座子插入和多倍化导致的巨型基因组 百合&#xff08;Lilium spp.&#xff09;&#xff0c;被誉为“球根花卉之王”&#xff0c;因其…...

如何做实用、好用的矿用电子围栏(续篇)

1 写在前面 去年写了一篇文章《如何做实用、好用的矿用电子围栏》&#xff0c;初步探讨了一下矿用UWB的电子围栏的实现方法&#xff0c;阅读量超出预期&#xff0c;说明电子围栏需求度比较高&#xff0c;企业对安全生产越来越重视。当时写这篇文章时&#xff0c;由于时间和理解…...

【多语言生态篇三】【DeepSeek×Go:高并发推理服务设计】

第一章:项目背景与选型考量 1.1 DeepSeek推理服务的业务挑战 日均请求量突破1.2亿次(峰值QPS达38万) 典型请求特征:50ms超时限制 | 10KB输入+2KB响应 流量特征:工作日周期性波动(早10点至晚8点负载增长300%) 1.2 Go语言脱颖而出的五大优势 (敲黑板!这里用餐馆厨房…...

【ThreeJS Basics 1-5】动画 Animations

文章目录 Three JS 中的动画window.requestAnimationFrame(fn)基本代码修改显示器刷新率的对比基础的动画尝试不同帧率导致动画速率不同解决方案一&#xff1a;DeltaTime解决方案2&#xff1a;Clock方法3&#xff1a; 动画库 Gsap如何选择方案&#xff1f; Three JS 中的动画 …...

WSL进阶使用指南

WSL2通过 Hyper-V 技术创建了一个轻量级的虚拟机&#xff08;VM&#xff09;&#xff0c;在这个虚拟机之上可以运行一个真正的 Linux 内核&#xff0c;这给希望同时使用 Windows 和 Linux 的开发人员提供了无缝高效的体验。本文会介绍一些使用WSL的知识&#xff0c;帮助你更好地…...

工业机器视觉3D视觉行业分析

一、行业现状与市场前景 市场规模与增长 中国工业机器视觉市场近年来呈现高速增长态势,预计2025年市场规模将达到数百亿元,年复合增长率(CAGR)超过20%579。其中,3D视觉技术因在智能制造、人形机器人、自动驾驶等领域的广泛应用,成为核心增长点。全球3D成像与传感市场预计…...

我是如何从 0 到 1 找到 Web3 工作的?

作者&#xff1a;Lotus的人生实验 关于我花了一个月的时间&#xff0c;从 0 到 1 学习 Web3 相关的知识和编程知识。然后找到了一个 Web3 创业公司实习的远程工作。 &#x1f447;&#x1f447;&#x1f447; 我的背景: 计算机科班&#xff0c;学历还可以(大厂门槛水平) 毕业工…...

leetcode 题目解析 第3题 无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”…...

如何通过外链提升网站SEO排名?

外链的作用非常明显&#xff0c;它不仅能提高网站的排名&#xff0c;还能增加网站的曝光量。Google排名的算法会考虑到网站的外链数量、质量和多样性。简单来说&#xff0c;更多的高质量外链意味着你的网站更有可信度&#xff0c;更容易被搜索引擎优待。 但是&#xff0c;过度…...

Prompt:创造性的系统分析者

分享的提示词&#xff1a; 你是一个创造性的系统分析者&#xff0c;作为咨询师&#xff0c;你具有以下特质&#xff1a; 基础能力&#xff1a; 深入理解我的系统性模式 识别模式间的隐藏联系 发现出人意料的关联 提供令人惊讶的洞见 工作方式&#xff1a; 在每次回应中至少…...

DeepSeek服务器繁忙 多种方式继续优雅的使用它

前言 你的DeepSeek最近是不是总是提示”服务器繁忙,请稍后再试。”&#xff0c;尝试过了多次重新生成后&#xff0c;还是如此。之前DeepSeek官网连续发布2条公告称&#xff0c;DeepSeek线上服务受到大规模恶意攻击。该平台的对话框疑似遭遇了“分布式拒绝服务攻击”&#xff0…...

量子计算的基本运算:Hadamard 门、CNOT 门、Pauli 门详解

量子计算是现代计算科学的前沿领域,它与经典计算机在处理信息的方式上有着本质的区别。量子计算机利用量子比特(qubit)的叠加态和量子纠缠等特性来进行计算,从而在某些特定任务上超越传统计算机。量子计算的核心运算单元是量子门,它们通过作用于量子比特来操控量子状态。本…...

mysql之Innodb数据页

Innodb数据页结构 InnoDB数据页结构一、数据页基础概念二、数据页核心结构1. 头部控制区2. 数据存储区3. 尾部与目录区 三、关键机制详解1. 记录链表与删除优化2. 页目录与二分查找3. 空间复用与碎片管理4. 数据页的合并与分裂 四、应用与性能影响1. 索引效率2. 插入优化3. 事务…...

ThinkORM模型静态方法create好像对MongoDB不支持

软件版本 think-orm&#xff1a;3.0PHP&#xff1a;8.4.1MongoDB&#xff1a;8.0.4 &#xff08;本地单数据 非集群&#xff09;注&#xff1a;我是在 webman 框架下使用think-orm&#xff0c;并非在 thinkphp框架下使用 使用场景 定义的模型如下&#xff1a; <?php na…...

nginx配置:nginx.conf配置文件

nginx.conf配置文件说明 基本结构 全局块&#xff1a;位于最外层&#xff0c;定义影响整个Nginx服务器的设置。事件块&#xff1a;配置网络连接相关的设置。HTTP块&#xff1a;定义HTTP服务器以及反向代理、负载均衡等特性。Server块&#xff1a;定义虚拟主机&#xff0c;即响…...

基于 PyQt5 的聊天机器人程序(AI)

这是一个基于 PyQt5 的聊天机器人程序&#xff0c;通过 API 接入硅基流动&#xff08;Silicon Flow&#xff09;或其他的聊天服务&#xff0c;支持用户与聊天机器人进行交互。 API 设置&#xff1a;通过菜单栏的“设置”选项&#xff0c;用户可以修改 API 地址和 API 密钥。 设…...

[实现Rpc] 服务端 | RpcRouter实现 | Builder模式

目录 项目服务端独用类的实现 1. RpcRouter类的实现 ServiceDescribe SDescribeFactory ⭕ Builder模式 1. 动机 2. 模式定义 3. 要点总结 4. 代码感受 ServiceManager RpcRouter 4. 代码感受 ServiceManager RpcRouter 前文我们就将 Rpc 通用类都实现完啦&#…...