最近在折腾自建 API 中转项目,发现不少朋友在升级到 NewAPI 5.6 版本后,遇到了一个非常典型的“伪故障”:明明服务端测速显示“可用”,请求也能通,但是在某些客户端(特别是 Codex 这类工具)里,死活拉取不到模型列表。

如果你也遇到了这种情况,别急着怀疑环境崩了,这大概率不是 Bug,而是配置层面的细微差异。今天就来顺一顺排查思路,帮你快速定位问题。

问题现象复现

通常这个问题表现得很有迷惑性:

  1. 通道状态正常:在 NewAPI 的后台控制面板里,你能看到通道状态是绿色的,测速也能跑通。
  2. 原生 API 通:自己写脚本或者用 curl 直接调用中转地址,完全没问题,能正常对话。
  3. 客户端拉空:只要用到 Codex 或者其他需要自动获取 v1/models 列表的客户端,返回的就是空列表或者报错。

核心原因:接口规范与实现细节的冲突

既然底层数据传输没问题,那问题一定出在“元数据”的获取上。NewAPI 这类项目通常需要完全兼容 OpenAI 的接口规范。

在 OpenAI 的官方 API 响应中,v1/models 接口返回的对象里通常包含 id(模型 ID)、created(时间戳)、object(类型)以及 owned_by(所有者)。

问题的关键往往在于 API Key 绑定的渠道与模型列表的映射关系

在很多中转程序里,一个 Token(API Key)可能对应了多个上游渠道。Codex 客户端在请求模型列表时,NewAPI 会去查找这个 Key 也就是 Token 所有权限访问的所有模型。如果后台的渠道配置中,模型名称没有按照标准格式填写,或者渠道未被正确启用/分配给该 Token,列表就会为空。

详细排查步骤

遇到“获取模型列表失败”,建议按以下顺序由简入繁进行排查:

1. 检查客户端的“自定义模型列表”

这是最容易被忽略的一步。很多高级客户端为了加速启动,允许用户手动填写模型列表,从而跳过请求服务端的 v1/models 接口。

请确认 Codex 的设置里,是否勾选了类似“强制使用自定义模型”或者关闭了“自动同步模型”的选项。如果有,请尝试关闭,让它去请求服务端接口来验证问题。

2. 验证渠道的“模型映射”格式

进入 NewAPI 后台,查看该 Token 对应的渠道配置。

  • 模型重定向/映射:检查你是否在“模型重定向”里写了通配符(如 gpt-*)却未被正确解析。建议 Codex 这类对列表敏感的客户端,在 Channel 配置里,直接把模型名称一个个写死,不要用通配符测试。例如明确写上 gpt-4o, claude-3-5-sonnet
  • 自定义模型名称:有些用户为了省事,把上游的复杂模型名改成了简单的别名。NewAPI 5.6 虽然支持重定向,但在某些特定请求头下,直接读取的是数据库中存储的原始模型映射表。确保映射配置没有语法错误(比如多余的逗号或空格)。

3. 请求头问题:AuthorizationBase URL

这是一个常见的低级错误,但在版本迭代后容易复现。

  • Base URL:确认 Codex 里的 Base URL 是否精确到了具体路径?通常应该填 https://你的域名/v1,有些版本需要去掉末尾的 /v1,具体看你的 Nginx 或反向代理配置。但填多了路径层级会导致路由匹配不到 models 接口。
  • Token 格式:有些客户端会自动在 Token 前加 Bearer ,有些不会。如果你是手动拼接,确保不要重复添加 Bearer

4. 针对 Codex 的特殊处理:渠道 ID

在 NewAPI 的逻辑中,如果客户端请求模型列表时,服务端可能无法确定具体走哪一个渠道(因为一个 Key 可能绑定了多个不同供应商的渠道,比如同时绑定了 OpenAI 和 Anthropic)。

检查 Codex 是否支持在 URL 中附加参数,或者在 API Key 中嵌入渠道 ID(Channel ID)。

  • 解决方案:尝试创建一个仅绑定单一渠道的令牌进行测试。如果单一渠道能拉取列表,说明是“多渠道聚合”返回逻辑的问题。你可以为 Codex 专门创建一个 Token,只开启 gpt-4o 相关的渠道,排除干扰。

兜底方案

如果你实在不想折腾后端复杂的路由逻辑,有一个万能的“笨办法”:

在客户端直接手动填写模型列表。

虽然这不能解决服务端 v1/models 接口的问题,但能立刻让你的工具用起来。你只需要在 NewAPI 后台确认你想用的模型(比如 gpt-4o-mini)能正常调通,然后把这个名字手动填进 Codex 的设置里即可。这不影响后续的对话请求,只是少了一个“自动发现”的功能。

总结

NewAPI 5.6 整体是非常稳的,Codex 拉不到列表,90% 的情况是 Token 权限与渠道模型映射 没对上,或者是客户端请求的路径与 Nginx 配置有微小偏差。

先确认“单一渠道 Token”能否拉列表,能缩小排查范围。希望这篇排查笔记能帮你省下几个小时的调试时间,早点击中那个 API!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