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

embedded/2025/2/22 18:04:12/

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

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();}}
}

我们再编写测试类

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

http://www.ppmy.cn/embedded/164405.html

相关文章

LeetCode100 力扣热题100 岛屿数量

题目背景 这个问题是岛屿数量问题&#xff0c;给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水域&#xff09;组成的网格&#xff0c;计算并返回其中岛屿的数量。一个岛屿是由相邻的陆地组成&#xff0c;陆地可以是水平或垂直相邻。 思路 我们可以使用深度优先搜索…

nginx配置:nginx.conf配置文件

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

汽车长期不保养的危害

汽车两三年不保养会对车辆的多个系统和部件产生严重危害&#xff0c;以下将详细阐述&#xff1a; 发动机系统 润滑系统问题 机油在发动机中起着润滑、冷却、清洁和密封的重要作用。长时间不更换机油&#xff0c;机油会因氧化、污染等原因变质&#xff0c;其润滑性能大幅下降。…

【HarmonyOS之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(四) -> 常见组件(二) -> tabs

目录 1 -> 创建Tabs 2 -> 设置Tabs方向 3 -> 设置样式 4 -> 显示页签索引 5 -> 场景示例 1 -> 创建Tabs 在pages/index目录下的hml文件中创建一个Tabs组件。 <!-- index.hml --> <div class"container" ><tabs> <tab-…

深入理解Zookeeper:分布式系统的协调者

引言 在现代分布式系统中&#xff0c;协调和管理多个节点之间的状态和行为是一个复杂且关键的任务。Zookeeper作为一个分布式协调服务&#xff0c;为开发者提供了一种高效、可靠的方式来处理分布式系统中的一致性问题。本文将介绍Zookeeper的基本概念、使用场景以及如何通过示…

Git是什么

简单介绍&#xff1a; Git是一个分布式版本控制系统&#xff0c;用于跟踪文件的更改&#xff0c;特别是在多人协作开发的环境中。 Key: 分布式 版本控制 系统 最常用于软件开发&#xff0c;但也可以用于管理任何类型的文件和文件夹。 Git帮助团队跟踪和管理文件的历史版本&a…

前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传

* BootStrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1、引入bootstrap.css和bootstrap.js 2、准备弹框标签&#xff0c;确认结构 3、通过自定义属性&#xff0c;控制弹框的显示和隐藏 其中的bootstrap.css…

MAC快速本地部署Deepseek (win也可以)

MAC快速本地部署Deepseek (win也可以) 下载安装ollama 地址: https://ollama.com/ Ollama 是一个开源的大型语言模型&#xff08;LLM&#xff09;本地运行框架&#xff0c;旨在简化大模型的部署和管理流程&#xff0c;使开发者、研究人员及爱好者能够高效地在本地环境中实验和…