NextChat 自定义接口配置
最后更新: 2026-07-16
NextChat 在服务端部署上用一个 BASE_URL 环境变量覆盖 API 主机,客户端上用界面里的自定义接口设置。CUSTOM_MODELS 加上 @OpenAI 后缀就能把 Claude、Gemini、DeepSeek 的 ID 塞进同一个模型选择器,全部走一个 Key。
先说结论:一个 BASE_URL,一个 Key,一份模型列表
服务端部署(Vercel、Docker 或裸 Node)上,三个环境变量能搞定全部配置。BASE_URL 覆盖 API 请求发去哪里;README 把它描述成"覆盖 openai api 请求的 base url",默认值是 https://api.openai.com,填的时候不带 /v1,因为 NextChat 自己会拼接请求路径。OPENAI_API_KEY 存网关 Key。CUSTOM_MODELS 控制模型选择器:加号加一个模型,减号隐藏一个,-all 清空默认列表,name=显示名 能重命名一个条目。 让多厂商 ID 生效的关键细节是供应商后缀。NextChat 内部给不同厂商准备了各自独立的客户端代码路径,所以一个裸的 claude 类 ID 加进 CUSTOM_MODELS 有可能被路由到 Anthropic 路径上,那条路径要的是不同的 Key 和请求格式。给 ID 加上 @OpenAI 后缀,比如 +claude-sonnet-4-6@OpenAI,就能把这个模型钉在 OpenAI 兼容路径上,不管这个模型是哪家训练的,请求都会按标准 chat-completions 格式发到你的 BASE_URL。
BASE_URL=https://api.kkaiapi.com # 不带 /v1
OPENAI_API_KEY=sk-你的kkaiapi密钥
CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI,+deepseek-v4-pro@OpenAI
DEFAULT_MODEL=claude-sonnet-4-6NextChat 怎么解析端点
NextChat(GitHub 上的 ChatGPTNextWeb,约 88K 星标)是被部署得最多的聊天前端之一:一个能一键部署到 Vercel 的轻量 Web 应用,还打包了 iOS、macOS、Android、Windows、Linux 各端客户端。它的流行正来自这套本文用到的机制:一切都是配置项,端点也只是另一个设置。 对应有两个配置面。服务端部署在构建和启动时读环境变量:BASE_URL 决定主机,OPENAI_API_KEY 鉴权,CUSTOM_MODELS 给这个部署的所有用户塑造选择器。客户端和 Web 界面还额外提供一个应用内路径:设置、模型供应商,选 OpenAI,填端点和 Key 字段,在自定义模型名称字段里列出额外的 ID。应用内路径的值存在设备本地,适合个人客户端;环境变量适合给别人用的部署。 无论哪条路径,NextChat 发出去的都是对着你端点的标准聊天补全请求,模型 ID 是纯字符串。有一个多厂商网关在 BASE_URL 背后,同一个部署就能给长回答用 Claude,给快速问题用一个快的 Gemini ID,给双语流量用 DeepSeek 或 GLM,全部走一个 Key。
完整配置:服务端部署或应用内设置
Vercel 部署,在项目环境设置里填好这些变量再重新部署;Vercel 在构建时固化环境值,所以改了变量不重新部署什么都不会变。Docker 部署,同样的变量用 -e 参数或者环境文件传进去。CODE 变量值得在任何公开部署上设置,它给访问加一道密码,陌生人没法白嫖你的 Key。 应用内路径不需要任何部署。在设置里选 OpenAI 供应商,把端点换成 https://api.kkaiapi.com,粘贴 Key,在自定义模型名称字段里用和环境变量一样的语法加 ID。这是桌面端和移动端客户端接入网关的方式,也是提交到服务端部署之前最快测试数值的办法。 DEFAULT_MODEL 决定新对话默认用什么,在共享部署上这一点比听起来更重要:多数用户从不换模型,默认 ID 承载了大部分花费。把它设成你想让日常流量走的那个模型。
docker run -d -p 3000:3000 \
-e BASE_URL=https://api.kkaiapi.com \
-e OPENAI_API_KEY=$KKAIAPI_KEY \
-e CUSTOM_MODELS="-all,+claude-sonnet-4-6@OpenAI,+claude-haiku-4-5-20251001@OpenAI,+gemini-3.5-flash@OpenAI" \
-e DEFAULT_MODEL=claude-haiku-4-5-20251001 \
-e CODE=你的访问密码 \
yidadaa/chatgpt-next-web给选择器选模型
因为整个选择器都走一个 Key 计费,调优是观察性的:跑一周,读控制台里按模型的用量,让 CUSTOM_MODELS 跟着真实点击情况重塑,而不是靠预判。
- 从 -all 开始清空列表。默认选择器是一份很长的纯 OpenAI 菜单;清空之后加四五个你刻意选的 ID,能给用户一个每个选项都被你定过价的选择器
- 默认模型承载整个部署。claude-haiku-4-5-20251001 或 gemini-3.5-flash 作为 DEFAULT_MODEL,能让日常大多数轮次保持快速便宜,更强的 ID 一键可达
- 长文工作值得留一个旗舰位。claude-sonnet-4-6 和 gpt-5.5 是用户在草稿或分析真正要紧时会去点的选项
- 双语部署应该带上 deepseek-v4-pro 或 glm-5.2;NextChat 有庞大的中文用户群,这些 ID 天然适配这类流量
- 重命名是免费的说明文档:claude-sonnet-4-6=文笔 Sonnet 这类条目,能让选择器对非技术用户一目了然
主力模型价格
价格按 kkaiapi 中文区实时价格计算,单位 ¥/1M tokens(输入/输出)。
| 模型 | 模型 ID | kkaiapi 价格(输入/输出) | 适合场景 |
|---|---|---|---|
| Claude Sonnet 4.6 | claude-sonnet-4-6 | ¥3 / ¥15 | 长文与分析 |
| Claude Haiku 4.5 | claude-haiku-4-5-20251001 | ¥1 / ¥5 | 默认模型 |
| GPT-5.5 | gpt-5.5 | ¥4 / ¥25 | 旗舰对比 |
| Gemini 3.5 Flash | gemini-3.5-flash | ¥7 / ¥40 | 快速日常问答 |
| GLM-5.2 | glm-5.2 | ¥7.2 / ¥25.2 | 双语部署 |
NextChat 专属的翻车点
/v1 的坑和多数工具方向相反。NextChat 自己会拼接请求路径,所以填值不带 /v1;粘贴 https://api.kkaiapi.com/v1 会产生重复路径导致 404。LibreChat 这类工具期待 base URL 里带 /v1,正是这种差异让人两个方向都容易搞混。 一个报鉴权或请求头错误的 Claude ID,是漏了 @OpenAI 后缀。没有它,NextChat 可能把这个 ID 路由去它原生的 Anthropic 路径,那条路径根本不会去查你的 BASE_URL,还要求厂商格式的鉴权。给每一个网关 ID 都钉上 @OpenAI,请求才会全部走兼容路径。 改了环境变量却什么都没变,是重新部署的问题。Vercel 上变量在构建时读取;Docker 上容器需要重建。相比之下应用内设置立刻生效,但只对那台设备生效,这是同一个困惑的另一半。 CODE 和 OPENAI_API_KEY 经常被搞混。CODE 是用户输进界面的访问密码;Key 才是服务端实际花钱的那个。如果用户报告聊天之前就出现未授权页面,那是 CODE 的问题;如果聊天对着端点失败,那是 Key 的问题。
哪些人会把 NextChat 接到一个网关上
- 在 Vercel 上跑个人部署、想要一个按量计费 Key 而不是每家厂商一份订阅的人
- 共用一个 NextChat 实例的小团队,用 CODE 做访问控制,一个网关 Key 让用量日志同时充当成本报表
- 把应用内接口指向网关的桌面和移动端用户,在每台设备上从一个选择器里够到 Claude、Gemini、DeepSeek
- 在一个部署里混用 GLM、DeepSeek 和 Claude、GPT 的双语用户,原生的按厂商隔离做不到这一点
- 手头没有某家厂商官方支付渠道的开发者,充值即用不需要海外卡
验证接入与排查首次对话
部署之前先验证端点:带上 Key 列出模型,确认你打算写进 CUSTOM_MODELS 的每个 ID 都在,拼写精确。这些 ID 是按字符串转发的,/v1/models 的输出是权威拼写来源。 然后部署,给选择器里的每个模型各发一条消息。全部 404 是 BASE_URL 里带了 /v1 的错误。401 是 Key 的问题,要么错了要么没进到构建实际用的环境里。只有 Claude 系 ID 报错,是漏了 @OpenAI 后缀。选择器里出现你从没加过的模型,说明 CUSTOM_MODELS 丢了 -all 前缀,或者变量没传进构建。 对话跑通之后,kkaiapi 控制台会显示每次请求的模型、token 数和花费。对一个不止一个用户的部署,这个视图能回答每个 NextChat 管理员迟早会问的问题:到底是哪个模型在悄悄吃掉余额,靠数据说话而不是猜。
curl -s https://api.kkaiapi.com/v1/models \
-H "Authorization: Bearer $KKAIAPI_KEY" | head -50常见问题
NextChat 的 BASE_URL 要带 /v1 吗?
不要。NextChat 自己会拼接请求路径,所以设成 BASE_URL=https://api.kkaiapi.com,不带 /v1。带上会产生重复路径导致 404。这和 LibreChat 这类期待 base URL 里带 /v1 的工具正好相反。
怎么通过一个端点给 NextChat 加 Claude 或 Gemini 模型?
在 CUSTOM_MODELS 里加上 @OpenAI 后缀,比如 +claude-sonnet-4-6@OpenAI。后缀会把这个 ID 钉在 OpenAI 兼容请求路径上,让它走你的 BASE_URL,而不是 NextChat 原生的 Anthropic 或 Google 客户端路径。
环境变量和应用内设置有什么区别?
环境变量给一个服务端部署的所有用户配置,改动需要重新部署。应用内设置在设置里的自定义接口里,值存在设备本地,立刻生效,适合个人桌面和移动端客户端。
怎么把默认的 OpenAI 模型列表从选择器里去掉?
CUSTOM_MODELS 开头加 -all,再显式加 ID:CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI。用户就只会看到你刻意列出并定过价的模型。
CODE 变量是做什么的?
它给部署设置一个或多个访问密码。访客要输入密码才能开始聊天,防止一个公开的 Vercel 网址白嫖你的 Key。它和 API Key 本身无关。
为什么改了环境变量没有效果?
NextChat 在构建或容器启动时读环境值。Vercel 上,改完变量要重新部署;Docker 上要重建容器。只有应用内设置不需要重启,而它只存在设备本地。