← Back to Blog

AI API 报 404 Model Not Found:地址、模型名与权限排查

Zivv12 min read
404模型错误排查

404 不一定表示网站不存在。在 AI API 场景里,它通常代表两类问题:请求发到了错误路径,或者你填写的模型名称不存在。部分客户端还会把分组权限不足包装成 model_not_found,所以排查时要把地址、模型名和 Key 权限放在一起看。

好消息是,404 和 401 一样属于「机械可穷举」的报错:原因清单就那么几条,逐项核对必有结论,不需要碰运气式地重装和重试。这篇给出完整的判断方法和检查顺序,最后用一个最小请求收尾验证。

先看错误正文,分清是哪种 404

不要只看客户端弹窗标题。找到原始状态码和错误正文里的关键词,能少走大量弯路:

错误特征更可能的原因
页面式 404、找不到路由API 地址拼错
model_not_found模型名称错误或不可用
not_found_errorClaude 协议的路径或模型配置错误
客户端只显示「请求失败」需要翻客户端日志找真实响应

大多数客户端都有日志或调试面板,里面记录着完整的请求 URL 和响应正文——这两样东西是 404 排查的全部原材料。

为什么客户端总把真实错误藏起来?因为面向普通用户的产品倾向于展示「友好」的提示,把服务端返回的状态码和错误字段包装成一句「请求失败,请稍后重试」。这对普通用户是善意,对排查问题的你是障碍。所以排查的第一原则永远是:绕过包装,拿到原始响应。 翻日志、开调试模式,或者干脆用 curl 在终端里复现。

现象 → 原因 → 解法 对照表

现象原因解法
所有请求都 404Base URL 缺 /v1 或多拼了路径OpenAI 工具填 https://zivv.pro/v1
Claude Code 全部 404ANTHROPIC_BASE_URL 误加了 /v1只填 https://zivv.pro
model_not_found模型名拼错、带空格或版本已下线从当前模型列表复制准确 id
能调 GPT 却找不到 ClaudeKey 分组不含目标模型检查 Key 分组与模型白名单
换了模型名还是旧报错客户端缓存了旧模型条目删除旧条目、刷新列表、重启客户端
只有某个功能 404该功能走了模型不支持的接口先跑纯文本最小请求定位

对照表给出的是方向,下面四个检查给出具体操作。建议按顺序走:地址错误最常见也最容易验证,权限问题最隐蔽所以放在模型名之后。

检查一:OpenAI 工具有没有带 /v1

OpenAI SDK、Codex 和多数桌面客户端的基础地址是 https://zivv.pro/v1。常见错误:

  • 写成 https://zivv.pro,而客户端不会自动补 /v1
  • 写成 https://zivv.pro/v1/chat/completions,客户端又重复拼接一遍路径
  • 多写一个斜杠,或复制时带进了不可见字符

不可见字符尤其阴险:从网页或聊天记录复制地址时,末尾可能跟着零宽空格,界面上完全看不出来。怀疑时把地址删掉,手动敲一遍这二十来个字符,比对着屏幕检查靠谱。

规则:基础地址只填到 `/v1`,具体接口路径由 SDK 或客户端补全。 判断方法也很简单:看客户端日志里最终请求的完整 URL,正确的对话请求应该落在 /v1/chat/completions,出现 /v1/v1/ 或缺少 /v1 都说明基础地址填错了。端点列表见 API 端点说明

Claude Code 是例外,它走 Anthropic 协议:

export ANTHROPIC_BASE_URL=https://zivv.pro

Claude Code 的地址不要/v1;Gemini 协议则用 https://zivv.pro/v1beta。三种协议三种写法,混用是 404 的第一大来源。

检查二:模型名称是否准确

模型名称不是展示标题,大小写、连字符和版本号都参与匹配。比如 claude-opus-4-8claude-opus-48gemini-3.5-flashgemini-3.5flash,一字之差就是 404。最稳妥的方式不是凭记忆输入,而是从接口或模型广场复制:

curl https://zivv.pro/v1/models \
  -H "Authorization: Bearer sk-your-key"

用 SDK 也可以把当前 Key 可用的模型全部打印出来:

from openai import OpenAI

client = OpenAI(api_key="sk-your-key", base_url="https://zivv.pro/v1")
for m in client.models.list():
    print(m.id)          # 从这里复制目标模型,别凭记忆手敲

注意从返回的 id 字段复制,不要根据旧教程猜测新版本名称——模型会更新、迁移或停止提供,教程里的名字未必还在。

手敲模型名时的高频笔误还包括:版本号里的连字符和点号弄混(4-84.8)、漏掉或多打连字符、结尾多了一个空格、从网页复制时带进全角字符或不可见的零宽字符。这类错误在肉眼看来「明明一模一样」,但服务端做的是精确匹配。所以规则只有一条:永远复制,永远不手敲。

检查三:Key 分组是否支持该模型

