本文最后更新于 2026-05-27,文章内容可能已经过时。

DeepSeek API 完全接入指南:从注册到项目上线,一篇搞定

你已经在某个教程里注册完了,但 API Key 调不通;或者你跑通了 demo,但不知道怎么接进自己的项目——这篇文章就是为这两种人写的。

不讲历史,不讲情怀,直接开干。

---

一、为什么是 DeepSeek API?先搞清楚你在用什么

在你花时间读下去之前,先回答一个问题:DeepSeek API 值不值得用?

答案取决于你的场景。以下是一张对比表,数据来源于各平台官方定价页(如有变动以官网为准):

| 维度 | DeepSeek Chat | GPT-4o | Claude Sonnet 4.6 | | 输入价格(每百万 token) | 约 ¥1 | 约 ¥35+ | 约 ¥20+ | | 输出价格(每百万 token) | 约 ¥2 | 约 ¥105+ | 约 ¥60+ | | 中文理解能力 | ★★★★★ | ★★★★☆ | ★★★★☆ | | OpenAI 接口兼容 | ✅ 完全兼容 | — | ❌ 不兼容 | | 响应速度(非 stream) | 快 | 中等 | 中等 |
⚠️ 以上价格为撰文时参考数据,请以各平台官网实时定价为准。

三个核心优势一目了然:

1. 价格:同等任务,成本比主流海外模型低一个数量级

2. 中文理解:训练数据以中文语料为基础,处理中文业务场景明显更自然

3. OpenAI 接口兼容:这是最被低估的优势——你的 OpenAI 代码,改两行就能跑在 DeepSeek 上

本文覆盖的模型:
  • deepseek-chat:主力对话模型,日常业务首选
  • deepseek-coder:代码生成/补全专用,效果明显优于通用模型

其他模型(如 deepseek-reasoner)接口格式相同,参数略有差异,文末会附注。

---

二、注册与密钥获取——5 分钟完成,避开 3 个常见坑

完整注册流程

1. 访问 [platform.deepseek.com](https://platform.deepseek.com)

2. 点击右上角「注册」,填写手机号,获取验证码

3. 设置密码,完成注册

4. 进入控制台后,点击左侧菜单「API Keys」

5. 点击「创建 API Key」,给 Key 起个名字(建议按项目命名,如 project-crm-prod

6. Key 只会显示一次,立即复制保存

⚠️ 三个新手必踩坑

坑一:Key 只显示一次

创建完成后,系统弹出的那个 Key 字符串,关掉弹窗就永远看不到原文了。你只能看到 Key 的前几位和后几位。如果忘记保存,唯一的办法是删掉重建。

解决方案: 创建 Key 后,立刻保存到密码管理器(1Password / Bitwarden)或写入本地 .env 文件,不要存在记事本里。 坑二:免费额度有有效期

新注册账号会赠送一定额度的免费 token,但这个额度有时间限制(通常为注册后数月内有效)。很多人注册完放着不用,等到真正要用时额度已经过期。

解决方案: 注册完直接跑一遍 demo,确认 Key 可用,不要"留着以后用"。 坑三:充值最低门槛

DeepSeek 平台充值有最低金额限制,且目前不支持开具增值税专用发票(只能开普通发票)。如果你是企业采购需要报销,提前确认财务要求。

---

三、第一次调用——从 curl 到 Python,跑通才算真会

Step 1:用 curl 看到第一个响应

打开终端,把下面这行命令里的 YOUR_API_KEY 替换成你的 Key,直接运行:

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

-H "Content-Type: application/json" \

-H "Authorization: Bearer YOUR_API_KEY" \

-d '{

"model": "deepseek-chat",

"messages": [

{"role": "user", "content": "用一句话解释什么是 API"}

]

}'

如果你看到一段 JSON 响应,里面有 "content" 字段和一句话解释——恭喜,你已经跑通了最难的那一步。

Step 2:Python requests 写法

import requests

API_KEY = "YOUR_API_KEY"

API_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": "帮我写一个 Python 函数,计算斐波那契数列"}

],

