Разделы документации
Свои 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).