同一个平台可能有多个接入分组,分别适合 Claude Code、OpenAI 兼容调用或其他场景。模型出现在公开列表里,不代表每个 Key 都有相同权限。到控制台检查创建 Key 时选的分组,并确认:

  • 分组支持目标模型
  • Key 没有模型白名单限制
  • Key 没有过期或被禁用
  • 目标模型不是仅供特定协议使用

一个典型信号:Key 能调 GPT 却找不到 Claude。这时应该先查分组和协议,而不是重装客户端——上面 models.list() 打印的就是这个 Key 实际可用的列表,比公开页面更权威。

如果确认是分组问题,两条路:换用分组内的等价模型,或者重新创建一个正确分组的 Key。比如专供 Claude Code 的分组走 Anthropic 协议,拿它的 Key 去调 OpenAI 兼容接口就可能查无此模型;反之亦然。创建 Key 时花五秒确认分组,能省掉之后半小时的排查。

检查四:客户端有没有保留旧模型

模型名称调整后,客户端下拉列表可能还存着旧值。按顺序处理:

  1. 刷新模型列表
  2. 删除旧的自定义模型条目
  3. 从模型广场复制新名称重新添加
  4. 重新选择服务商和模型
  5. 完全退出并重启客户端

注意第 5 步说的是退出进程,不是关掉窗口——不少客户端关窗后仍驻留在托盘或菜单栏,配置根本没有重载。重启后先发一句最小对话确认新模型生效,再恢复正常使用。

Codex 和自动化脚本还要检查项目配置、用户配置和环境变量是否同时定义了模型,多个来源互相覆盖时行为难以预测。保留一个明确来源,删掉其余的。

各客户端的高发点速查

Claude Code

  • ANTHROPIC_BASE_URL 误加 /v1 是它 404 的第一大原因
  • 模型相关变量指定了已下线的版本时,也会表现为 not_found

Codex

  • Base URL 忘带 /v1,或项目配置里写死了旧模型名
  • 全局配置和项目配置同时存在时,先确认实际生效的是哪份

Cherry Studio 等桌面客户端

  • 下拉列表里的旧模型条目没删,选中的还是已失效的名称
  • 手动添加模型时名称与接口返回的 id 不一致
  • 完整配置流程见 Cherry Studio 接入教程

自动化脚本与服务端

  • 模型名写死在代码常量或配置文件里,平台侧模型更新后没人同步
  • 建议把模型名收敛到一处配置,并在启动时用 models.list() 做一次自检,模型失效时快速失败并给出明确日志,而不是在业务请求里静默 404

最后:用最小请求确认

地址、模型、权限都核对后,发一个最小请求。先不要带长 Prompt、工具调用或图片:

curl https://zivv.pro/v1/chat/completions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"your-model-id","messages":[{"role":"user","content":"Reply OK"}]}'

最小请求成功,说明平台、Key、地址和模型全部正常,剩下的问题一定在原客户端配置或请求内容里;最小请求失败,错误正文会直接告诉你卡在哪一环。

这套「最小化复现」的思路值得养成习惯:任何报错都先剥掉客户端、剥掉复杂参数,用最短路径确认基础链路,再逐项加回去。它对 404 有效,对 401、429 和各种奇怪的客户端行为同样有效——如果剥到 401 这一层,转去 401 排查指南继续。

常见问题 FAQ

Q:404 的请求会扣费吗? A:不会。请求没有到达模型就被拒绝,不产生 Token 消耗。

Q:模型在广场里能看到,调用却 404,为什么? A:多半是 Key 分组不含该模型,或该模型仅供特定协议。用 models.list() 看这个 Key 的真实可用列表。

Q:客户端只弹「请求失败」,怎么找到真实错误? A:查客户端日志或调试面板,找原始响应;找不到就用本文的 curl 最小请求在终端直接复现。终端里拿到的状态码和错误正文,比任何弹窗都可靠。

Q:模型名会变吗,要不要定期检查? A:会。模型有上新、迁移和下线,脚本里写死的模型名建议在报错时第一时间对照当前列表核对。

Q:换用新模型名后要改哪些地方? A:把所有出现旧名称的位置列一遍:客户端下拉配置、环境变量、项目配置文件、代码常量、CI 的 Secret。漏掉任何一处都会让 404 看起来「时好时坏」。这也是建议把模型名收敛到单一配置来源的原因。

404 排查清单

  1. OpenAI 工具用 https://zivv.pro/v1,Claude Code 用 https://zivv.pro
  2. 模型名称从当前列表或模型广场复制
  3. Key 分组允许目标模型
  4. 清理客户端缓存的旧模型条目
  5. 用最小 curl 请求做终局验证

把这份清单收藏起来:下次再遇到 404,从第一条开始过,通常五分钟内就能定位。比起在客户端里反复点「重试」,一次系统性的排查省时得多,也顺便帮你把配置整理成了可复用的干净状态。

Codex 的完整配置见 Codex 接入指南,各错误字段含义见错误码说明。如果你还在选平台,Zivv 一个 Key 就能调 100+ 模型,三大协议全兼容,注册后按本文清单配置一遍,404 基本与你无缘。