【使用JAVA调用deepseek】构建自能回复

news/2025/10/7 20:27:06/文章来源:https://www.cnblogs.com/yxysuanfa/p/19128847

在Spring Boot系统中接入DeepSeek服务,并将其提供给用户使用,通常需要以下步骤:

一、准备工作
(1)注册DeepSeek开发者账号

访问DeepSeek官网,注册并创建应用,获取API Key。

API文档:DeepSeek文档

在这里插入图片描述
(2)查阅DeepSeek的API文档,了解接口地址、请求参数和返回格式。

(3)确保已有一个Spring Boot项目,或者创建一个新的Spring Boot项目。

(4)确保已有一个Spring Boot项目,或者创建一个新的Spring Boot项目。

(5)JDK版本必须17版本以上。

二、集成步骤

引入POM包

<
!-- deepseek 开始 -->
<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.12.0</version><!-- 用最新稳定版 --></dependency><!-- JSON处理 --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.10.1</version><!-- 使用最新稳定版本 --></dependency><!-- deepseek 结束 -->

三、创建请求类

import lombok.Data
;
import java.util.List
;
@Data
public
class ChatRequest {
private String model;
private List<
Message> messages;
@Data
public
static
class Message {
private String role;
private String content;
// 添加构造函数
public Message(String role, String content) {
this.role = role;
this.content = content;
}
}
}
import lombok.Data
;
import java.util.List
;
@Data
public
class DeepSeekResponse {
private List<
Choice> choices;
@Data
public
static
class Choice {
private Message message;
@Data
public
static
class Message {
private String role;
private String content;
}
}
}

四、请求参数类

import lombok.Data
;
/**
* 返回结果
*/
@Data
public
class ResultMess
{
//输入咨询内容
private String message;
}

五、实现调用

1.需要注意传入的api 需要换成自己再deepseek平台申请的api。
2.发送请求调用的地址是: https://api.deepseek.com/v1/chat/completions

import com.aigc.common.core.domain.AjaxResult
;
import org.springframework.web.bind.annotation.*
;
import org.springframework.web.client.RestTemplate
;
import org.springframework.http.HttpEntity
;
import org.springframework.http.HttpHeaders
;
import org.springframework.http.HttpMethod
;
import org.springframework.http.ResponseEntity
;
import java.util.List
;
/**
* deepseek 控制器
*/
@RestController
@RequestMapping
("/system/deepseek"
)
public
class DeepseekController
{
private
final RestTemplate restTemplate =
new RestTemplate(
)
;
public String callDeepSeek(String userMessage) {
// 记录请求开始时间
long startTime = System.currentTimeMillis(
)
;
// 设置请求头
HttpHeaders headers =
new HttpHeaders(
)
;
headers.set("Content-Type"
, "application/json"
)
;
//todo 传入对应的api key
headers.set("Authorization"
, "Bearer " + "sk-074d2b621ac6ef292"
)
;
// 构建请求体
ChatRequest request =
new ChatRequest(
)
;
request.setModel("deepseek-chat"
)
;
request.setMessages(List.of(
new ChatRequest.Message("user"
, userMessage)
)
)
;
// 发送请求
//todo https://api.deepseek.com/v1/chat/completions 调用地址
HttpEntity<
ChatRequest> entity =
new HttpEntity<
>(request, headers)
;
ResponseEntity<
DeepSeekResponse> response = restTemplate.exchange(
"https://api.deepseek.com/v1/chat/completions"
, HttpMethod.POST
, entity, DeepSeekResponse.
class
)
;
// 解析响应
String result;
if (response.getStatusCode(
).is2xxSuccessful(
) && response.getBody(
) !=
null
) {
result = response.getBody(
).getChoices(
).get(0
).getMessage(
).getContent(
)
;
}
else {
throw
new RuntimeException("Failed to call DeepSeek API: " + response.getStatusCode(
)
)
;
}
// 记录请求结束时间
long endTime = System.currentTimeMillis(
)
;
// 计算接口执行耗时
long duration = endTime - startTime;
System.out.println("调用 DeepSeek API 耗时: " + duration + " 毫秒"
)
;
return result;
}
/**
* 调用 deepseek 接口
* @param resultMess
*/
@PostMapping
("/chat"
)
public AjaxResult chat(@RequestBody
ResultMess resultMess) {
AjaxResult ajaxResult =
new AjaxResult(
)
;
//返回的结果
ajaxResult.put("message"
,
this.callDeepSeek(resultMess.getMessage(
)
)
)
;
ajaxResult.put("success"
, 200
)
;
return ajaxResult;
}
}

六、通过调用接口返回内容
在这里插入图片描述

七、调用之后想法

1.总体来说还可以把。
2.就是返回内容特别慢:调用 DeepSeek API 耗时: 38154 毫秒。
3.每次调用是0.01元

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

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

相关文章

1.2 马尔可夫决策过程(Markov Decision Process, MDP)

定义 强化学习(Reinforcement Learning, RL)方法适用于智能体(agent)以离散时间步与环境交互的问题(@fig-agentenv)。 在时间 \(t\),智能体处于状态 \(s_t\),并决定执行一个动作 \(a_t\)。在下一时刻,它进入新…

博弈论dp复习笔记

