【使用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包

java 复制代码
  <!-- 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 结束 -->

三、创建请求类

java 复制代码
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;
        }
    }
}
java 复制代码
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;
        }
    }
}

四、请求参数类

java 复制代码
import lombok.Data;


/**
 * 返回结果
 */
@Data
public class ResultMess
{

    //输入咨询内容
    private String message;


}

五、实现调用

1.需要注意传入的api 需要换成自己再deepseek平台申请的api。

2.发送请求调用的地址是: https://api.deepseek.com/v1/chat/completions

java 复制代码
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元

相关推荐
小蒜学长3 分钟前
django全国小米su7的行情查询系统(代码+数据库+LW)
java·数据库·spring boot·后端
杨杨杨大侠13 分钟前
第2章:设计核心接口和事件模型
java·github·eventbus
杨杨杨大侠19 分钟前
第1章:事件驱动框架基础概念
java·github·eventbus
半夏陌离19 分钟前
SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
java·数据库·mybatis
程序员皮皮林1 小时前
Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
java·开发语言·jar
橙序员小站1 小时前
搞定系统面试题:如何实现分布式Session管理
java·后端·面试
叫我阿柒啊2 小时前
从Java全栈到Vue3实战:一次真实面试中的技术探索
java·数据库·spring boot·微服务·typescript·vue3·restful
武子康2 小时前
Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
java·大数据·数据库·分布式·sql·mysql·性能优化
努力努力再努力wz2 小时前
【c++进阶系列】:万字详解AVL树(附源码实现)
java·运维·开发语言·c++·redis
爱学习de测试小白2 小时前
13-Java-面向对象-封装和this关键字
java