Назад в блог

Инструменты и интеграцииИнструкция

Подключаем LibreChat к CheapTokens: custom endpoint в librechat.yaml

Как добавить CheapTokens в свой LibreChat: одна запись в librechat.yaml, ключ в переменной окружения и три модели в меню выбора.

Автор: CheapTokens TeamОпубликовано 4 мин чтения

Запись настройки LibreChat, указывающая на API CheapTokens
Содержание
  1. Что нужно в записи
  2. Подключение в три шага
  3. Три модели в одном меню
  4. Если endpoint не появился или пришла ошибка

LibreChat у вас запущен, но в меню моделей только то, что в нём было из коробки. Чтобы добавить CheapTokens, нужна одна запись endpoints.custom в librechat.yaml: имя, базовый адрес https://api.cheaptokens.dev/v1, ключ в виде переменной окружения и список id моделей. Перезапустите контейнер — и в меню появится endpoint «CheapTokens».

Названия полей ниже взяты из справочника LibreChat по custom endpoint (документация ветки «Latest (dev)», сверено 30 октября 2026). На странице нет номера версии, так что если у вас старая сборка и поле ведёт себя иначе, сверьтесь с документацией своего релиза. Сторона API — как в нашей документации: формат OpenAI Chat Completions, один баланс на все модели.

Что нужно в записи#

Обязательных полей четыре, и у каждого простая роль:

  • name — как endpoint называется в меню.
  • apiKey — ключ. Документация советует ссылку вида ${VAR}, а не сам ключ, чтобы секрет не лежал в YAML.
  • baseURL — куда уходят запросы: https://api.cheaptokens.dev/v1.
  • models.default — список id моделей в меню.

Ещё два необязательных поля стоит задать. titleConvo: true разрешает LibreChat придумывать названия чатов (заголовки создаются, пока не стоит false), а modelDisplayLabel — подпись рядом с ответами (по умолчанию «AI»). У models.fetch значение по умолчанию false: LibreChat не запрашивает у API список моделей, и меню строится из models.default. Поэтому id ниже записаны полностью.

Подключение в три шага#

Шаг за шагом

Подключаем LibreChat (Docker)

Передайте ключ контейнеру

Ключ должен попасть в контейнер LibreChat как переменная окружения. Документация LibreChat позволяет задавать переменные в docker-compose.override.yml под ключом environment, так что создайте этот файл рядом с docker-compose.yml. Имя переменной наше, можно любое — главное, чтобы в YAML оно совпало:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here

Значение — заглушка: подставьте ключ из кабинета CheapTokens.

Добавьте endpoint в librechat.yaml

Создайте librechat.yaml рядом с docker-compose.yml. Форма — как в примере с Mistral из документации LibreChat, только с нашим адресом и id:

yaml
endpoints:
  custom:
    - name: 'CheapTokens'
      apiKey: '${CHEAPTOKENS_API_KEY}'
      baseURL: 'https://api.cheaptokens.dev/v1'
      models:
        default:
          - 'zai-org/GLM-5.3-Flash'
          - 'deepseek-ai/DeepSeek-V4-Flash-0731'
          - 'MiniMaxAI/MiniMax-M2.7'
      titleConvo: true
      modelDisplayLabel: 'CheapTokens'

Смонтируйте файл и перезапустите

Контейнер должен видеть файл. Добавьте volumes в тот же docker-compose.override.yml, теперь в нём обе части:

yaml
services:
  api:
    environment:
      CHEAPTOKENS_API_KEY: ct_your_key_here
    volumes:
      - ./librechat.yaml:/app/librechat.yaml

И примените:

bash
docker compose up -d
От ключа до меню: переменная окружения, librechat.yaml, монтирование, затем CheapTokens в списке моделей
Путь от ключа до endpoint CheapTokens в меню LibreChat

Откройте LibreChat в браузере, начните новый чат и выберите CheapTokens в меню endpoint. Три модели уже в списке. Отправьте «Say hi in one sentence» — должен прийти ответ. Если нет, загляните в последний раздел.

Три модели в одном меню#

Вот ради чего стоит держать свой чат. Допустим, вы запустили его для небольшой команды. Большинство вопросов обычные: переписать письмо, объяснить ошибку. Для них хватает zai-org/GLM-5.3-Flash: контекст 390K и до 8 192 токенов в ответе. Когда кто-то вставляет длинный документ и ждёт длинного ответа, он переключает тот же чат на deepseek-ai/DeepSeek-V4-Flash-0731 (контекст 380K, до 32 768 токенов в ответе). MiniMaxAI/MiniMax-M2.7 (контекст 180K) — третье мнение, когда два ответа расходятся. Второй подписки и второго ключа не нужно: все три модели списываются с одного баланса.

Сколько стоит такой чат? Возьмём команду из пяти человек: 200 сообщений в день, в каждом около 3 000 входных токенов (история растёт) и около 500 токенов в ответе:

Модель За запрос 200 запросов OpenRouter, 200 запросов
GLM-5.3-Flash $0.00008 $0.016 $0.0284
DeepSeek-V4-Flash $0.000095 $0.019 $0.056
MiniMax-M2.7 $0.00023 $0.045 $0.54

3 000 входных и 500 выходных токенов на запрос. Цены за 1M токенов актуальны и меняются вместе с нашими тарифами; столбец OpenRouter показывает справочные цены для той же нагрузки.

В таблице цена каждой модели за эти 200 запросов посчитана со входом и выходом вместе, и в сумме выходит дешевле, чем у OpenRouter. Найдите строку под свою нагрузку и сверьтесь со страницей цен.

Попробуйте самиПопробуйте: один вопрос двум моделямПоказать ответ

Откройте новый чат, выберите zai-org/GLM-5.3-Flash и попросите пересказать абзац, который вы хорошо знаете. Переключите модель в том же меню на deepseek-ai/DeepSeek-V4-Flash-0731 и спросите ещё раз. Сравните длину и тон двух ответов — по ним и выбирают модель по умолчанию.

Если endpoint не появился или пришла ошибка#

Почти всегда причина одна из трёх. Выберите ту, что совпадает с тем, что вы видите:

Выберите свой случай

Что вы видите?

CheapTokens нет в меню

LibreChat не прочитал файл. Проверьте, что librechat.yaml смонтирован в /app/librechat.yaml (файл override выше), что отступы в YAML на месте и что после правки вы выполнили docker compose up -d.

401 Unauthorized

Ключ не передан или неверный. Проверьте, что имя после ${ в librechat.yaml в точности совпадает с именем переменной окружения, и что в ключ не попали пробелы или кавычки. Подробнее об этой ошибке — в статье API 401 или 404.

404 или ошибка модели

Неверный id модели. Берите полный id, например deepseek-ai/DeepSeek-V4-Flash-0731: короткое имя не принимается. Точные id можно вывести по шагам из статьи List models with GET /v1/models.

Когда первое сообщение прошло, добавляйте новые id в models.default, когда захотите ещё одну модель в меню. Нужен другой интерфейс? Та же схема — базовый адрес и ключ — описана в статье Connect Open WebUI to CheapTokens, а общая картина — в OpenAI-compatible API: what base_url is. Сами модели — на странице GLM.