SpringBoot中调用DeepSeek

目录

零、结论

一、创建DeepSeek的api

1. 进入DeepSeek官网,进入Api开放平台

2. 先充值

3. 创建api

二、发送请求和接收请求

0.结论

 1.发送参数

1.1 点开接口文档

 1.2 找到对话补全部分

1.3 可以看到该页面的顶部的这个网址

1.4 可以看到右边有个Request,往下拉

​编辑 2. 接收参数

2.1 将Key填写在Token部分

2.2 点击发送

2.3 查看参数

三、部署

四、代码讲解

五、代码


零、结论

代码已放在最后面,下载代码,导入maven项目,修改application.yaml中的内容即可运行

不会运行的或者不知道原理的可以看下下面的

一、创建DeepSeek的api

1. 进入DeepSeek官网,进入Api开放平台

https://www.deepseek.com/

2. 先充值

(也可以部署完之后再充值,免得部署失败白交钱了对吧),这样api才可以使用,点击自定义,充个一块钱就行,可以用很久了。 

3. 创建api

名称随意填,之后生成的Key记得保存起来

二、发送请求和接收请求

0.结论

请求头的Authorization参数设置为"Bearer "+Key;发送请求参数为json数据,接收响应也为json数据

 1.发送参数

1.1 点开接口文档

博主教学的只是基础版本,以后不懂的可以查看该文档。

 1.2 找到对话补全部分

1.3 可以看到该页面的顶部的这个网址

也就是我们使用对话补全的发送请求的基本网址,其它功能的基本网址可能是不一样的 

1.4 可以看到右边有个Request,往下拉

发送请求主要有头信息和主体信息嘛。头信息我们只要记住一个重要的参数就行:

Authorization为"Bearer "+Key。

然后主体(body)信息的话,可以看到是使用json格式进行发送的,也只需要设置几个重要的参数就行

message部分:里面有两个角色,一个是system,也就是ai,content是提示它作为什么身份进行作答的,另一个是user,也就是发送信息方,content部分就是我们发送的消息内容

model部分:使用的是deepseek模型。事实上大部分ai网站发送请求和接收请求的参数都差不多,因此该文章也可以套用于其它ai网站,比如调用chatgpt的api,我们只需要改一下网址和model就可以了。

max_tokens:该对话最多使用的token数量

其它参数可以看网站中间的内容介绍的,不是特别重要

 2. 接收参数

2.1 将Key填写在Token部分

然后将content部分修改为你想提问的问题

2.2 点击发送

2.3 查看参数

可以看到发送回来的响应为json数据,里面有很多数据,这里我们只需要提取响应回来的文字部分就可以,也就是choices里面的message的content部分。其它数据暂时不用理。 

三、部署

打开application.yaml文件,修改端口,修改数据库信息,修改api-key为自己的。其它文件不用修改,就可以运行了。

server:
  port: 8082

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/deepseek?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

ai:
  base-url: "https://api.deepseek.com/chat/completions"
  api-key: "sk-13145d349d194c9aa2190d"
  messages:
    - content: "You are an assistant"
      role: "system"
    - content: ""
      role: "user"
  model: "deepseek-chat"
  max-tokens: 1028
  temperature: 1

 启动之后,测试一下,可以看到deepseek发送回来的内容,测试成功

http://localhost:8082/ai/sendText/鲁迅和周树人谁更厉害

四、代码讲解

代码就是简单的SpringBoot代码,不是很复杂,懂的看一下就懂,不懂的也很难讲明白。AiServiceImpl复杂一点,可以慢慢分析一下,不过不懂也没事,会调包运行就行。 

五、代码

两种方式下载的代码都一样的

1. 通过网盘分享的文件:SpringBoot+DeepSeek

https://pan.baidu.com/s/1JyAQQ6-7R0PBjv306kG7dw?pwd=1314

提取码: 1314

 2. 在gitee中下载

https://gitee.com/guirongyuan/springboot-deepseek.git

### SpringBoot 调用 DeepSeek 的实现 #### 创建 API Key 为了使应用程序能够访问 DeepSeek 接口,需先创建 `deepseek` API key。这一步骤对于确保安全性和身份验证至关重要[^1]。 #### 添加依赖项 在项目的 `pom.xml` 文件中加入必要的 Maven 依赖来支持 HTTP 请求和其他可能需要的功能: ```xml <dependencies> <!-- 其他已有依赖 --> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> </dependencies> ``` 上述代码片段展示了如何引入 OkHttp 和 Jackson 库用于发起网络请求以及处理 JSON 数据交换[^2]。 #### 编写服务类 定义一个 Java 类来进行实际的服务调用操作,在此类内部封装了向 DeepSeek 发送 POST 请求的方法: ```java import okhttp3.*; import com.fasterxml.jackson.databind.ObjectMapper; public class DeepSeekService { private static final String BASE_URL = "https://api.deepseek.com/v1"; private OkHttpClient client; private ObjectMapper mapper; public DeepSeekService(String apiKey) { this.client = new OkHttpClient(); this.mapper = new ObjectMapper(); // 设置默认头部信息 Headers headers = new Headers.Builder() .add("Authorization", "Bearer " + apiKey) .build(); Request request = new Request.Builder().url(BASE_URL).headers(headers).build(); } /** * 向DeepSeek发送查询请求. */ public Response sendQuery(String queryText) throws Exception{ JSONObject jsonBody = new JSONObject(); jsonBody.put("prompt", queryText); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, jsonBody.toString()); Request request = new Request.Builder() .url(BASE_URL + "/query") .post(body) .build(); Call call = client.newCall(request); return call.execute(); } } ``` 这段程序实现了通过给定的 API 密钥初始化客户端对象,并提供了一个方法用来执行具体的查询任务。 #### 控制器层接口设计 最后,在控制器层面暴露 RESTful 风格的端点供外部调用者使用: ```java @RestController @RequestMapping("/api/deepseek") public class DeepSeekController { @Autowired private DeepSeekService service; @PostMapping("/query") public ResponseEntity<String> handlePost(@RequestBody Map<String,String> payload){ try { String result = service.sendQuery(payload.get("text")).body().string(); return ResponseEntity.ok(result); } catch (Exception e) { return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } } } ``` 此部分负责接收来自前端或其他系统的 POST 请求并将它们转发至之前构建的服务逻辑中去处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值