DeepSeek API 调用完整汇总文档(参数详解+Java Demo)

lishihuan大约 5 分钟

DeepSeek API 调用完整汇总文档(参数详解+Java Demo)

一、基础调用信息

统一请求地址https://apiopen in new window.deepseek.com/v1/chat/completions

认证方式:Header 携带 Authorization: Bearer sk\-xxxx

常用模型

  • 通用对话模型:deepseek\-chat(日常开发首选)

  • 代码专属模型:deepseek\-coder(代码生成、纠错、解析)

二、请求参数详解(表格极简版)

2.1 必传核心参数

参数名数据类型参数说明使用示例
modelString指定调用的AI模型,固定参数deepseek-chat
messagesArray对话上下文数组,支持系统提示、用户提问、助手回复[{"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 可调优化参数(重点)

参数名取值范围默认值核心作用(大白话)业务使用建议
temperature0 ~ 20.7控制回答的随机性、创意度。数值越小,回答越稳定、精准、重复度低;数值越大,脑洞越大、越灵活、易发散精准问答/数学计算/代码:0.0-0.3日常聊天/通用问答:0.7创意写作/写诗/文案:1.0-1.5
top_p0 ~ 11.0核采样,限制模型选词的概率范围,和temperature效果类似,不建议同时调整新手固定1.0即可,无需修改
max_tokens正整数无限制限制模型最大输出token数,控制回答长度(1token ≈ 0.75个汉字)短问答:300长文案/代码:1000-2000
streamBooleanfalse是否开启流式输出。false:一次性返回完整结果;true:逐字分段返回(聊天界面适配)后台接口调用:false前端实时聊天:true
frequency_penalty-2 ~ 20频率惩罚,抑制语句、词汇重复。正数减少重复,负数鼓励重复通用场景默认0,重复严重时设0.2-0.5
presence_penalty-2 ~ 20主题惩罚,抑制对话主题重复,正数更容易拓展新内容多轮对话可设0.2,单轮对话默认0

2.4 messages 角色说明

角色role作用说明
system系统提示,用于设定AI人设、规则、回答风格(全局生效)
user用户提问内容,每轮对话核心入参
assistantAI历史回复,用于拼接多轮对话上下文

三、通用返回字段说明

字段说明
choices[0].message.contentAI最终回复内容
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 生成)