上一篇 下一篇 分享链接 返回 返回顶部

DeepSeek API 调用实战:从 Key 配置到 curl、Python、Node.js 完整示例

发布人:慈云数据-客服中心 发布时间:6小时前 阅读量:1

DeepSeek API接口调用教程|附完整命令

随着大语言模型在内容生成、代码辅助、智能客服、数据分析等场景中的广泛应用,越来越多开发者开始将 DeepSeek 接入到自己的业务系统中。DeepSeek 提供了相对友好的 API 调用方式,并且在接口设计上兼容 OpenAI 风格,因此无论你是做后端开发、前端应用、自动化脚本,还是搭建 AI Agent,都可以比较快速地完成接入。

本文将以中文教程的形式,系统讲解 DeepSeek API 的调用方法,包括账号准备、API Key 获取、接口地址、curl 命令调用、Python 调用、Node.js 调用、流式输出、参数说明以及常见问题处理。文中会附上完整命令,方便你直接复制使用。


一、DeepSeek API 简介

DeepSeek API 是 DeepSeek 面向开发者提供的模型调用接口。通过 API,你可以在自己的程序中向 DeepSeek 模型发送请求,并获得模型生成的回复。

常见使用场景包括:

  • 智能聊天机器人
  • 企业知识库问答
  • 文案生成
  • 代码生成与代码解释
  • 数据摘要与分析
  • 自动化办公助手
  • AI 客服系统
  • 多轮对话应用
  • AI Agent 工具调用系统

DeepSeek API 通常采用 HTTP 请求方式调用,请求和响应数据格式一般为 JSON。其调用方式与 OpenAI Chat Completions 接口风格类似,因此已有 OpenAI 接入经验的开发者可以非常快地迁移。


二、调用前准备

在正式调用 DeepSeek API 之前,你需要完成以下准备工作。

1. 注册 DeepSeek 开发者账号

首先访问 DeepSeek 官方平台,并注册账号。注册完成后,进入 API 管理或开发者控制台。

一般流程如下:

  1. 打开 DeepSeek 官方网站;
  2. 登录或注册账号;
  3. 进入 API Keys 管理页面;
  4. 创建新的 API Key;
  5. 保存生成的 Key。

注意:API Key 通常只会完整展示一次,请务必妥善保存。不要将 API Key 上传到 GitHub、公开论坛或前端代码中。


2. 获取 API Key

API Key 是调用接口时用于身份认证的凭证。调用 DeepSeek API 时,一般需要在请求头中加入:

Authorization: Bearer YOUR_DEEPSEEK_API_KEY

其中 YOUR_DEEPSEEK_API_KEY 替换成你自己的真实 Key。

例如:

Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx

为了安全起见,建议不要直接在代码中硬编码 API Key,而是使用环境变量进行管理。


三、DeepSeek API 基础信息

DeepSeek API 的常见基础地址为:

https://api.deepseek.com

聊天补全接口通常为:

https://api.deepseek.com/chat/completions

完整请求地址:

POST https://api.deepseek.com/chat/completions

常用模型名称示例:

deepseek-chat
deepseek-reasoner

其中:

模型名称 说明
deepseek-chat 通用对话模型,适合聊天、写作、总结、代码等常规任务
deepseek-reasoner 推理模型,适合数学、逻辑推理、复杂问题分析等任务

实际可用模型请以 DeepSeek 官方文档和控制台显示为准。


四、使用 curl 调用 DeepSeek API

curl 是最直接的 API 测试方式,适合快速验证接口是否可用。

1. 最简单的 curl 调用命令

下面是一个完整的 DeepSeek API 调用命令:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "system",
        "content": "你是一个专业、严谨、友好的中文AI助手。"
      },
      {
        "role": "user",
        "content": "请用通俗语言解释什么是大语言模型。"
      }
    ],
    "temperature": 0.7,
    "max_tokens": 1000
  }'

将其中的:

YOUR_DEEPSEEK_API_KEY

替换成你的真实 API Key 即可。


2. curl 返回结果示例

接口返回结果通常类似下面这样:

{
  "id": "chatcmpl-xxxx",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "deepseek-chat",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "大语言模型可以理解为一种经过大量文本训练的人工智能系统..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 30,
    "completion_tokens": 120,
    "total_tokens": 150
  }
}

你真正需要读取的内容一般是:

choices[0].message.content

也就是模型生成的回答文本。


五、使用环境变量保存 API Key

为了避免 API Key 泄露,推荐使用环境变量。

1. Linux / macOS 设置环境变量

export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"

然后调用时可以这样写:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "请写一段关于春天的短文。"
      }
    ]
  }'

