DeepSeek 的 token 怎么用:拿密钥、调接口、看用量 6 步

1小时前发布

用 token 指的是拿一串以 sk- 开头的密钥去调 DeepSeek 的接口,按输入和输出的字数计费。整个流程 6 步:控制台建密钥、账户留余额、记住 2 个模型名、按文档发 1 个 POST 请求、看 responses 里的用量字段、在用量页对账单。跑通一次大约 20 分钟,会写 10 行 Python 就够。

上个月帮一个做外贸的客户接这套接口,他反复问的其实是同一件事:token 到底怎么换成钱。我给他看了控制台用量页那张按天排的表,输入 1 列、输出 1 列,两列加起来乘单价就是当天花的钱,他当场就明白了。

一、先准备:3 样东西缺一不可

缺任何一样都会卡在报错上,先把这 3 样凑齐再动手。

  1. 账号。platform.deepseek.com 用手机号注册,注册完做实名认证,认证入口在右上角头像里。没有实名的账号拿不到可用的密钥。
  2. 余额。控制台左侧「充值」页,支付宝和微信都能付。余额为 0 时,返回的报错文案里带「余额」两个字,跟网络错误无关,新手常在这里绕圈。
  3. 密钥。左侧「API keys」→「创建 API key」,起个名字(比如 test-01),点确认后那串 sk- 开头的字符只显示 1 次,关掉窗口就查不到了。复制下来存到本地一个 txt 里。

第 3 项最容易出事。我见过 3 个人在同一个下午重复创建了 5 个 key,就因为没存好。丢了不用找,删掉重建 1 个只要 10 秒,旧 key 记得在同一个页面点删除,避免以后对不上账。

浅色工作台上的笔记本电脑与机械键盘

二、操作步骤:6 步跑通第一次调用

前 3 步:把密钥和模型名准备好

  1. 第 1 步,存密钥。新建一个环境变量 DEEPSEEK_API_KEY,值就是那串 sk- 字符。Windows 在「系统属性 → 环境变量」里加,Mac 与 Linux 写进 ~/.zshrc 或 ~/.bashrc。代码里用 os.environ 读,别把密钥直接写在 py 文件里。
  2. 第 2 步,认模型名。文档的「模型」页列着 deepseek-chat 与 deepseek-reasoner 两个名字,前一个是通用对话,后一个会先输出一段思考过程再给答案。名字写错返回 400,404 则指路径不存在,两种错误别混。
  3. 第 3 步,装依赖。命令行跑 pip install openai,版本 1.0 以上。DeepSeek 的接口按 OpenAI 的格式设计,改 base_url 就能直接用这套 SDK,省掉自己拼 HTTP 请求的活。

后 3 步:发请求、看消耗、对账

  1. 第 4 步,发第 1 个请求。代码 8 行左右:client = OpenAI(api_key=..., base_url="https://api.deepseek.com"),然后 client.chat.completions.create(model="deepseek-chat", messages=[{"role":"user","content":"你好"}])。返回对象里的 choices[0].message.content 就是答案文本。
  2. 第 5 步,读用量字段。同一个返回对象的 usage 里有 3 个数:prompt_tokens(你发过去的)、completion_tokens(模型返回的)、total_tokens(两者相加)。这 3 个数就是计费依据,每次调用都看 1 眼,心里有数。
  3. 第 6 步,对账。控制台「用量信息」页按天列调用次数与 token 数,可以按模型分开看。接完程序第 2 天进去核 1 次,把本地日志里的 total_tokens 加起来跟页面比,差得离谱就是有地方在重复调用。

第 4 步那个 base_url 结尾别加斜杠,加了会拼出双斜杠,返回 404。我第一次接的时候栽在这上面,翻了 20 分钟文档才发现。

要不要开流式输出

第 4 步的请求里加 1 个参数 stream=True,答案会按字陆续返回,不用等整段生成完。界面上的差别很明显:不开流式,点发送后要空白 3 到 5 秒才出字;开了流式,0.5 秒内第一屏就有内容。

代码上多 4 行:for chunk in stream: 里取 chunk.choices[0].delta.content,拼接时判一下空值。首块与末块的 content 是 None,直接拼会报类型错误。计费跟不开流式一样,按最终 total_tokens 算。

做聊天窗口就开流式,做批量脚本就别开。批量任务里流式只会让日志更难读,省不下时间。

木架上一串黄铜色金属钥匙

三、参数怎么填

4 个字段决定结果和花费,下面这张表按填错的频率排了序。

