跳到主要内容
Router One

用主机根地址 BASE_URL 把 NextChat 接到 Router One

NextChat(原 ChatGPT-Next-Web)是开源的 ChatGPT 风格聊天应用,支持 Vercel 一键部署、Docker 部署和桌面客户端。它通过 Chat Completions 调用 OpenAI 格式的 API,一个 Router One Key 就能把 GPT、Claude、Gemini、Grok 系列放进它的模型选择器——网关在大陆可直连,部署在国内服务器上也不用代理,支付宝即可充值。有两个细节决定能否接通:NextChat 自己会拼接 v1/chat/completions,所以 base URL 是主机根地址而不是 /v1;它的模型列表由配置固定,目录里的模型要按精确 ID 加入后才会出现。

把 NextChat 配置到 Router One base URL

自托管部署时,把下面的变量作为 Docker 的 -e 参数或 Vercel 项目环境变量填入,然后重新部署。BASE_URL 是主机根地址:NextChat 的服务端路由会去掉请求路径里的 /api/openai/,再把剩下的 v1/chat/completions 拼到 BASE_URL 后面,填了以 /v1 结尾的地址就会请求 /v1/v1/chat/completions。OPENAI_API_KEY 是所有对话共用的服务端 Key;CODE 是用户在界面里输入的访问密码。CUSTOM_MODELS 先用 -all 隐藏 NextChat 内置的模型名,再按精确 ID 逐个加入目录模型;@OpenAI 标记让模型走 NextChat 的 OpenAI 格式客户端,=<展示名> 决定选择器里显示的名字。DEFAULT_MODEL 指定新会话默认使用哪一个:

nextchat.env
# NextChat self-hosted: Docker -e flags or Vercel project environment variables
BASE_URL=https://api.router.one
OPENAI_API_KEY=sk-your-router-one-key
CODE=your-access-password
CUSTOM_MODELS=-all,+<model-id-from-/models>@OpenAI=<label>
DEFAULT_MODEL=<model-id-from-/models>

# Example: docker run -d -p 3000:3000 --env-file nextchat.env yidadaa/chatgpt-next-web

桌面客户端或托管界面:在设置里填接口地址

无法改服务端变量时——桌面客户端,或管理员允许用户自带 Key 的托管实例——打开设置,开启「自定义接口」,「模型服务商」保持 OpenAI,填入主机根地址、你的 Key 和模型 ID。主机根地址的规则不变:客户端会把 v1/chat/completions 拼到接口地址后面。在浏览器部署里,开启这项设置后浏览器会直接请求网关,而不再经过实例自己的 /api/openai 路由(网关接受跨域请求,所以能直连),在这里填的 Key 会代替访问密码。若管理员设置了 HIDE_USER_API_KEY=1,整块设置会被隐藏,所有对话仍走服务端 Key。桌面客户端本身直接发请求,只需要填这一处。

设置项填写的值说明
自定义接口开启展开服务商相关字段;HIDE_USER_API_KEY=1 时隐藏
模型服务商OpenAI选择 NextChat 的 OpenAI 格式客户端(Chat Completions)
接口地址https://api.router.one主机根地址;NextChat 会自行拼接 v1/chat/completions
API Keysk-your-router-one-key在这个浏览器或客户端里代替访问密码
自定义模型名-all,+<model-id>@OpenAI=<展示名>语法与 CUSTOM_MODELS 相同;只影响这个浏览器或客户端的选择器

NextChat 从模型 ID 里读出了什么

NextChat 对不在内置列表里的模型没有能力查询,多项行为都按模型名字符串判断,所以 openai/gpt-5.5 这样的精确目录 ID 与 NextChat 原本针对的不带前缀的模型名处理方式不同:

行为NextChat 的判断方式使用目录 ID 时怎么做
模型选择器内置模型名加上 CUSTOM_MODELS;从端点拉取列表默认关闭,即使打开也只保留 gpt- 和 chatgpt- 开头的 ID想用的模型都按精确 ID 加入;NextChat 不会读取网关的 /models
服务端允许列表设置了 CUSTOM_MODELS 后,请求未被允许的 ID 会被 NextChat 自己的路由以 403「you are not allowed to use … model」拒绝先找这条提示,再考虑网关问题;这类请求根本没有离开 NextChat
图片上传先看 VISION_MODELS 变量,再按名称模式匹配(gpt-5、带 3 或 4 的 claude、gemini-2.0 或 2.5、grok-4、o3、o4-mini、vision)先在模型页核对输入模态,再把模式匹配不到的 ID 写进 VISION_MODELS
采样参数只有以 gpt-5、o1、o3、o4-mini 开头、不带前缀的模型名会改用 NextChat 固定的采样值而不是会话设置,并使用 max_completion_tokens带前缀的 ID 会按当前会话的设置发送;若 400 错误点名某个参数,把该会话的 Temperature 和 Top P 调到 1

