中文 ▾
获取 API 密钥

更新于

DeepSeek API 密钥无法使用:原因与修复

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

一根管道中有一个被阻塞的密钥,备用管道绕过它进行路由,用于说明 API 密钥故障排除
舞台插图,上面有连接到服务器的浮动面具,代表 SillyTavern 中与 API 的角色扮演聊天

从一行测试开始

在更改应用之前,先将客户端排除在外。一次 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 测试以区分这两个问题。

五分钟可运行的检查清单

  1. 运行 curl 测试并记录状态码。
  2. 创建新密钥并测试。如果新密钥有效,则旧密钥复制错误或已被撤销。
  3. 检查余额和额度的任何过期日期。
  4. 将 Base URL 和模型 ID 与提供商的文档逐字符进行对比。
  5. 发送一个不带流式输出、不带工具且提示词简短的请求。然后逐一添加功能。
  6. 检查并发调用。如果你的应用同时发送多个请求,请降低并发数。
  7. 尝试其他网络或关闭 VPN。
  8. 查看响应标头,包括任何请求 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。这就是全部设置。

获取 API 密钥