Направьте NextChat на кастомный OpenAI-совместимый эндпоинт.
Updated 2026-07-29
NextChat переопределяет свой API-хост одной переменной окружения BASE_URL на серверных деплоях либо кастомным эндпоинтом внутри приложения в Settings на клиентах. Добавьте id каталога через CUSTOM_MODELS с суффиксом @OpenAI — и Claude, Gemini и DeepSeek появятся в одном и том же селекторе моделей под одним ключом.
Короткий ответ: BASE_URL, один ключ и список моделей.
На серверном деплое (Vercel, Docker или голый Node) всю работу делают три переменные окружения. BASE_URL переопределяет, куда уходят API-запросы; README описывает её как «override openai api request base url» с умолчанием https://api.openai.com, и значение вводится без /v1, потому что NextChat сам добавляет путь запроса. OPENAI_API_KEY несёт ключ шлюза. CUSTOM_MODELS управляет селектором моделей: плюс добавляет модель, минус скрывает одну, -all очищает список по умолчанию, а name=displayName переименовывает запись. Деталь, которая заставляет работать мультивендорные id, — это суффикс провайдера. NextChat поставляется с отдельными путями клиентского кода для нескольких вендоров, так что голый id claude, добавленный в CUSTOM_MODELS, может всплыть на пути Anthropic, который ожидает другой ключ и формат запроса. Добавление @OpenAI к id, как в +claude-sonnet-4-6@OpenAI, закрепляет модель на OpenAI-совместимом пути, так что запрос уходит на ваш BASE_URL в стандартном формате chat-completions независимо от того, какой вендор обучал модель.
BASE_URL=https://api.apisrouter.com # no /v1
OPENAI_API_KEY=sk-APIsRouter-...
CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI,+deepseek-v4-pro@OpenAI
DEFAULT_MODEL=claude-sonnet-4-6Как NextChat резолвит свой эндпоинт.
NextChat (ChatGPTNextWeb на GitHub, около 88K звёзд) — один из самых широко развёрнутых чат-фронтендов в природе: лёгкое веб-приложение с деплоем на Vercel в один клик плюс упакованные клиенты для iOS, macOS, Android, Windows и Linux. Его популярность идёт именно от того механизма, который использует эта страница: всё — это поверхность конфигурации, и эндпоинт — это просто ещё одна настройка. Таких поверхностей две. Серверные деплои читают переменные окружения при сборке и запуске: BASE_URL решает хост, OPENAI_API_KEY аутентифицирует, а CUSTOM_MODELS формирует селектор для каждого пользователя этого деплоя. Клиенты и веб-UI дополнительно выставляют путь внутри приложения: Settings, Model Provider, выбрать OpenAI, затем заполнить поля эндпоинта и ключа и перечислить дополнительные id в поле custom model names. Путь внутри приложения хранит значения локально на каждом устройстве, что делает его правильной поверхностью для персонального клиента, тогда как переменные окружения — правильная поверхность для деплоя, которым пользуются другие люди. В любом случае запрос, выходящий из NextChat, — это стандартный chat completion к вашему эндпоинту с id модели в качестве простой строки. С мультивендорным шлюзом за BASE_URL один и тот же деплой обслуживает Claude для длинных ответов, быстрый id Gemini для быстрых вопросов и DeepSeek или GLM для двуязычного трафика — всё через один ключ.
Полная настройка: серверный деплой или настройки внутри приложения.
Для деплоя на Vercel задайте переменные в настройках окружения проекта и передеплойте; Vercel запекает значения окружения на этапе сборки, так что правка переменной без передеплоя ничего не меняет. Для Docker передайте те же переменные флагами -e или env-файлом. Переменную CODE стоит задать на любом публичном деплое — она закрывает доступ паролем, так что посторонние не смогут тратить ваш ключ. Путь внутри приложения вообще не требует деплоя. В Settings выберите провайдера OpenAI, замените эндпоинт на https://api.apisrouter.com, вставьте ключ и добавьте id в поле custom model names, используя тот же синтаксис, что и переменная окружения. Именно так десктопные и мобильные клиенты работают со шлюзом, и это также самый быстрый способ протестировать значения перед тем, как закреплять их в серверном деплое. DEFAULT_MODEL выбирает, на чём стартуют новые чаты, что имеет большее значение, чем звучит, на общем деплое: большинство пользователей никогда не меняют модель, так что id по умолчанию — это то место, куда падает большая часть расходов. Задавайте его осознанно на ту модель, которая должна нести повседневный трафик.
docker run -d -p 3000:3000 \
-e BASE_URL=https://api.apisrouter.com \
-e OPENAI_API_KEY=$APISROUTER_API_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=your-access-password \
yidadaa/chatgpt-next-webВыбор моделей для селектора.
Поскольку весь селектор тарифицируется через один ключ, цикл настройки — наблюдательный: прогоните неделю, прочитайте использование по модели в консоли и перестройте 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 (writing) делают селектор самоочевидным для нетехнических пользователей.
Оплата по факту · дешевле официальных цен
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Модель | Официальная цена | Наша цена |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Haiku 4.5 20251001 | $1.00 / $5.00 per M | $0.80 / $4.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Gemini 3.5 Flash | $1.50 / $9.00 per M | $1.20 / $7.20 per M |
| GLM-5.2 | $1.14 / $4.00 per M | $1.10 / $4.00 per M |
Сбои, специфичные именно для NextChat.
Ошибка с /v1 идёт в направлении, противоположном большинству инструментов. NextChat сам добавляет путь запроса к BASE_URL, так что значение должно быть без /v1; вставка https://api.apisrouter.com/v1 даёт удвоенные пути, которые дают 404. Инструменты вроде LibreChat ожидают /v1 включённым, и именно поэтому люди носят неверную привычку в обоих направлениях. Id Claude, который выдаёт ошибку про ключи или заголовки, — это отсутствующий суффикс @OpenAI. Без него NextChat может маршрутизировать id через свой нативный путь Anthropic, который никогда не обращается к BASE_URL для вашего шлюза и ожидает аутентификацию в формате вендора. Закрепите каждый id шлюза суффиксом @OpenAI, и все запросы пойдут по совместимому пути. Правки переменных окружения, которые ничего не меняют, — это проблема передеплоя. На Vercel переменные читаются при сборке; на Docker контейнер нужно пересоздать. Настройки внутри приложения, напротив, применяются немедленно, но только на этом устройстве, что и есть другая половина той же путаницы. CODE и OPENAI_API_KEY меняют местами на удивление часто. CODE — это пароль доступа, который пользователи вводят в UI; ключ — это то, что тратит сервер. Если пользователи сообщают о странице unauthorized до того, как случился хоть один чат, это CODE; если чаты падают против эндпоинта, это ключ.
Кто направляет NextChat через шлюз.
- Люди, запускающие персональный деплой на Vercel, которым нужен один тарифицируемый ключ за ним вместо подписки на каждого вендора.
- Небольшие команды, разделяющие инстанс NextChat, использующие CODE для контроля доступа и один ключ шлюза, так что лог использования одновременно служит отчётом о затратах.
- Пользователи десктопных и мобильных клиентов, направляющие эндпоинт внутри приложения на шлюз, чтобы достучаться до Claude, Gemini и DeepSeek из одного селектора на каждом устройстве.
- Двуязычные пользователи, смешивающие id GLM и DeepSeek с Claude и GPT в одном деплое, что нативные силосы провайдеров делают неудобным.
- Разработчики без доступа к биллингу конкретного вендора. Доступ на основе пополнения без требования карты убирает зависимость от регистрации у каждого провайдера.
Проверьте эндпоинт и отладьте первый чат.
Докажите эндпоинт перед деплоем: полистайте модели ключом и убедитесь, что каждый id, который вы планируете поместить в CUSTOM_MODELS, появляется, написанный точно. Id пересылаются как строки, так что вывод /v1/models — авторитетное написание. Затем задеплойте и отправьте по одному сообщению на каждую модель в селекторе. 404 везде — это ошибка с /v1 внутри BASE_URL. 401 — это ключ, либо неверный, либо отсутствующий в окружении, которое реально использовала сборка. Ошибка только на id Claude — это отсутствующий суффикс @OpenAI. Селектор, показывающий модели, которые вы никогда не добавляли, означает, что CUSTOM_MODELS потерял префикс -all, либо переменная не дошла до сборки. Как только чаты начинают работать, консоль APIsRouter показывает модель на запрос, счётчики токенов и расходы. Для деплоя с более чем одним пользователем этот вид отвечает на вопрос, который рано или поздно задаёт каждый админ NextChat — какая модель тихо съедает баланс, — данными, а не догадками.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Частые вопросы
Должен ли BASE_URL в NextChat включать /v1?
Нет. NextChat сам добавляет путь запроса, так что задайте BASE_URL=https://api.apisrouter.com без /v1. Включение его даёт удвоенные пути, которые дают 404. Это противоположная конвенция инструментам вроде LibreChat, которые ожидают /v1 в base URL.
Как добавить модели Claude или Gemini в NextChat через один эндпоинт?
Добавьте их в CUSTOM_MODELS с суффиксом @OpenAI, например +claude-sonnet-4-6@OpenAI. Суффикс закрепляет id на OpenAI-совместимом пути запроса, так что он уходит на ваш BASE_URL вместо нативных путей клиента Anthropic или Google в NextChat.
В чём разница между переменными окружения и настройками внутри приложения?
Переменные окружения настраивают серверный деплой для каждого пользователя и требуют передеплоя для изменения. Кастомный эндпоинт внутри приложения в Settings хранит значения локально на каждом устройстве и применяется немедленно, что подходит персональным десктопным и мобильным клиентам.
Как убрать список моделей OpenAI по умолчанию из селектора?
Начните CUSTOM_MODELS с -all, затем добавьте id явно: CUSTOM_MODELS=-all,+claude-sonnet-4-6@OpenAI,+gpt-5.5@OpenAI. Тогда пользователи увидят только модели, которые вы осознанно перечислили и оценили.
Что делает переменная CODE?
Она задаёт один или несколько паролей доступа для деплоя. Посетители должны ввести код перед началом чата, что не даёт публичному URL на Vercel тратить ваш ключ. Это не связано с самим API-ключом.
Почему изменение переменной окружения не дало эффекта?
NextChat читает значения окружения при сборке или запуске контейнера. На Vercel правьте переменную и передеплойте; на Docker пересоздайте контейнер. Только настройки внутри приложения применяются без перезапуска, и они живут на каждом устройстве отдельно.