DeepSeek 返回 402?Hermes 接入第三方模型的排错手册
把 DeepSeek(或任何 OpenAI 兼容接口)接到 Hermes 上,最常见的拦路虎不是 401(key 错了),而是 402。401 至少告诉你“钥匙不对”,402 的提示往往只有一句干巴巴的 "Insufficient balance",但背后的原因可能有四五种。本文给出一套从高频到低频的排查清单,按顺序走一遍,十分钟内定位问题。
先分清:401、402、429 各代表什么
- 401:身份验证失败。API Key 写错、复制时多了空格、key 被删除或过期。
- 402:需要付费。账户余额不足、欠费停服、或者 key 所在项目没有开通计费。
- 429:限流。请求太频繁,或触发了内容风控。
402 的特殊之处在于:它有时候不是真的没钱。
排查清单(按顺序)
1. 先去官方控制台看余额
打开 DeepSeek 开放平台的费用中心,看三样东西:
- 账户余额是不是真的 > 0;
- 有没有欠费账单(有些平台允许透支一点再停);
- 当前 key 属于哪个项目,这个项目有没有单独的预算上限。
第三点最容易被忽略:有人在主账户充了钱,但 key 是某个子项目的,子项目预算为 0,照样 402。
2. 确认 key 本身有效
用 curl 直接打一次,不经过 Hermes:
curl https://api.deepseek.com/v1/models \
-H "Authorization: Bearer $DEEPSEEK_API_KEY"
能返回模型列表,说明 key 没问题,问题在 Hermes 侧的配置;连这个都 402,那就是账户侧的问题,不用再折腾 Hermes 了。
3. 检查 Hermes 里的模型配置
Hermes 的模型配置一般长这样:
{
"provider": "deepseek",
"base_url": "https://api.deepseek.com/v1",
"api_key": "sk-...",
"model": "deepseek-chat"
}
逐项核对:
base_url结尾有没有多余的斜杠或少了/v1;api_key有没有被 shell 转义吃掉特殊字符(建议用单引号包裹,或走环境变量);model名字拼写:deepseek-chat和deepseek-reasoner是两个不同的模型,别混用。
4. 看看是不是“假 402”
有些网关(包括部分中转服务)会把其他错误包装成 402 返回。比如:
- 模型名写错,网关找不到对应模型,按“无可用资源”返回 402;
- 并发超限,网关用 402 代替 429。
判断方法:把同一个 key 和模型拿到官方 curl(第 2 步)里测。如果官方直连正常、经网关 402,那就是网关侧的问题,换直连或联系网关方。
5. 重启 Hermes 会话再试
Hermes 会在会话启动时读取模型配置。改完配置后,必须重启会话(不是重连,是新开一个会话),新配置才会生效。很多人改完配置直接在原会话里试,用的还是旧 key,查半天查不出问题。
一个真实案例
社区里一位用户,Hermes 接 DeepSeek 一直 402,控制台余额明明还有 30 多块钱。按清单查到第 4 步发现:他用的是某中转网关,网关把 deepseek-reasoner 映射错了,实际调用了一个已下线的模型,网关统一按 402 返回。改成官方直连地址后立刻恢复。
预防:给 key 加一层“体检”
建议把第 2 步的 curl 存成一个小脚本,每次换 key 或 Hermes 大版本升级后跑一遍:
#!/bin/bash
# model-healthcheck.sh
curl -s -o /dev/null -w "%{http_code}" \
https://api.deepseek.com/v1/models \
-H "Authorization: Bearer $DEEPSEEK_API_KEY"
echo " <- 200 为正常"
输出 200 再去配 Hermes,能省掉一大半“到底是 key 的问题还是 Hermes 的问题”的纠结。
小结
402 排查就记住一条顺序:先官方控制台看钱,再 curl 直连看 key,再查 Hermes 配置,最后怀疑网关。 按这个顺序,绝大多数 402 都能在十分钟内定位。如果这套流程帮你省了时间,欢迎在社区问答区分享你的案例——你的坑,就是别人的路标。