如果希望长期生效,可以将环境变量写入:

~/.bashrc

或:

~/.zshrc

例如:

echo 'export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"' >> ~/.zshrc
source ~/.zshrc

2. Windows PowerShell 设置环境变量

临时设置:

$env:DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"

调用命令:

curl https://api.deepseek.com/chat/completions `
  -H "Content-Type: application/json" `
  -H "Authorization: Bearer $env:DEEPSEEK_API_KEY" `
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "请解释一下API是什么。"
      }
    ]
  }'

永久设置可以使用:

setx DEEPSEEK_API_KEY "YOUR_DEEPSEEK_API_KEY"

设置完成后,需要重新打开终端窗口才能生效。


六、DeepSeek API 请求参数说明

调用 DeepSeek Chat Completions 接口时,常见请求参数如下。

1. model

指定使用的模型。

示例:

"model": "deepseek-chat"

或:

"model": "deepseek-reasoner"

2. messages

messages 是对话消息数组,是最核心的参数。

示例:

"messages": [
  {
    "role": "system",
    "content": "你是一个专业的法律文书助手。"
  },
  {
    "role": "user",
    "content": "请帮我起草一份租房合同摘要。"
  }
]

其中 role 常见有三种:

role 含义
system 系统指令,用来设定助手身份、风格和规则
user 用户输入的问题或任务
assistant 模型之前的回答,常用于多轮对话上下文

例如,多轮对话可以这样写:

"messages": [
  {
    "role": "system",
    "content": "你是一个中文学习助手。"
  },
  {
    "role": "user",
    "content": "请解释成语画蛇添足。"
  },
  {
    "role": "assistant",
    "content": "画蛇添足的意思是做了多余的事情,反而把事情弄糟。"
  },
  {
    "role": "user",
    "content": "请再造一个句子。"
  }
]

3. temperature

temperature 用于控制回答的随机性。

示例:

"temperature": 0.7

一般建议:

场景 推荐值
严谨问答、代码生成 0.1 - 0.3
普通聊天、摘要 0.5 - 0.7
创意写作、营销文案 0.8 - 1.0

数值越低,回答越稳定;数值越高,回答越发散。


4. max_tokens

max_tokens 用于限制模型最多生成多少 token。

示例:

"max_tokens": 1000

如果你只需要简短回答,可以设置为:

"max_tokens": 300

如果你需要长文输出,可以设置更高,但要注意上下文长度和费用。


5. stream

stream 用于控制是否开启流式输出。

普通输出:

"stream": false

流式输出:

"stream": true

流式输出适合聊天机器人,因为它可以让用户看到模型逐字或逐段输出,而不是等全部生成完毕后一次性返回。


七、使用 curl 实现流式输出

如果你希望像 ChatGPT 网页版一样边生成边显示,可以使用流式输出。

完整命令如下:

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "请写一篇关于人工智能未来发展的短文。"
      }
    ],
    "stream": true
  }'

流式返回通常会以 SSE 格式返回多段数据,例如:

data: {"choices":[{"delta":{"content":"人工"}}]}

data: {"choices":[{"delta":{"content":"智能"}}]}

data: {"choices":[{"delta":{"content":"正在"}}]}

data: [DONE]

在实际程序中,需要逐行读取返回内容,并解析 data: 后面的 JSON。


八、使用 Python 调用 DeepSeek API

Python 是调用 DeepSeek API 最常用的语言之一,适合做脚本、后端服务、数据处理和 AI 应用开发。


1. 使用 requests 调用

首先安装依赖:

pip install requests

然后创建文件:

touch deepseek_demo.py

写入以下代码:

import os
import requests

api_key = os.getenv("DEEPSEEK_API_KEY")

if not api_key:
    raise RuntimeError("请先设置环境变量 DEEPSEEK_API_KEY")

url = "https://api.deepseek.com/chat/completions"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

payload = {
    "model": "deepseek-chat",
    "messages": [
        {
            "role": "system",
            "content": "你是一个专业、简洁的中文AI助手。"
        },
        {
            "role": "user",
            "content": "请用三句话介绍DeepSeek API的用途。"
        }
    ],
    "temperature": 0.7,
    "max_tokens": 800
}

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
answer = data["choices"][0]["message"]["content"]

print(answer)

运行命令:

python deepseek_demo.py

2. Python 流式输出示例

如果需要流式输出,可以这样写:

import os
import json
import requests

api_key = os.getenv("DEEPSEEK_API_KEY")

if not api_key:
    raise RuntimeError("请先设置环境变量 DEEPSEEK_API_KEY")

