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

【使用JAVA调用deepseek】实现自能回复

在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;@Datapublic 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;@Datapublic static class Choice {private Message message;@Datapublic 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 keyheaders.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.lryc.cn/news/2400736.html

相关文章:

  • 【Linux系列】rsync命令详解与实践
  • Windows系统工具:WinToolsPlus 之 SQL Server Suspect/质疑/置疑/可疑/单用户等 修复
  • C++——智能指针 unique_ptr
  • 【Python训练营打卡】day43 @浙大疏锦行
  • 1-【源码剖析】kafka核心概念
  • JavaScript中判断两个对象是否相同(所有属性的值是否都相同)
  • Flask 应用的生产环境部署指南
  • 思科设备网络实验
  • Oracle OCP与MySQL OCP认证如何选?
  • AWS之数据分析
  • C# Onnx 动漫人物头部检测
  • 【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
  • gin 常见中间件配置
  • 蚂蚁森林自动收能量助手:Ant_Forest_1_5_4_3绿色行动新选择
  • Zookeeper 集群部署与故障转移
  • Redis最佳实践——电商应用的性能监控与告警体系设计详解
  • 区域徘徊检测算法AI智能分析网关V4助力公共场所/工厂等多场景安全升级
  • 修复与升级suse linux
  • 电力高空作业安全检测(2)数据集构建
  • 嵌入式开发之STM32学习笔记day18
  • [论文阅读]PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning
  • 一键 Ubuntu、Debian、Centos 换源(阿里源、腾讯源等)
  • 汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析
  • 【C++高级主题】虚继承
  • 基于 ZYNQ 的实时运动目标检测系统设计
  • 数据结构(JAVA版)练习题
  • C#编程过程中变量用中文有啥影响?
  • 哈希表入门:用 C 语言实现简单哈希表(开放寻址法解决冲突)
  • [华为eNSP] 在eNSP上实现IPv4地址以及IPv4静态路由的配置
  • 2024年第十五届蓝桥杯青少组c++国赛真题——快速分解质因数