DeepSeek API 调用实战:从 Key 配置到 curl、Python、Node.js 完整示例
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 管理或开发者控制台。
一般流程如下:
- 打开 DeepSeek 官方网站;
- 登录或注册账号;
- 进入 API Keys 管理页面;
- 创建新的 API Key;
- 保存生成的 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 的接入流程并不复杂,核心步骤可以概括为:
- 注册账号并获取 API Key;
- 使用
Authorization: Bearer API_KEY进行身份认证; - 请求
https://api.deepseek.com/chat/completions; - 在请求体中指定
model和messages; - 读取返回结果中的
choices[0].message.content; - 根据业务需要选择普通输出或流式输出;
- 在生产环境中做好 Key 保护、限流、日志、重试和上下文管理。
如果你只是想快速测试,使用 curl 命令即可完成。如果你要开发正式应用,推荐使用 Python、Node.js 或 OpenAI SDK 进行封装。由于 DeepSeek API 兼容 OpenAI 风格,整体迁移和集成都非常方便。
最后提醒,API Key 是非常重要的凭证,务必通过环境变量或后端配置管理,不要直接写入前端代码或公开仓库。只要掌握本文中的命令和示例,你就可以快速完成 DeepSeek API 的调用,并将大模型能力集成到自己的产品和项目中。