欢迎光临

DeepSeek API 余额、限流与请求失败排查:附成本计算脚本


DeepSeek API 调用失败时,先记录 HTTP 状态码、请求耗时、模型名和同一时刻的在途请求数。余额、认证、参数和服务拥塞对应不同的处理方式,先把错误归类,才能避免重复请求把问题放大。

本文提供余额检查、最小调用和成本计算脚本。价格与接口资料核对于 2026 年 11 月 7 日,代码测试使用合成 usage 与模拟 HTTP 响应,未连接读者账号。

下载 Python 脚本与 usage 示例 ZIP。解压后使用 Python 3.10 或更新版本运行,依赖仅为标准库。

先按状态码缩小排查范围

现象 先查什么 下一步
400 / 422 JSON、接口路径、模型支持的参数 缩小到最小请求,按返回的参数说明修改
401 Key 所属平台、环境变量、空白字符 检查实际发请求的进程环境与目标域名
402 账号余额 读取余额接口,核对赠送与充值余额的可用性
429 并发、发送速率、客户端重试 限制在途请求,排队并退避,记录触发点
500 / 503 服务故障、过载与持续时间 在重试预算内等待,持续异常时保留诊断记录
没有 HTTP 响应 DNS、TLS、代理、连接与读取超时 先分清是否到达服务端,再决定是否重试

前五类对应官方错误码说明,超时行是客户端排查建议。完整定义见DeepSeek 错误码文档。错误日志只保留定位所需字段,避免把 Authorization 或完整对话写入共享日志。

用余额接口确认账号状态

官方余额接口为 GET https://api.deepseek.com/user/balance。响应包含 is_available 和按币种列出的余额条目,金额以字符串返回。赠送余额字段只代表接口返回的当前有效赠送余额,是否获得赠送额度应查实际账号。字段定义见余额 API 文档。

1
2
3
4
5
6
7
8
9
10
11
import getpass
import os
import subprocess
import sys

# 在本机 Python 或私有 Notebook 中输入,不把 Key 写进源码。
os.environ["DEEPSEEK_API_KEY"] = getpass.getpass("DeepSeek API Key: ")
subprocess.run(
    [sys.executable, "deepseek_api_tools.py", "balance"],
    check=True,
)

这段代码把密钥放进当前进程环境,并传给子进程。余额输出仍属于账号信息,分享 Notebook 前清空输出。若应用在容器、服务管理器或云函数里运行,需要在那里配置环境变量,终端里设置成功不代表应用进程已收到。

若请求发送到代理或第三方平台,先核对它的认证和账单体系。这里的余额脚本固定访问 DeepSeek 官方域名。注册及额度入口可继续查阅本站DeepSeek API 申请与额度指南。

余额正常时,做一次最小调用

下载脚本中的 probe 命令发送一条简短生成请求,会产生正常的 API 用量。它只输出模型名和 usage,便于检查链路。运行前确认余额与费用。

继续在上面设置密钥的同一 Python 会话中运行。

1
2
3
4
subprocess.run(
    [sys.executable, "deepseek_api_tools.py", "probe"],
    check=True,
)

脚本使用文档当前列出的 deepseek-flash,关闭思考并限制输出预算。请核对自己使用版本的模型与参数,尤其是在迁移旧示例时。当前调用形式见官方首次调用说明。

最小调用成功后,按顺序加回业务的 system prompt、历史消息、结构化输出和工具配置。每加一项做一次小样本验证,比较状态码和 token 用量。这样可以定位究竟是哪部分使请求超长、参数不兼容或响应时间增加。

429 与慢响应怎样处理

当前官方说明按账号与模型管理并发,一次请求从发出到响应完成占用一个在途连接。增加同一账号的 API Key 数量不会自动增加账号额度。流式响应也要到完成或连接释放后才结束占用。账号与模型的具体限制查阅限速与隔离文档。

客户端先设置有界队列和在途上限,再逐步增加负载。对可重试的 429、500、503,可从 1、2、4 秒的退避起步,加随机抖动,并限制总尝试次数和总等待时间。有 Retry-After 时在预算内遵循它。对 401、402 或参数错误,先修正原因。若超时发生在请求已发出之后,服务端可能已经生成,重试应按业务允许的重复结果风险处理。

慢响应时,分别记录连接建立、首个有效输出、完整响应的时间。官方 keep-alive 可能包含非流式空行或 SSE 注释,客户端解析要跳过这些内容。收到 keep-alive 可以说明连接仍活跃,但不能用它计量首 token。先检查单请求,再检查高并发,避免给所有失败都增加自动重试。

按 usage 计算调用成本

以下采用核对日官方人民币价中的 deepseek-flash 空闲时段单价,每百万缓存命中输入 token 为 0.02 元、未命中输入为 1 元、输出为 4 元。高峰价格为其两倍。具体时段、节假日规则和调价以官方价格表为准,脚本中的日期是价格快照。

模型费用 =(缓存命中输入 × 命中单价 + 缓存未命中输入 × 未命中单价 + 输出 × 输出单价)÷ 1,000,000。下面给出合成单次用量,并按同一用量重复 10,000 次演算。

项目 示例用量 空闲时段费用
缓存命中输入 8,000 token 0.00016 元
缓存未命中输入 2,000 token 0.002 元
输出 1,000 token 0.004 元
单次模型合计 10,000 输入 + 1,000 输出 0.00616 元
相同用量 10,000 次 假设全部适用同一组价格 61.60 元

如果相同的 10,000 输入 token 全部缓存未命中,单次变为 0.014 元,10,000 次为 140 元。这个差异由缓存假设造成。生产估算应汇总实际 usage,保留每次调用的模型、适用价格和重试记录。缓存字段缺失时,脚本按全部未命中计算,并在结果中标明缓存用量未知。

1
2
python deepseek_api_tools.py cost --usage deepseek-usage-example.json
python deepseek_api_tools.py cost --usage deepseek-usage-example.json --period peak

输入可以是完整响应 JSON,也可以是 usage 对象。价格快照仅覆盖 Flash,使用纯 usage 时需自行确认模型。完整响应中的其他模型名会触发检查,避免误套单价。脚本检查命中与未命中之和是否等于输入总数,使用 Decimal 计算金额。输出 token 采用 completion_tokens,不再把其中的细分项目重复相加。token 用量口径见官方 Token 与用量说明。

预算还应覆盖工具调用与额外尝试。当前价格表将 Search、Fetch 列为独立按次计费项目,使用它们时另外计入。建议每天对照实际账单检查模型费用估算,按平均输入、输出长度和缓存占比分析偏差。

上线前保留这组诊断记录

为一次请求保存本地追踪 ID、模型、HTTP 状态、耗时、尝试次数、usage 和估算金额。控制台和日志里使用同一追踪 ID,避免日志混淆。先验证单请求,再以固定输入逐级增加在途请求数,确认失败率和延迟门槛后再扩大流量。

配套脚本已通过离线金额、字段边界、余额解析和模拟错误响应检查。它默认不重试生成请求,便于观察首次错误与单次用量。需要加入重试时,将等待预算、重复结果处理和计费记录一起设计。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » DeepSeek API 余额、限流与请求失败排查:附成本计算脚本
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址