"temperature": 0.7, # 创意度:0=保守,1=发散,代码生成建议 0.3 以下

"max_tokens": 1024, # 单次响应最大 token 数,控制成本的关键参数

"stream": False # True = 流式输出(打字机效果),False = 等待完整响应

}

response = requests.post(API_URL, headers=headers, json=payload)

result = response.json()

print(result["choices"][0]["message"]["content"])

Step 3:openai SDK 兼容写法(推荐)

这是 DeepSeek 最香的特性之一——你可以直接用 openai 这个 Python 包调用 DeepSeek,只需改两个参数:

from openai import OpenAI

client = OpenAI(

api_key="YOUR_API_KEY",

base_url="https://api.deepseek.com" # ← 只改这一行

)

response = client.chat.completions.create(

model="deepseek-chat", # ← 和这一行

messages=[

{"role": "system", "content": "你是一个专业的代码审查员"},

{"role": "user", "content": "帮我审查这段代码的安全性:SELECT * FROM users WHERE id = " + user_input}

],

temperature=0.3,

max_tokens=2048,

stream=True # 流式输出示例

)

for chunk in response:

if chunk.choices[0].delta.content:

print(chunk.choices[0].delta.content, end="", flush=True)

💡 如果你不想自己管 API Key 和额度,也可以通过聚合平台直接调用 DeepSeek 及多家模型——
[api.884819.xyz](https://api.884819.xyz) 支持 OpenAI 格式兼容调用,切换模型只需改 model 参数,适合需要同时测试 DeepSeek、GPT-5 系列、Claude 多个模型的开发者。新用户注册即送体验 token,国产模型完全免费,无月租按量付费。

---

四、接入你自己的项目——三个真实场景

场景一:Python 后端服务(Flask/FastAPI)

生产环境里,你不会直接把 Key 写在代码里。正确姿势是从环境变量读取,并做好错误处理和重试:

import os

import time

from openai import OpenAI, RateLimitError, APIError

from flask import Flask, request, jsonify

app = Flask(__name__)

client = OpenAI(

api_key=os.environ.get("DEEPSEEK_API_KEY"), # 从环境变量读取

base_url="https://api.deepseek.com"

)

def call_with_retry(messages, max_retries=3):

"""带重试逻辑的调用封装"""

for attempt in range(max_retries):

try:

response = client.chat.completions.create(

model="deepseek-chat",

messages=messages,

temperature=0.7,

max_tokens=1024

)

return response.choices[0].message.content

except RateLimitError:

if attempt < max_retries - 1:

time.sleep(2 ** attempt) # 指数退避

else:

raise

except APIError as e:

raise Exception(f"API 错误: {e}")

@app.route("/chat", methods=["POST"])

def chat():

data = request.json

user_message = data.get("message", "")

result = call_with_retry([{"role": "user", "content": user_message}])

return jsonify({"reply": result})

场景二:前端直调的正确姿势

绝对不要在前端代码(React/Vue/原生 JS)里直接写 API Key。浏览器端的代码对用户完全透明,你的 Key 会被任何人拿走。

正确方案是后端代理

// ❌ 错误写法(Key 暴露在前端)

const response = await fetch("https://api.deepseek.com/chat/completions", {

headers: { "Authorization": "Bearer sk-xxxxxxxx" } // 危险!

})

// ✅ 正确写法:前端只调自己的后端

const response = await fetch("/api/chat", {

method: "POST",

headers: { "Content-Type": "application/json" },

body: JSON.stringify({ message: userInput })

})

// Key 存在你的服务器环境变量里,前端永远看不到

Node.js 后端代理的核心代码:

// server.js(Node.js + Express)

const express = require("express")

const OpenAI = require("openai")

const app = express()

app.use(express.json())

const client = new OpenAI({

apiKey: process.env.DEEPSEEK_API_KEY,

baseURL: "https://api.deepseek.com"

})

app.post("/api/chat", async (req, res) => {

const { message } = req.body

const response = await client.chat.completions.create({

model: "deepseek-chat",

messages: [{ role: "user", content: message }]

})

res.json({ reply: response.choices[0].message.content })

})

场景三:接入 Dify / LangChain

Dify 配置步骤:

1. 进入 Dify 控制台 → 设置 → 模型供应商

2. 选择「OpenAI-API-compatible」(不是 OpenAI 原生)

3. 填写:

- API Base URLhttps://api.deepseek.com

- API Key:你的 DeepSeek Key

- Model Namedeepseek-chat

LangChain 配置:
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(

model="deepseek-chat",

openai_api_key="YOUR_API_KEY",

openai_api_base="https://api.deepseek.com",

temperature=0.7

)

response = llm.invoke("帮我总结这份合同的主要条款")

print(response.content)

如果你在 Dify / LangChain 里需要频繁切换底层模型,使用统一的 API 聚合入口(如 [api.884819.xyz](https://api.884819.xyz))可以避免反复修改配置文件中的 base_urlkey,一个入口管理所有模型。

---

五、上线前必查清单 + 常见报错速查

✅ 上线前 10 项自检清单

- [ ] API Key 已写入环境变量,未硬编码在代码里
  • [ ] .env 文件已加入 .gitignore,不会被提交到代码仓库
  • [ ] 已设置账户级别的用量上限(控制台 → 用量限制)
  • [ ] 已实现速率限制(Rate Limit)的重试和队列逻辑
  • [ ] 流式输出(stream)场景已处理连接中断的异常
  • [ ] 已对用户输入做基本过滤,避免 Prompt 注入攻击
  • [ ] max_tokens 已根据业务场景合理设置,避免超长响应
  • [ ] 已在测试环境用真实流量压测,确认响应时间可接受
  • [ ] 错误日志已接入监控(如 Sentry),异常能及时告警
  • [ ] 已告知用户内容由 AI 生成,符合相关法规要求

🔥 8 个高频报错速查表

| 错误码 | 原因 | 解决方案 | | 401 Unauthorized | API Key 错误或未传 | 检查 Key 是否完整,Authorization 头格式是否为 Bearer sk-xxx | | 429 Too Many Requests | 触发速率限制 | 实现指数退避重试,或升级账户套餐 | | 400 Bad Request | 请求体格式错误 | 检查 messages 格式,确保 role 值为 user/assistant/system | | 402 Payment Required | 账户余额不足 | 登录控制台充值,检查额度是否过期 | | 500 Internal Server Error | 服务端临时故障 | 等待后重试,持续出现可提交工单 | | 503 Service Unavailable | 服务过载 | 实现队列缓冲,高峰期降低并发请求数 | | context_length_exceeded | 输入 token 超过模型上限 | 截断历史消息,或使用支持更长上下文的模型 | | content_filter | 内容触发安全过滤 | 检查输入内容,修改 system prompt 的表达方式 |

💰 费用控制两个关键操作

1. 设置账户用量上限:控制台 → 账单 → 用量限制,设置每月最高消费额,超出自动停止调用

2. 监控 Token 消耗:每次 API 响应的 usage 字段会返回本次消耗的 token 数,建议记录到日志,每天统计趋势

# 从响应中提取 token 用量

response = client.chat.completions.create(...)

usage = response.usage

print(f"输入: {usage.prompt_tokens} tokens, 输出: {usage.completion_tokens} tokens")

---

现在,你手里有 Key,有代码,有清单

唯一缺的就是你打开编辑器的那一下。

从 curl 那一行开始。跑通了,剩下的都是照着抄。

---

下一篇我们要做一件更有意思的事:

>

光会调 API 还不够——怎么让它"记住"你们的对话?

>

多轮对话的上下文管理、Token 爆炸的应对策略、以及如何给 DeepSeek 注入你自己的知识库(RAG 入门)……

>

《DeepSeek API 进阶:多轮对话 + RAG 知识库接入实战》,下周更新。
点个关注,不然你会找不到它。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#DeepSeek #API教程 #AI开发 #Python #8848AI #LangChain #AI工具 #开发者必看