更新于
DeepSeek API 密钥无法使用:原因与修复
当出现 deepseek api 密钥无法使用的错误时,密钥本身往往不是罪魁祸首。大多数故障源于 Base URL、余额不足、模型名称错误或客户端将密钥放置的位置不正确。


从一行测试开始
在更改应用之前,先将客户端排除在外。一次 curl 调用即可确认密钥、URL 和模型名称是否协同工作。将占位符替换为提供商仪表板和文档中的值。
curl -i https://YOUR-PROVIDER/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"YOUR-MODEL","messages":[{"role":"user","content":"ping"}]}'
-i 标志会打印状态行和标头,其重要性超过响应体。如果 curl 有效而应用无效,则故障在于应用设置。如果 curl 也失败,则问题出在密钥、账户或接口上。
首先读取状态码
| 状态码 | 通常含义 | 需要检查的内容 |
|---|---|---|
| 401 | 密钥被拒绝 | 复制错误、多余空格、已撤销或已删除的密钥、来自不同提供商的密钥 |
| 402 或余额消息 | 无剩余额度 | 账户余额和账单页面 |
| 404 | 路径或模型错误 | Base URL、尾部 /v1、模型名称拼写 |
| 429 | 请求过多 | 每分钟请求数、并发调用、重试标头 |
| 5xx 或超时 | 提供商侧或网络问题 | 提供商状态页面、稍后重试、区域路由 |
这些是兼容 OpenAI 的提供商中常见的含义。每个提供商都会记录其确切的状态码,因此请查阅其最新文档以获取详细信息。
密钥本身
密钥是长字符串,容易以枯燥的方式出错。将密钥粘贴到纯文本编辑器中,查找末尾的空格或换行符、开头的引号,或聊天应用添加的换行符。确保请求头显示为 Authorization: Bearer KEY,且 Bearer 后有一个空格。如果将密钥设置在环境变量中,请在应用中打印其长度(而非其值)以确认已加载。
另外两种常见情况。首先,你创建了密钥,关闭页面后复制了掩码后的版本。大多数仪表板只显示一次密钥,因此请创建一个新的。其次,你正在使用一个服务的密钥访问另一个服务的 URL。密钥仅对发行它的提供商有效。
余额、账单和免费额度
许多 API 密钥仅在账户有余额时有效。余额为空可能看起来像密钥无效。打开提供商的账单页面,确认你有余额、充值已实际到账,且任何促销额度未过期。加密货币充值可能需要几分钟才能显示。
如果你想比较另一种预付服务如何处理此问题,我们的模型很简单:你购买额度,调用以每 1M 输入 token $0.15 和每 1M 输出 token $0.50 的速度消耗额度,失败或被拒绝的请求不收费,且额度永不过期。你可以使用 GET /v1/balance 或每个响应中的 X-Balance-USD 标头读取余额。
Base URL 和模型名称
在 SillyTavern、Janitor AI 和编辑器插件等工具中,最常见的原因是 Base URL 输入略有错误。常见错误:缺少 /v1、重复的 /v1/v1、使用 http 代替 https,或将完整路径 /chat/completions 粘贴到已自动添加该路径的字段中。模型字段是另一个陷阱。它必须与提供商列出的模型 ID 匹配。如果提供商支持,请使用 GET /v1/models 列出它们,或阅读最新文档。
特定工具的设置指南位于本站:在 SillyTavern 中使用密钥、在 Janitor AI 中 和 在 VS Code 中。
速率限制和并发
并发请求的爆发可能会在有效密钥上触发 429。查找 Retry-After 标头并退避。Python 中的最小重试如下所示:
import time
from openai import OpenAI, RateLimitError
client = OpenAI(base_url="https://api.deepseekapikey.com/v1", api_key="YOUR_KEY")
def ask(prompt):
for attempt in range(4):
try:
r = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": prompt}],
)
return r.choices[0].message.content
except RateLimitError:
time.sleep(5 * (attempt + 1))
raise RuntimeError("still rate limited")
在我们的接口上,完整密钥允许 8 个并发请求和每分钟 300 个请求。流式请求会占用其槽位,直到流结束。错误代码为 rate_limited 或 concurrency,临时过载返回 429 并附带 Retry-After: 5。
网络和区域问题
如果 curl 挂起或重置,问题可能出在你和提供商之间:公司代理、VPN、DNS 或区域封锁。尝试不同的网络,检查代理是否传递 Authorization 标头,并为长生成任务提高客户端超时时间。流式响应也可能被缓冲代理截断;使用 stream: false 测试以区分这两个问题。
五分钟可运行的检查清单
- 运行 curl 测试并记录状态码。
- 创建新密钥并测试。如果新密钥有效,则旧密钥复制错误或已被撤销。
- 检查余额和额度的任何过期日期。
- 将 Base URL 和模型 ID 与提供商的文档逐字符进行对比。
- 发送一个不带流式输出、不带工具且提示词简短的请求。然后逐一添加功能。
- 检查并发调用。如果你的应用同时发送多个请求,请降低并发数。
- 尝试其他网络或关闭 VPN。
- 查看响应标头,包括任何请求 ID。支持团队可以通过该 ID 找到你的调用。
第五步会发现大量令人惊讶的 bug。略微无效的工具定义、非常大的 max_tokens 值或超过大小限制的请求体,都可能导致看起来像密钥问题的错误。在我们的接口上,请求体限制为 8 MB,每个响应都带有 X-Request-Id 标头,你可以引用该标头以寻求支持。
设置备用接口
任何提供商都可能出现宕机和限制,因此请在配置中保留第二个 OpenAI 兼容的接口。我们的服务托管的是经过调优的开放权重模型,可在合法成人用途下无审查地回答。它不是 DeepSeek 的官方 API,也不是路由,因此预期会有不同的回答和行为。切换只需更改两项设置:base URL https://api.deepseekapikey.com/v1 和模型 uncensored。
curl https://api.deepseekapikey.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"ping"}]}'
新用户可在 API 密钥页面 一键领取 $0.50 试用额度,有效期 7 天。通过加密货币充值金额为 $20 至 $500;详情请参阅 定价页面 和 文档。
更多指南
问答
为什么我的密钥在 curl 中有效,但在应用中无效?
应用可能配置了错误的 base URL、错误的模型名称或过期的密钥副本。请逐字符对比其设置与有效的 curl 调用。
有效的密钥是否保证请求成功?
不会。余额不足、速率限制或未知的模型名称都可能导致请求失败,即使密钥完全有效。
我能否在与不同提供商(API 服务)时使用相同的代码?
如果两者均兼容 OpenAI,则可以。更改 base URL、密钥和模型 ID 即可。
你的端点是否与 DeepSeek 使用相同的模型?
不是。这是一个由独立提供商运行的开放权重模型,并非任何厂商的官方 API。
你只需填写一张表单即可获得密钥
创建账户,复制密钥,更改基础 URL。这就是全部设置。