DeepSeek API 调用完整汇总文档(参数详解+Java Demo)
大约 5 分钟
DeepSeek API 调用完整汇总文档(参数详解+Java Demo)
一、基础调用信息
统一请求地址:https://api.deepseek.com/v1/chat/completions
认证方式:Header 携带 Authorization: Bearer sk\-xxxx
常用模型
通用对话模型:
deepseek\-chat(日常开发首选)代码专属模型:
deepseek\-coder(代码生成、纠错、解析)
二、请求参数详解(表格极简版)
2.1 必传核心参数
| 参数名 | 数据类型 | 参数说明 | 使用示例 |
|---|---|---|---|
| model | String | 指定调用的AI模型,固定参数 | deepseek-chat |
| messages | Array | 对话上下文数组,支持系统提示、用户提问、助手回复 | [{"role":"user","content":"你好"}] |
2.2 messages 标准格式示例(示意)
对话消息为固定数组结构,支持单轮/多轮对话,是接口核心入参,标准通用格式如下:
[
{"role":"system","content":"你是专业、简洁的技术助手,回答通俗易懂"},
{"role":"user","content":"请解释一下AI大模型的工作原理"}
]
多轮对话格式(携带历史上下文)
[
{"role":"system","content":"你是专业、简洁的技术助手"},
{"role":"user","content":"什么是Java"},
{"role":"assistant","content":"Java是一种跨平台的面向对象编程语言"},
{"role":"user","content":"它的核心优势是什么"}
]
2.3 可调优化参数(重点)
| 参数名 | 取值范围 | 默认值 | 核心作用(大白话) | 业务使用建议 |
|---|---|---|---|---|
| temperature | 0 ~ 2 | 0.7 | 控制回答的随机性、创意度。数值越小,回答越稳定、精准、重复度低;数值越大,脑洞越大、越灵活、易发散 | 精准问答/数学计算/代码:0.0-0.3日常聊天/通用问答:0.7创意写作/写诗/文案:1.0-1.5 |
| top_p | 0 ~ 1 | 1.0 | 核采样,限制模型选词的概率范围,和temperature效果类似,不建议同时调整 | 新手固定1.0即可,无需修改 |
| max_tokens | 正整数 | 无限制 | 限制模型最大输出token数,控制回答长度(1token ≈ 0.75个汉字) | 短问答:300长文案/代码:1000-2000 |
| stream | Boolean | false | 是否开启流式输出。false:一次性返回完整结果;true:逐字分段返回(聊天界面适配) | 后台接口调用:false前端实时聊天:true |
| frequency_penalty | -2 ~ 2 | 0 | 频率惩罚,抑制语句、词汇重复。正数减少重复,负数鼓励重复 | 通用场景默认0,重复严重时设0.2-0.5 |
| presence_penalty | -2 ~ 2 | 0 | 主题惩罚,抑制对话主题重复,正数更容易拓展新内容 | 多轮对话可设0.2,单轮对话默认0 |
2.4 messages 角色说明
| 角色role | 作用说明 |
|---|---|
| system | 系统提示,用于设定AI人设、规则、回答风格(全局生效) |
| user | 用户提问内容,每轮对话核心入参 |
| assistant | AI历史回复,用于拼接多轮对话上下文 |
三、通用返回字段说明
| 字段 | 说明 |
|---|---|
| choices[0].message.content | AI最终回复内容 |
| usage.prompt_tokens | 输入提问消耗token |
| usage.completion_tokens | 输出回复消耗token |
| usage.total_tokens | 本次请求总消耗token(计费依据) |
四、CURL 快速调试调用(命令行)
无需搭建项目,可直接复制到终端运行,用于快速调试接口连通性、参数有效性,开发自测首选。
# 替换自己的 sk-xxx API_KEY
curl https://api.deepseek.com/v1/chat/completions \
-H "Content-Type: application/json;charset=UTF-8" \
-H "Authorization: Bearer sk-你的DeepSeek密钥" \
-d '{
"model": "deepseek-chat",
"temperature": 0.7,
"max_tokens": 800,
"stream": false,
"messages": [
{"role":"system","content":"你是一名专业的技术助手,回答简洁清晰"},
{"role":"user","content":"简单介绍一下DeepSeek AI"}
]
}'
五、Java 完整调用Demo
4.1 项目依赖(Maven)
采用轻量工具类,无冗余依赖,适配所有Java项目
<!-- HTTP请求工具 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-http</artifactId>
<version>5.8.25</version>
</dependency>
<!-- JSON解析工具 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.32</version>
</dependency>
4.2 普通调用Demo(一次性返回结果,常用)
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import cn.hutool.http.HttpRequest;
/**
* DeepSeek API 普通同步调用
* 适用场景:后台批量处理、接口问答、非实时展示
*/
public class DeepSeekChatDemo {
// 全局配置
private static final String API_KEY = "sk-你的DeepSeek密钥";
private static final String API_URL = "https://api.deepseek.com/v1/chat/completions";
public static void main(String[] args) {
// 1. 构建请求参数
JSONObject requestBody = new JSONObject();
requestBody.put("model", "deepseek-chat");
requestBody.put("temperature", 0.7);
requestBody.put("max_tokens", 1000);
requestBody.put("stream", false);
// 2. 构建对话消息
JSONArray messages = new JSONArray();
// 设置AI人设
messages.add(JSONObject.of("role", "system", "content", "你是一名专业的技术助手,回答简洁准确"));
// 用户提问
messages.add(JSONObject.of("role", "user", "content", "简述Java多线程核心原理"));
requestBody.put("messages", messages);
// 3. 发送POST请求
String result = HttpRequest.post(API_URL)
.header("Authorization", "Bearer " + API_KEY)
.header("Content-Type", "application/json;charset=UTF-8")
.body(requestBody.toJSONString())
.execute()
.body();
// 4. 打印结果
System.out.println("AI回复结果:");
System.out.println(result);
}
}
4.3 流式调用Demo(逐字输出,适配聊天页面)
import com.alibaba.fastjson2.JSONObject;
import cn.hutool.http.HttpRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* DeepSeek API 流式调用
* 适用场景:前端实时聊天、打字机效果回复
*/
public class DeepSeekStreamDemo {
private static final String API_KEY = "sk-你的DeepSeek密钥";
private static final String API_URL = "https://api.deepseek.com/v1/chat/completions";
public static void main(String[] args) {
// 1. 构建请求参数
JSONObject requestBody = new JSONObject();
requestBody.put("model", "deepseek-chat");
requestBody.put("temperature", 1.0);
requestBody.put("stream", true); // 开启流式输出
// 2. 构建对话消息
requestBody.put("messages", new JSONObject[]{
JSONObject.of("role", "system", "content", "你是一名文案创作助手"),
JSONObject.of("role", "user", "content", "写一段秋日治愈短句")
});
// 3. 异步流式请求
try {
HttpRequest.post(API_URL)
.header("Authorization", "Bearer " + API_KEY)
.header("Content-Type", "application/json;charset=UTF-8")
.body(requestBody.toJSONString())
.executeAsync(response -> {
// 读取流式返回数据
BufferedReader reader = new BufferedReader(new InputStreamReader(response.bodyStream()));
String line;
while ((line = reader.readLine()) != null) {
// 过滤有效数据流
if (line.startsWith("data:") && !"data: [DONE]".equals(line)) {
System.out.print(line.replace("data: ", ""));
}
}
reader.close();
});
} catch (Exception e) {
System.err.println("流式调用异常:" + e.getMessage());
e.printStackTrace();
}
}
}
六、常见报错总结
401 权限错误:API Key 错误、过期或未填写
429 限流错误:请求频率过高,触发接口限流,需休眠重试
500 服务器错误:DeepSeek服务端异常,重试一次即可
内容截断:max_tokens 设置过小,增大参数值
(注:文档部分内容可能由 AI 生成)