NextChat 该填哪个模型 ID?

从 /models 页复制精确的模型 ID,保留大小写、连字符和版本后缀,不要用展示名称代替。打开该模型的详情页,核对支持的 API 端点、上下文窗口和工具调用等能力,再与 NextChat 当前选择的 provider 和功能对应。模型出现在目录里,不等于当前客户端能调用它的所有功能。建议为每个工具单独建 API Key,并设置 maxSpend 消费上限。

NextChat 用的是哪种 API 协议?

OpenAI 兼容描述的是接口格式,不能据此推断 Chat Completions(/v1/chat/completions)、Responses(/v1/responses)和 Anthropic Messages(/v1/messages)可以互换。先核对工具当前版本、provider 配置和实际请求路径,再查模型详情与 API 兼容性事实页。一次普通对话成功,也不能证明服务端工具、历史状态或文件编辑功能都受支持。

在 trace 里验证 NextChat 的调用

先在 NextChat 发出一次简单文本请求,再到 Dashboard → Logs 按时间、模型和 request_id 核对 trace:tokens、花费、延迟和状态码。成功后再分别验证流式输出、工具调用和多轮历史。失败时保留实际请求路径、完整错误消息及 request_id;没有对应日志时,先查客户端配置和网络,不能仅凭客户端报错认定是网关或上游故障。

常见问题

BASE_URL 要不要以 /v1 结尾?

不要。NextChat 的 README 把 BASE_URL 写成 http://your-openai-proxy.com 这样的主机地址,服务端路由会把 v1/chat/completions 拼在后面。填 BASE_URL=https://api.router.one;填成 https://api.router.one/v1 会请求 /v1/v1/chat/completions 并失败。应用内的「接口地址」字段规则相同。这与本站 SDK 指南里带 /v1 的 base URL 正好相反,不要在工具之间照抄地址。

为什么目录里的模型没有出现在 NextChat 的模型选择器里?

NextChat 不会请求网关的 /models 端点:它的 OpenAI 客户端默认关闭模型列表拉取,即使打开也只保留 gpt- 或 chatgpt- 开头的 ID。选择器显示的是 NextChat 内置模型名,加上 CUSTOM_MODELS(或应用内「自定义模型名」)添加的模型。先用 -all 隐藏内置模型名——其中一部分网关未必提供——再按精确 ID 逐个加入目录模型,例如 -all,+openai/gpt-5.5@OpenAI=GPT-5.5,+anthropic/claude-sonnet-5@OpenAI=Claude Sonnet 5。@OpenAI 标记对所有系列都适用:它选择的是 NextChat 的 OpenAI 格式客户端,也就是网关为每个聊天模型提供的 Chat Completions 请求。不加标记时,NextChat 会把该模型归入一个以模型名命名的服务商分组。

共享的 NextChat 实例花的是谁的 Key?

服务端设置了 OPENAI_API_KEY 时,所有输入 CODE 访问密码的用户都用这一把 Router One Key 对话,整个实例就是一份 Trace、一个 maxSpend 上限。用户在设置 → 自定义接口里填了自己的 Key,就会绕过访问密码,改用自己的 Key 计费;只有 HIDE_USER_API_KEY=1 时,NextChat 服务端才会拒绝用户自带的 Key。建议给实例单独建一把 Key 并设置 maxSpend,核对共享部署的账单时在 Dashboard → Logs 按这把 Key 筛选。

NextChat 能通过网关用哪些模型?

选用当前目录中同时支持 NextChat 所用端点和所需功能的模型。精确 ID、当前单价与能力以 /models 及模型详情为准;不要仅按 GPT、Claude 等系列名判断兼容性。客户端能列出模型,只证明模型发现成功,仍需验证实际调用。

能列出模型,但调用报 400 或 404,怎么办?

先记录实际请求路径和错误消息,再核对精确模型 ID。400 可能是参数、工具类型或模型与端点不匹配;404 可能是请求路径或资源不存在,不能直接判定模型下线。若错误提示 must be called via,按它指明的端点调整客户端 provider,或换用支持当前端点的模型。不要在所有工具里统一增删 /v1 或 /chat/completions。

中国大陆能直连吗?

能。网关在大陆可直连、无需 VPN,配置与全球环境完全一致。

报 401/402/403/429 怎么排查?

先到 Dashboard → Logs 核对请求及错误消息。401 查 Key 是否传入和有效;402 查钱包余额与 maxSpend;403 查 Key 权限和访问限制;429 查请求频率、token 限额及上游限流,按错误来源处理。保留 request_id,再按错误码速查页逐项排查。