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

完整调用DeepSeek篇(java)

第一步(先配置密钥变量),在yml文件写配置变量

ai:deepseek:api-key: ""

第二步,在controller层

import org.springframework.beans.factory.annotation.Value;
@Value("${ai.deepseek.api-key:}")private String apiKey;

至此,密钥变量配置完成  

正篇开始

1.引入依赖

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestBody;
import org.apache.catalina.connector.Request;

2.新建个接口,添加下面方法

try{      //  准备DeepSeek API请求数据  我这里requestData 是添加对应的用户数据Map<String, Object> requestData = new HashMap<>();requestData.put("report_diagnose", pacsReport.getReportDiagnose());// 将apiKey传递给service层String aiAnalysisResult = healthRecordsService.callDeepSeekApi(requestData, apiKey);// 4. 构建响应数据Map<String, Object> responseData = new HashMap<>();responseData.put("report", pacsReport);responseData.put("aiAnalysis", aiAnalysisResult);return new BaseResponse().success().data(responseData);} catch (Exception e) {log.error("报告AI分析失败", e);return new BaseResponse().fail().message("分析失败:" + e.getMessage());}
3.healthRecordsService.callDeepSeekApi
public String callDeepSeekApi(Map<String, Object> data, String apiKey) {// DeepSeek API配置String apiUrl = "https://api.deepseek.com/v1/chat/completions";// 构建提示词StringBuilder prompt = new StringBuilder();//这是我自己的数据String reportName = (String) data.get("reportName");String finding = (String) data.get("finding");String summary = (String) data.get("summary");prompt.append("作为一名专业的AI助手,请帮我分析以下报告,并提供通俗易懂的解释。\n\n");prompt.append("报告名称:").append(reportName).append("\n");if (finding != null && !finding.trim().isEmpty()) {prompt.append("检查发现:").append(finding).append("\n");}prompt.append("\n请解释这个报告的主要发现,用通俗易懂的语言(避免专业用语)说明报告的意义,以及是否有异常情况。");prompt.append("如果有异常,请简单说明这些异常的含义,以及可能需要注意的事项。");try {// 构建请求体Map<String, Object> requestBody = new HashMap<>();requestBody.put("model", "deepseek-chat");List<Map<String, String>> messages = new ArrayList<>();Map<String, String> userMessage = new HashMap<>();userMessage.put("role", "user");userMessage.put("content", prompt.toString());messages.add(userMessage);requestBody.put("messages", messages);requestBody.put("temperature", 0.2);requestBody.put("max_tokens", 2233);// 构建HTTP请求头HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.set("Authorization", "Bearer " + apiKey);// 打印请求信息用于调试log.info("请求URL: {}", apiUrl);log.info("请求头Authorization: Bearer {}", apiKey);log.info("请求体: {}", JSONObject.toJSONString(requestBody));HttpEntity<String> requestEntity = new HttpEntity<>(JSONObject.toJSONString(requestBody), headers);// 发送请求并获取响应RestTemplate restTemplate = new RestTemplate();ResponseEntity<String> response = restTemplate.postForEntity(apiUrl, requestEntity, String.class);// 打印响应用于调试log.info("API响应状态码: {}", response.getStatusCodeValue());log.info("API响应内容: {}", response.getBody());// 解析响应JSONObject responseJson = JSONObject.parseObject(response.getBody());JSONObject choice = responseJson.getJSONArray("choices").getJSONObject(0);JSONObject message = choice.getJSONObject("message");return message.getString("content");} catch (Exception e) {log.error("调用DeepSeek API异常", e);return "调用AI分析服务失败:" + e.getMessage();}}

http://www.xdnf.cn/news/22231.html

相关文章:

  • 项目实战--新闻分类
  • 信息系统项目管理师_第十一章 项目采购管理
  • win10系统完美配置mamba-ssm全整合方案
  • 爱普生RX8010SJ实时时钟模块在安防监控设备中的应用
  • 守护进程编程以及ssh反向代理
  • AUTOSAR图解==>AUTOSAR_SWS_CryptoInterface
  • 淘宝商品搜索爬虫:Python 实现教程
  • 江苏广电HC2910-创维代工-Hi3798cv200-2+8G-海美迪安卓7.0-强刷包
  • 深度学习-torch,全连接神经网路
  • 软硬链接与动静态库基本概念(快速回顾)
  • 浅析数据库面试问题
  • `get_peft_model` 是 `peft` 库什么方法
  • 【CPP】死锁产生、排查、避免
  • 国内主要半导体厂家
  • Java 接入deepseek(非流式)
  • 数据资产登记导则详解 | 企业如何规范化登记与管理数据资产?
  • 机械臂速成小指南(二十五):机械臂与人工智能的有机结合
  • 基于 S2SH 架构的企业车辆管理系统:设计、实现与应用
  • OOM 未触发 JVM 崩溃的可能原因
  • 椰汁椰肉生产车间设计
  • 怎么隐藏QTabWidget内的页面
  • Git 解决“Filename too long”问题
  • 企业应用大模型报告:如何应对变革,构建专属“我的AI”
  • 生物化学笔记:医学免疫学原理22 肿瘤及肿瘤治疗
  • vue3+vite 实现.env全局配置
  • 大模型时代:AI应用的变革与挑战
  • 冰箱在储存各种疫苗时要经过多少道程序又会面临哪些风险?
  • linux获取cpu使用率(sy%+us%)
  • 文件二进制读写和文本读写以及编码解码
  • Android 12系统静态壁纸深度定制指南