DeepSeek API 怎么直接调用?OpenAI 兼容端点接入教程
数据截至 2026-07,价格与限额以各官网为准。
先把这件事说清楚:这篇讲的是怎么在自己的代码里直接调 DeepSeek 官方 API,不是怎么把 DeepSeek 接进 Cursor、Codex 这类编辑器工具。两件事看起来像,其实是两条完全不同的路,走错了会白折腾一圈。
如果你是想在 Cursor、Codex、Cline 这些 AI 编程工具里把默认模型换成 DeepSeek 省钱,那些工具早就把配置界面做好了,直接看对应的教程更快,本文末尾会给链接。这篇面向的是另一批人:想自己写脚本、写后端服务、接自己的产品,直接调 DeepSeek 的 API。核心就三件事——申请密钥、搞懂 base_url 怎么填、跑通第一次调用。
为什么说它是”OpenAI 兼容”
DeepSeek 官方 API 没有自己发明一套全新的请求格式,而是直接对齐了 OpenAI 的 Chat Completions 接口规范。这个设计对开发者是个大便宜——你不用装 DeepSeek 专属的 SDK,直接用官方 openai 这个 Python 包(或者对应语言的 OpenAI SDK),只改两处:base_url 换成 DeepSeek 的地址,api_key 换成 DeepSeek 的密钥,其余调用代码基本原样能跑。
这也是为什么前面提到的那些 AI 编程工具能”接入 DeepSeek”——它们内部本来就是按 OpenAI 兼容协议在发请求,DeepSeek 提供了同规格的端点,工具改个配置就接上了。原理是一回事,但用法上有本质区别:工具接入是改配置文件里的几个字段,让工具本身去调用;本文讲的是你自己写代码去调用,逻辑和排查思路都不一样,别混着看。
第一步:申请密钥
去 platform.deepseek.com/api_keys 这个地址,登录后就能创建 API Key。整个流程和大多数模型厂商的控制台差不多:注册账号、进到 API Keys 管理页、点创建,密钥生成后复制保存好。
这里有个通用提醒,不只针对 DeepSeek:密钥这类东西显示出来的窗口往往就那一次,关掉弹窗前一定当场复制存进密码管理器,别想着”等下再复制”,回头再想看基本就看不到明文了,只能重新生成一个。另外密钥不要直接写进代码里提交到 Git 仓库,放到环境变量里读取是更稳妥的做法,也方便换密钥时不用改代码。
第二步:搞懂 base_url 怎么填
这是接入 DeepSeek 最核心的一步,也是唯一真正需要”配置”的地方。DeepSeek 官方文档给出的 base_url 是:
https://api.deepseek.com
就这一个地址,兼容 OpenAI SDK 的请求格式。你不需要额外拼接版本号或者别的路径,官方快速开始文档里给出的示例就是直接把这串地址传给 SDK 的 base_url 参数。
第三步:Python 最小示例
官方快速开始文档给的示例是先装 OpenAI 官方 SDK,不是装什么 DeepSeek 专属包:
pip3 install openai
然后代码大概是这个样子:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-v4-pro", # 或 "deepseek-v4-flash"
messages=[
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"},
],
stream=False,
reasoning_effort="high",
extra_body={"thinking": {"type": "enabled"}}
)
print(response.choices[0].message.content)
看这段代码有几个点值得停一下。第一,client 是 openai 包里原生的 OpenAI 类,没有换成别的类名,靠 base_url 参数把请求指向了 DeepSeek 而不是 OpenAI 官方地址,这就是”兼容端点”的字面意思。第二,api_key 从环境变量 DEEPSEEK_API_KEY 读,跑之前记得在环境里先 export 好,不然会报鉴权错误。第三,示例里出现了 reasoning_effort 和 extra_body={"thinking": {"type": "enabled"}} 这类扩展参数,用来控制模型是否走”思考模式”,这是 DeepSeek 在标准 OpenAI 接口之上加的自定义扩展字段,跟 OpenAI 原生接口没有的东西,用的时候留意一下这是 DeepSeek 特有参数,不是所有 OpenAI 兼容服务都支持同名字段。
官方文档同时也给了 curl 和 Node.js 的对应示例,核心逻辑完全一样:换 base_url、换密钥,其余不变。如果你的项目是 TypeScript/Node 技术栈,直接把这套思路套到 openai 的 Node SDK 上就行,没有额外的坑。
顺带提一句实操建议:第一次跑通之前,先用 curl 单独测一下密钥和网络是不是通的,比直接在项目代码里排查要快得多。因为一旦调不通,问题可能出在三个地方——密钥没读到、base_url 拼错、或者本地网络访问不了这个域名,curl 能最快把这三种情况区分开,不用在自己的业务代码里翻半天日志才发现是最基础的环境问题。
模型 id 该选哪个,旧名字要注意时间点
DeepSeek 当前主力是 V4 系列,分两档:deepseek-v4-flash(速度快、成本低)和 deepseek-v4-pro(能力更强、单价更高)。选哪个看你的任务对质量和延迟的要求,简单任务优先用 flash,省钱又够用;复杂推理任务再考虑 pro。
有个时间点必须提前知道:官方文档明确写着,旧模型名 deepseek-chat 和 deepseek-reasoner 将于 2026-07-24 15:59 UTC 弃用。如果你之前的代码或者看到的教程里还在用这两个名字,兼容期内它们分别对应新模型 deepseek-v4-flash 的”非思考模式”和”思考模式”,但过了这个时间点继续用旧名字大概率会调用失败。新写的代码建议直接用 deepseek-v4-flash / deepseek-v4-pro,不用再绕旧名字这一层。
并发方面官方文档也标了数字:deepseek-v4-flash 支持 2500 并发,deepseek-v4-pro 支持 500 并发,如果你的服务量级比较大,这个数字可以作为容量规划的参考,具体以官网当次页面为准。
和”接进编程工具”的区别,再强调一次
看到这里回头看开头那句话应该更清楚了:本文这套流程——申请密钥、填 base_url、用 openai SDK 直接发请求——是你自己的代码在跟 DeepSeek 服务器对话。而如果你想要的是”让 Cursor 里的自动补全和对话都用 DeepSeek 模型”,那是另一回事:Cursor 有自己的模型配置界面,你在界面里填的也是同样的 base_url 和密钥,但发请求的主体是 Cursor 这个程序本身,不是你写的代码。两者原理相通(都是靠 OpenAI 兼容端点),但操作对象和排查方式不一样——自己写代码调不通,问题往往在你的 Python/Node 环境或者密钥环境变量;工具里配不通,问题往往在工具的配置界面填错了字段或者版本不支持自定义 base_url。
如果你是想接编辑器工具而不是自己写代码,可以直接看这几篇更对口:
- Cursor 怎么接 DeepSeek,看 Cursor 接入 DeepSeek 等国产模型配置教程
- Codex 怎么接 DeepSeek,看 Codex 接入 DeepSeek 等国产模型配置教程
- 想一次看懂 Cursor、Claude Code、Codex、Cline 几款工具的共性接法,看 主流 AI 编程工具怎么接 DeepSeek?横向配置汇总
常见坑 / 注意
- 别装 DeepSeek 专属 SDK:官方走的就是 OpenAI 兼容协议,直接用
pip install openai这个官方包即可,没有单独的deepseekSDK 包需要装。 - base_url 别拼错:就是
https://api.deepseek.com,不用额外加版本号路径,官方示例长什么样就照抄。 - 密钥只显示一次:当场复制存好,别关了弹窗才想起来。
- 旧模型名有弃用时间点:
deepseek-chat/deepseek-reasoner2026-07-24 之后大概率调不通,新代码直接用deepseek-v4-flash/deepseek-v4-pro。 - 接工具和接代码是两件事:想让编辑器用上 DeepSeek,看编辑器专属教程;自己写服务调用,才是本文这套流程。
extra_body里的思考模式参数是 DeepSeek 扩展字段:不是所有 OpenAI 兼容服务都支持同名参数,换到别的兼容服务时留意文档差异。