url = "https://api.deepseek.com/chat/completions"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {api_key}"
}

payload = {
    "model": "deepseek-chat",
    "messages": [
        {
            "role": "user",
            "content": "请写一首关于秋天的现代诗。"
        }
    ],
    "stream": True
}

with requests.post(url, headers=headers, json=payload, stream=True) as response:
    response.raise_for_status()

    for line in response.iter_lines(decode_unicode=True):
        if not line:
            continue

        if line.startswith("data: "):
            data = line[len("data: "):]

            if data == "[DONE]":
                break

            chunk = json.loads(data)
            delta = chunk["choices"][0].get("delta", {})
            content = delta.get("content", "")

            if content:
                print(content, end="", flush=True)

运行:

python deepseek_stream.py

九、使用 OpenAI SDK 调用 DeepSeek API

由于 DeepSeek API 兼容 OpenAI 风格,因此也可以使用 OpenAI SDK,并通过修改 base_url 的方式调用 DeepSeek。

1. 安装 OpenAI Python SDK

pip install openai

2. Python SDK 调用示例

创建文件:

touch deepseek_openai_sdk.py

代码如下:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

completion = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {
            "role": "system",
            "content": "你是一个专业的中文写作助手。"
        },
        {
            "role": "user",
            "content": "请写一段适合公众号开头的人工智能介绍。"
        }
    ],
    temperature=0.7,
    max_tokens=1000
)

print(completion.choices[0].message.content)

运行命令:

python deepseek_openai_sdk.py

十、使用 Node.js 调用 DeepSeek API

如果你正在开发 Web 应用、Node.js 后端服务或聊天机器人,也可以很方便地调用 DeepSeek API。


1. 使用 fetch 调用

Node.js 18 及以上版本内置 fetch,无需额外安装依赖。

创建项目:

mkdir deepseek-node-demo
cd deepseek-node-demo
npm init -y

创建文件:

touch index.js

写入代码:

const apiKey = process.env.DEEPSEEK_API_KEY;

if (!apiKey) {
  throw new Error("请先设置环境变量 DEEPSEEK_API_KEY");
}