Stones 题目概述 集合 \(A\),小 \(X\) 和小 \(Y\) 选择其中一个数 \(x\),然后将石堆拿走 \(x\) 个,谁不能操作谁输,一开始石堆石头数量为 \(k\). 数据范围:\(1\leq k\leq 10^5,1\leq n\leq 100,1\leq a_i\leq 10^…

10.7阅读笔记

正当我对着空白的IDE发愁“该如何开始”时,这本书的《曳光弹开发》这一章给了我明确的方向。 ​​1. 曳光弹 vs. 原型—— 两种启动策略​​ 这是我第一次接触这两个概念,它们解决的是不同的问题。 ​​原型:用于探…

如果你的微信支付界面出现“摇一摇”,说明你的隐私正在泄露

你刚付完款,手机自己跳出摇一摇,红包没抢着,位置先被商家锁定。这不是错觉。<ignore_js_op>微信去年悄悄上线附近优惠,四月起推得更猛。很多人第一次见,以为中毒,其实是后台把付款记录和基站信号打包,算出…

多线程和网络总结

近期Python网络编程与多线程/多进程学习复盘 一、核心知识收获 1. 多线程与多进程编程多线程应用:实现图片下载(DownloadHanlder类继承Thread,重写run方法处理下载逻辑),利用线程并行处理网络IO任务,提高下载效率…

8.RV1126-OPENCV 视频中添加LOGO - 指南

8.RV1126-OPENCV 视频中添加LOGO - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

学习记录:响应式系统、文件通知与游戏输入机制的异同

引言 在学习前端开发和系统编程的过程中,我们常常会遇到“自动响应变化”的现象:Vue/React 中数据更新后 UI 自动刷新 删除文件后文件管理器图标立即消失 游戏中按下按键角色立刻移动这些现象看似都体现了“响应式”…

虎丘做网站价格个人网页设计作业总结

目录 写在开头1.了解情感分析的概念及其在实际应用中的重要性1.1 情感分析的核心概念1.1.1 情感极性1.1.2 词汇和上下文1.1.3 情感强度1.2 实际应用中的重要性 2. 使用情感分析库进行简单的情感分析2.1 TextBlob库的基本使用和优势2.1.1 安装TextBlob库2.1.2 文本情感分析示例2…

oppoR9m刷Linux系统: 制作 scatter.txt 和 导出手机preloader

前言全局说明COM、VCOM、9008模式备份系统与基带IMEI/NVRAM/QCN 前面两篇文章,用不同方式备份,这次用 MTK 自带的 COM、VCOM 方式备份。注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机…

做百科专用参考链接的网站仿站多少钱

前段时间,业务的虚机上安装了symantec Endpoint Protection(正版)&#xff0c; 发现虚机运行一段时间就会失去响应死机&#xff0c;并且有些安装symantec的虚机3389端口无法使用&#xff0c;怎么折腾都不行。最后决定卸载它。一、是否可以用停止服务和终止进程再卸载的方式卸载…

详细介绍:ASR技术(自动语音识别)深度解析

详细介绍:ASR技术(自动语音识别)深度解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

1.1 采样问题 Sampling and Bandits

n臂bandits(n-armed bandits) n臂bandits(multi-armed bandit)是最简单的试错式学习形式。学习与动作选择都发生在同一个状态中,在该状态下有 \(n\) 个可用动作,每个动作对应不同的奖励分布。目标是通过试错的方…

升级下载:进阶版(二级单工序)

升级下载:进阶版(二级单工序)Posted on 2025-10-07 20:09 EXLman 阅读(0) 评论(0) 收藏 举报. 当前款式:进阶版(二级单工序) . 文件名称:PXCtwobom.dll . 升级方法:下载解压后,直接替换该文件 .

绵阳 网站建设百度官网网址

最近接触一个新的传统项目&#xff0c;在联调过程中&#xff0c;查看日志特别不方便&#xff0c;既无trackId&#xff0c;即无接口耗时&#xff0c;所以写了该博客。话不多说&#xff0c;直接上代码 1、实体类user package com.yk.domain;import lombok.Data;Data public cla…

UCB-CS70_离散数学_个人笔记:至少和至多 - Zeeh

有趣的命题 在note1中,提出了两个关于“至少”和“至多”的命题:There are at least three distinct integers x that satisfy P(x). 有 最多 三个不同的整数x这满足p(x)。对于这两个命题,可以分别用下面两个式子…

太原网站制作开发域名怎么实名认证

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 找镜像&#xff1a; docker search nexus2. 拉取镜像&#xff1a;&#xff08;我已经拉取过&#xff0c;不选择版本时&#xff0c;默认…

模板做的网站 怎么提升排名商标设计公司推荐

冒泡排序 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素做同样的工作&#xff0c;从开始第一对到结尾的最后一对。在这一点&#xff0c;最后的元素应该会是最大的数。针对所有的元素重复以上的步骤&#xff0c;除了最后一个。持续每次对越…

10.7 NOIP 模拟赛 T2. 中心极限定理

思路 发现吃马不好维护, 考虑直接状态压缩马的存活情况, 可以做到 \(\mathcal{O} (n^2 2^m)\) 考虑进一步处理, 发现由于你的棋子不能回头, 吃掉一个马后, 最多走三步就跳出了马的范围, 所以我们可以直接把前两步的路线…

【题解】10.6 国庆中秋 提高组 热身赛

1.栅栏密码 题目传送门题目大意: 给定高度 h 和一行使用栅栏密码加密的密文字符串 s,请你输出一行明文字符串 plain。 即把明文排列成若干个 \/\/\/ 的形状,然后再逐行按从左到右的顺序取出字符,形成密文。STEP 1.…

深圳手机网站建设牛商网购物网站的排版

简介&#xff1a; 先说下什么是人脸识别系统&#xff1a;举个例子&#xff0c;公司门口有个人脸识别系统&#xff0c;员工站到门口&#xff0c;看着摄像头&#xff0c;大屏幕上会抓拍到你的人脸&#xff0c;然后和公司的员工照片库里的照片比对&#xff0c;比对成功就提示&…