Разделы документации
Администрирование

Свои LLM-провайдеры

Подключение произвольного OpenAI-совместимого провайдера — идентификатор провайдера, имя модели, базовый URL и ключи.

Когда это нужно

Карточка Админка → Языковые модели → Свои модели подключает провайдера, которого нет среди готовых: корпоративный шлюз, кластер vLLM, GigaChat или любой сервис с OpenAI-совместимым API.

Запрос к такому провайдеру Charo отправляет по OpenAI-совместимому протоколу на указанный вами адрес. Идентификатор провайдера из выпадающего списка влияет только на подпись в интерфейсе и на подбор справочных сведений о модели (окно контекста, поддержка изображений) — способ обращения он не меняет. Поэтому провайдеров с собственной схемой авторизации (Amazon Bedrock, Google Vertex AI) так подключить нельзя, даже если их идентификатор есть в списке: ни ключи AWS, ни JSON сервис-аккаунта форма не принимает.

Названия провайдеров и моделей следуют соглашению LiteLLM, но сама библиотека LiteLLM в работе Charo не участвует: от неё осталась только вшитая справочная таблица моделей, их окон контекста и стоимости.

Поля формы

ПолеЧто указать
Провайдеридентификатор провайдера из списка; своё значение тоже можно ввести
API-ключнеобязательно — только если сервер требует аутентификацию
Базовый URL APIадрес OpenAI-совместимого эндпоинта, например http://vllm:8000/v1
Версия APIнеобязательно
Переменные окруженияпары «ключ — значение» (см. ниже)
Отображаемое имякак провайдер будет виден администраторам
Моделидля каждой: имя модели, отображаемое имя, тип входных данных («Только текст» или «Текст и изображения») и максимум токенов

Базовый URL обязателен: без него подключение отклоняется сообщением «Unknown LLM provider … — a custom provider needs an API base». Хвост /v1 Charo допишет сам, если его нет.

Имя модели

Имя модели уходит провайдеру дословно, как вы его написали. Указывайте ровно то, что отдаёт сервер, — список можно получить запросом GET {базовый URL}/models:

qwen3:4b
gpt-4o
GigaChat-2-Max

Префикс вида openai/ добавлять не нужно: он не срезается и уйдёт в запрос как часть имени модели — провайдер ответит, что такой модели нет.

Переменные окружения

Пары «ключ — значение» сохраняются вместе с карточкой провайдера, но на сам запрос к модели влияют только два ключа — OLLAMA_API_KEY и LM_STUDIO_API_KEY, и только когда поле «API-ключ» оставлено пустым. Остальные значения ничего не переопределяют: версия API Azure задаётся отдельным полем формы, а произвольные заголовки этим полем не передаются.

Типовые ошибки подключения

Ошибка соединения при проверке

Базовый URL недоступен из контейнеров Charo. Частые причины:

  • указан localhost — из контейнера это сам контейнер, а не хост-машина; используйте имя сервиса в сети Docker, host.docker.internal или IP-адрес хоста;
  • API доступен только из определённых сетей — проверьте с сервера командой curl.

Модель не найдена

Имя модели не совпадает с тем, что отдаёт сервер, — чаще всего из-за лишнего префикса. Сверьтесь со списком по адресу GET {базовый URL}/models.

Отказ 401 или 403 при рабочих запросах, хотя проверка прошла

У ключа не хватает прав на выбранную модель, либо шлюз требует дополнительный заголовок. Charo отправляет только заголовок авторизации с указанным ключом — остальные заголовки нужно проставлять на стороне шлюза.

Ответы обрываются на середине

Уменьшите максимальную длину ответа в настройках модели или увеличьте лимиты на стороне провайдера или шлюза (таймауты обратного прокси — частая причина у самостоятельно развёрнутых vLLM).