async function main() {
  const response = await fetch("https://api.deepseek.com/chat/completions", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${apiKey}`
    },
    body: JSON.stringify({
      model: "deepseek-chat",
      messages: [
        {
          role: "system",
          content: "你是一个专业的中文AI助手。"
        },
        {
          role: "user",
          content: "请用五个要点说明API接口调用的基本流程。"
        }
      ],
      temperature: 0.7,
      max_tokens: 800
    })
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`请求失败:${response.status} ${errorText}`);
  }

  const data = await response.json();
  console.log(data.choices[0].message.content);
}

main().catch(console.error);

运行命令:

node index.js

2. Node.js 使用 OpenAI SDK 调用

安装依赖:

npm install openai

如果使用 CommonJS,可以创建 index.js

const OpenAI = require("openai");

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: "https://api.deepseek.com"
});

async function main() {
  const completion = await client.chat.completions.create({
    model: "deepseek-chat",
    messages: [
      {
        role: "system",
        content: "你是一个专业的技术文档助手。"
      },
      {
        role: "user",
        content: "请解释什么是RESTful API。"
      }
    ],
    temperature: 0.5
  });

  console.log(completion.choices[0].message.content);
}

main();

运行:

node index.js

如果使用 ES Module,可以在 package.json 中加入:

{
  "type": "module"
}

然后使用:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DEEPSEEK_API_KEY,
  baseURL: "https://api.deepseek.com"
});

const completion = await client.chat.completions.create({
  model: "deepseek-chat",
  messages: [
    {
      role: "user",
      content: "请用简单例子说明HTTP请求方法GET和POST的区别。"
    }
  ]
});

console.log(completion.choices[0].message.content);

十一、如何进行多轮对话

DeepSeek API 本身不会自动记住你之前的聊天内容。所谓“多轮对话”,通常是由你的应用程序保存历史消息,并在每次请求时把历史上下文一起传给模型。

示例:

{
  "model": "deepseek-chat",
  "messages": [
    {
      "role": "system",
      "content": "你是一个旅游规划助手。"
    },
    {
      "role": "user",
      "content": "我想去成都玩三天。"
    },
    {
      "role": "assistant",
      "content": "好的,我可以帮你规划成都三日游。请问你更喜欢美食、历史文化还是自然风景?"
    },
    {
      "role": "user",
      "content": "我更喜欢美食和历史文化。"
    }
  ]
}

每次新请求都需要携带必要的历史记录。为了控制成本和上下文长度,建议对过长历史进行摘要或裁剪。


十二、常见错误与解决方法

1. 401 Unauthorized

原因通常是 API Key 错误或没有传认证头。

检查:

-H "Authorization: Bearer YOUR_DEEPSEEK_API_KEY"

确保:

  • API Key 没有写错;
  • Bearer 后面有空格;
  • Key 没有多余引号或换行;
  • 环境变量已经生效。

2. 400 Bad Request

通常表示请求参数格式错误。

常见原因包括:

  • JSON 格式不合法;
  • model 名称错误;
  • messages 不是数组;
  • role 写错;
  • 缺少必填字段。

可以用 JSON 校验工具检查请求体。


3. 429 Too Many Requests

表示请求过于频繁或额度受限。

解决方法:

  • 降低请求频率;
  • 增加重试间隔;
  • 检查账户额度;
  • 避免在循环中无节制调用。

4. 连接超时

可能是网络不稳定或请求处理时间较长。

建议:

  • 设置更长的 timeout;
  • 开启流式输出;
  • 减少 max_tokens
  • 检查服务器网络环境。

Python 示例:

response = requests.post(
    url,
    headers=headers,
    json=payload,
    timeout=60
)

十三、生产环境接入建议

如果你计划将 DeepSeek API 用于正式业务,建议注意以下几点。

1. 不要在前端暴露 API Key

API Key 一旦放在浏览器前端代码中,很容易被用户查看和盗用。正确做法是:

前端页面 -> 你的后端服务 -> DeepSeek API

由后端统一调用 DeepSeek,并做好鉴权、限流和日志记录。


2. 增加请求限流

为了防止接口被刷,建议对用户请求做限流。例如:

  • 单个用户每分钟最多请求多少次;
  • 单个 IP 每小时最多请求多少次;
  • 超出额度后返回错误提示。

3. 记录必要日志

建议记录:

  • 请求时间;
  • 用户 ID;
  • 模型名称;
  • token 使用量;
  • 响应耗时;
  • 错误状态码。

但不要记录敏感隐私内容,尤其是密码、身份证、银行卡等信息。


4. 设置合理的超时和重试

网络请求可能失败,因此生产系统应设置超时和重试机制。

建议:

  • 超时时间:30 到 120 秒;
  • 重试次数:1 到 3 次;
  • 重试间隔:指数退避;
  • 对 429、500、502、503 等错误进行有限重试。

5. 控制上下文长度

多轮对话时,历史消息会不断增长,导致成本增加、响应变慢,甚至超过上下文限制。

解决方法:

  • 只保留最近几轮对话;
  • 对历史内容进行摘要;
  • 将长期记忆存入数据库;
  • 结合向量检索实现 RAG。

十四、完整 curl 命令汇总

1. 普通问答

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "请介绍一下DeepSeek API。"
      }
    ],
    "temperature": 0.7,
    "max_tokens": 1000
  }'

2. 带 system 角色的请求

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "system",
        "content": "你是一个资深后端工程师,回答要简洁、准确。"
      },
      {
        "role": "user",
        "content": "请解释什么是数据库索引。"
      }
    ]
  }'

3. 流式输出

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-chat",
    "messages": [
      {
        "role": "user",
        "content": "请写一篇关于AI编程助手的短文。"
      }
    ],
    "stream": true
  }'

4. 使用推理模型

curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
  -d '{
    "model": "deepseek-reasoner",
    "messages": [
      {
        "role": "user",
        "content": "请一步步分析:一个水池进水管3小时灌满,出水管6小时放空,同时打开多久灌满?"
      }
    ],
    "max_tokens": 1500
  }'

十五、总结

DeepSeek API 的接入流程并不复杂,核心步骤可以概括为:

  1. 注册账号并获取 API Key;
  2. 使用 Authorization: Bearer API_KEY 进行身份认证;
  3. 请求 https://api.deepseek.com/chat/completions
  4. 在请求体中指定 modelmessages
  5. 读取返回结果中的 choices[0].message.content
  6. 根据业务需要选择普通输出或流式输出;
  7. 在生产环境中做好 Key 保护、限流、日志、重试和上下文管理。

如果你只是想快速测试,使用 curl 命令即可完成。如果你要开发正式应用,推荐使用 Python、Node.js 或 OpenAI SDK 进行封装。由于 DeepSeek API 兼容 OpenAI 风格,整体迁移和集成都非常方便。

最后提醒,API Key 是非常重要的凭证,务必通过环境变量或后端配置管理,不要直接写入前端代码或公开仓库。只要掌握本文中的命令和示例,你就可以快速完成 DeepSeek API 的调用,并将大模型能力集成到自己的产品和项目中。

目录结构
全文