字段填什么常见错填
modeldeepseek-chat 或 deepseek-reasoner,全小写,中间是短横线写成 DeepSeek-Chat、deepseek_chat,或者填成版本号
messages数组,每条含 role 与 content 两个键,role 取 system / user / assistant直接传一个字符串,或者漏掉 role
max_tokens按需要填,问答类 512 到 1024 够用填 0 或负数;填得过大,模型啰嗦时费用翻倍
temperature要稳定结果填 0.2 到 0.5,要发散写东西填 1.0 以上填 2 以上,输出开始跑题

max_tokens 这一项对账单影响最大。它只是输出长度的上限。模型看到 4096 会倾向把话说满。我做摘要类任务时把它压到 300,同样的提示词,输出 token 从 1400 掉到 280,钱省下来 4 分之 3,摘要质量没掉。

四、报错怎么排查

接口报错的信息很短,按状态码分 5 类去对,比逐行读代码快。

  1. 401。密钥无效。检查是不是复制时带了空格、是不是创建完没保存、是不是把已删的旧 key 填进去了。用 print(len(key)) 打印长度,正常在 35 位上下。
  2. 402 或余额不足字样。充值页看余额,未到账就等 1 到 2 分钟刷新。这一条跟密钥无关,换 key 解决不了。
  3. 400。参数格式问题。最常见是 model 名字错、messages 结构错、max_tokens 超上限。把请求体打印出来逐字段对文档。
  4. 429。请求太快被限流。加 1 个 0.5 秒的间隔,或者把并发从 10 降到 3。
  5. 连不上、超时。先 ping api.deepseek.com,再检查公司网络有没有拦 HTTPS。代理软件开着的时候,把接口域名加进直连名单。

五、怎么验证成功

3 个动作能确认整条链路通了,不用靠猜。

  1. 看返回体里有没有 usage。有 3 个数就是走完了计费流程,只剩数字大小的问题。
  2. 去控制台用量页刷 1 次,当天的调用次数应该加 1。数字没动说明请求打到了别的地址,检查 base_url。
  3. 把 max_tokens 设成 20,再发 1 次。返回的文本应该被截断在 20 token 以内,这一招能确认参数真的生效了。
桌面上摊开的空白笔记本与计算器侧面

六、token 怎么算,怎么省

中文的换算比例

官方文档给的估算是 1 个汉字约 0.6 token,1 个英文单词约 1 到 1.3 token。一段 500 字的提问,进模型算 300 token 上下;模型回 800 字,算 480 token 上下。两边都算钱,所以长文档问答的成本主要在你自己塞进去的那部分。

4 个能立刻省下来的动作

  1. 历史对话只留最近 5 轮。多轮对话每轮都会把前面的内容重发一遍,10 轮之后输入 token 是第 1 轮的 5 倍以上。
  2. 长文档先切段检索,只把相关的 2 到 3 段塞进 prompt,别整本丢进去。
  3. 固定不变的要求写进 system,别每轮重复描述。缓存命中时输入部分计费更低,具体折扣看控制台的计费说明页。
  4. 批量任务用脚本跑,单条测试用手点网页版。网页版不扣你的 API 余额。
  5. 把常问的 10 个问题存成模板,每周复用。重写提示词比重新想一遍省 5 到 10 分钟,省下来的是人工,这块钱按小时算比 token 贵得多。

两个模型名怎么选

deepseek-chat 出字快,同样 500 字回答在 8 秒内能收完;deepseek-reasoner 会先写一段思考过程再给答案,那段思考也计 token,同样的问题消耗常常是前者 3 到 5 倍。

选法按任务分:改写、摘要、翻译、问答这类,用 chat;数学题、多步逻辑、代码调试,用 reasoner,它在推导链上出错率低一些。我做表格抽取时两种都试过,20 条样本里 chat 错 3 条,reasoner 错 1 条,代价是多花 4 倍 token。

省 token 这件事,最后落到的都是输入侧。输出侧能压的空间有限,输入侧压一半,总花费就下来 3 分之 1 左右。做完这 5 个动作,一个日调 500 次的小工具,月账单能从 3 位数掉到 2 位数。

密钥泄露的处理动作只有 3 个:控制台删掉旧 key、程序里换成新 key、把用量页那条异常记录截图留存。删掉之后旧 key 在 1 分钟内失效,正在跑的任务会报 401 并中断,重启一次就好。密钥别写进前端页面,浏览器里打开源码就能看到,被人拿去刷量当天就能烧掉几十块。

本文信息核对时间:2026-11