> 技术文档 > Java接入DeepSeek API,做个自己的问答机器人

Java接入DeepSeek API,做个自己的问答机器人

Hi,大家好,我是灰小猿,

大家都知道最近DeepSeek爆火,他以其优秀的大模型和支持深度推理和思考,受到了广大网友的热爱。那么作为Java程序员,如何在你的Java程序中接入deepseek实现聊天问答?所以今天咱们来点实战干货:用Java代码调通DeepSeek的API,做个能自动聊天的问答程序! 过程中可能会遇到各种“坑”,别慌,我会把我实践过程中遇到的常见问题和解决方法都列出来,保证你代码跑得飞起~


一、准备工作:先搞到“钥匙”和“地图”*

1. 申请API Key(钥匙)
  • 首先打开DeepSeek官网,注册账号 → 进入开发者中心 → 创建应用 → 拿到你的API Key(一串字符串,千万别泄露!)。
  • 如果找不到入口,这里点击“DeepSeek API文档”,里面有详细指引。
    Java接入DeepSeek API,做个自己的问答机器人
2. 查看API文档(地图)
  • 进入API文档:
  • 重点看这几个信息:
    • 请求地址:比如 https://api.deepseek.com/v1/chat(不同版本可能不同)
    • 请求方式:一般是POST
    • 请求头:需要带 AuthorizationContent-Type
    • 请求体格式:比如JSON格式的 {\"messages\": [...]}
      Java接入DeepSeek API,做个自己的问答机器人

二、写代码:四步搞定!

步骤1:创建一个Java项目

用IDEA或Eclipse新建个Java项目,别告诉我你还不会~

步骤2:添加HTTP请求库

推荐用 OkHttp(简单好用),在 pom.xml 里加依赖:

<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.3</version></dependency>
步骤3:核心代码——发请求,收回复

直接上代码(关键注释已标注👇):

import com.alibaba.fastjson.JSON;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;import okhttp3.*;import java.io.IOException;import java.util.Collections;public class DeepSeekClient02 { /** * 请求API地址 */ private static final String API_URL = \"https://api.deepseek.com/v1/chat/completions\"; /** * 你在DeepSeek官网申请的API KEY,注意不要泄露给他人! */ private static String API_KEY = \"you api key\"; private final OkHttpClient client = new OkHttpClient(); public String getResponse(String apiKey, String prompt) throws IOException { // 构建请求体 DeepSeekRequestModel.Message message = DeepSeekRequestModel.Message.builder() .role(\"user\") .content(prompt).build(); DeepSeekRequestModel requestBody = DeepSeekRequestModel.builder() .model(\"deepseek-chat\") .messages(Collections.singletonList(message)) .build(); //构建请求体json:{\"messages\":[{\"content\":\"你好,DeepSeek!\",\"role\":\"user\"}],\"model\":\"deepseek-chat\"} String jsonBody = JSON.toJSONString(requestBody); // 创建HTTP请求 Request request = new Request.Builder() .url(API_URL) .post(RequestBody.create(jsonBody, MediaType.get(\"application/json\"))) .addHeader(\"Authorization\", \"Bearer \" + apiKey) .build(); // 发送请求并处理响应 try (Response response = client.newCall(request).execute()) { //如果响应成功,并且返回体有内容,就输出内容,否则表示响应失败 if (response.isSuccessful() && response.body() != null) { return response.body().string(); } throw new IOException(\"Unexpected code \" + response); } } public static void main(String[] args) { String question = \"你好,DeepSeek!\"; try { String response = new DeepSeekClient02().getResponse(API_KEY, question); System.out.println(response); } catch (IOException e) { throw new RuntimeException(e); } }}

代码中用到的DeepSeekRequestModel:

import lombok.Builder;import lombok.Data;import java.util.List;/** * @author hxy */@Data@Builderpublic class DeepSeekRequestModel { /** * 所用DeepSeek模型 */ private String model; private List<Message> messages; /** * 消息体 */ @Data @Builder public static class Message { private String role; private String content; }}
步骤4:运行测试

直接运行 main 方法,如果看到DeepSeek的回复,恭喜你成功了!如果报错,继续往下看👇


三、常见问题 & 自救指南

1. 报错404:找不到地址
  • 检查点
    • API地址是否写错?比如少了个字母或多加了 /v2
    • 确认请求方法是 POST 不是 GET
  • 自救
    • 打开Postman,用相同参数测试,看是否成功。
2. 报错401:权限错误
  • 检查点
    • API Key是否正确?复制的时候别漏字符!
    • 请求头的 Authorization 格式是否正确?必须是 Bearer your_key(Bearer后有个空格!)
  • 自救
    • 去DeepSeek后台重新生成Key试试。
2. 报错401:余额不足
  • 检查点
    • 检查deepseek余额是否充足,
    • 调用deepseek的API是收费的,不过费用较低还可以,
  • 自救
    • 去DeepSeek后台充值账户余额后再试。不过我写文章这几天正好由于服务器资源紧张禁止充值了,后面应该会开放。 Java接入DeepSeek API,做个自己的问答机器人
3. 报错400:请求体格式错误
  • 检查点
    • JSON格式是否正确?比如引号是否闭合。
    • 字段名是否和文档一致?比如 messages 还是 message
  • 自救
    • 用在线JSON校验工具(如JSONLint)检查你的请求体。
4. 返回乱码或解析失败
  • 检查点
    • 是否忘记设置 Content-Type: application/json
    • 是否直接解析了错误信息(比如404页面)为JSON?
  • 自救
    • 打印出原始响应内容,先别急着解析,看看返回的是什么。
5. 网络超时
  • 检查点
    • 本地网络是否正常?试试访问其他网站。
    • 是否被防火墙拦截?
  • 自救
    • 在代码中设置超时时间:
      OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) // 10秒超时 .build();

除此之外,DeepSeek还给出了其他错误码的解决方案,具体都在API文档内,可以具体去文档中查看:

Java接入DeepSeek API,做个自己的问答机器人


四、进阶优化:让你的代码更专业

上面只是最基本的使用流程,如果API集成到实际应用中,应该要考虑如下问题:

  • 隐藏API Key:别把Key硬编码在代码里!用环境变量或配置文件。
  • 异常重试:网络波动时自动重试3次。
  • 异步请求:用OkHttp的异步方法,避免卡住界面。
  • 解析JSON回复:用Jackson或Gson提取回复内容,比如:
    // 假设返回格式是 {\"choices\": [{\"message\": {\"content\": \"回答内容\"}}]}JsonNode root = new ObjectMapper().readTree(jsonResponse);String answer = root.get(\"choices\").get(0).get(\"message\").get(\"content\").asText();

五、总结

总结一下,搞定DeepSeek API其实就三步:拿Key → 写请求 → 处理回复。遇到报错别慌,按错误码逐个排查,大部分问题都能解决。本文代码已测试通过,点赞收藏后赶紧动手试试吧!遇到问题欢迎评论区留言,咱们一起debug~

最后提醒:API调用可能有次数限制,玩坏了记得去官网看看配额哦!