Подключение сторонних и самостоятельно размещённых провайдеров
Libre WebUI 0.16.0 добавляет Подключения провайдеров в Настройки > Плагины. Здесь активируют встроенного провайдера, направляют совместимый плагин к API, смотрят итоговый каталог или подключают собственный шлюз в доверенной сети.

Поддерживаются форматы:
- OpenAI Chat Completions;
- OpenAI Responses;
- Anthropic Messages; и
- содержимое и вызовы функций Google Gemini.
Встроенные определения Anthropic и Gemini используют специальные адаптеры, выбираемые по идентичности провайдера. Новое импортированное определение использует семантику Chat Completions или Responses; указание совместимого с Anthropic или Gemini API не выбирает встроенный адаптер. Иная форма запроса, потока, вызова инструмента или ответа требует серверного адаптера. JSON описывает маршрутизацию и конфигурацию, но не преобразует чужой протокол.
Открытие подключений
- Войдите, откройте Настройки > Плагины.
- Найдите слева.
- Выберите для состояния и каталога.
- Активируйте для аккаунта.
- Выберите Настроить только для учётных данных или переопределения подключения.
Конфигурация закрыта по умолчанию. Настройки подключения отображаются администраторам первыми, а параметры выборки находятся в отдельно свёрнутом разделе Расширенные параметры. Наследуемые значения показаны как подсказки, а не как заранее заполненные переопределения аккаунта.
Определения являются общей конфигурацией инстанции, поэтому импортировать, устанавливать, обновлять и удалять их могут только администраторы. Каждый пользователь управляет собственной активацией, учётными данными и разрешёнными параметрами генерации.
Быстрое добавление
Настройки > Подключения — короткий путь для одной совместимой с OpenAI конечной точки и ключа. Администратор видит состояние и версию Ollama, список подключений и форму добавления.
Нужны отображаемое имя, полный URL дополнений чата и необязательный ключ. Libre выводит ID подключения, устанавливает определение, хранит ключ на сервере, активирует подключение и запрашивает список моделей. Обнаруженные модели заменяют временный каталог и появляются в селекторе.
В строке показаны конечная точка, число моделей, наличие ключа, активность, обновление и удаление. Режимы Responses, переопределения базового URL, каталоги отдельных возможностей и политика параметров остаются в полном интерфейсе плагинов.
Codex (вход ChatGPT)
Codex (ChatGPT) не требует ключа API. После codex login от имени системного пользователя сервера он появляется у администраторов и предлагает документированное семейство моделей через сессию ChatGPT. Токены читаются из auth.json, обновляются тем же клиентом OAuth и записываются обратно; значения не журналируются.
Запросы делает серверная часть, а не контейнер задачи, поэтому модели работают и в Work. Провайдер доступен только администраторам, поскольку расходует подписку ChatGPT владельца сервера. Скрыть его можно через CODEX_OAUTH_MODELS_ENABLED=false, а указать другую авторизацию — через CODEX_HOME.
Встроенный или импортированный провайдер
Есть OpenAI, Anthropic, Gemini, Groq, Mistral, OpenRouter, Kimi Code, Hugging Face, GitHub Models, локальный MLX LM и другие. Начинайте со встроенного при совпадении протокола/аутентификации.
Администратор импортирует JSON. Минимальный шлюз:
{
"id": "private-ai-gateway",
"name": "Private AI Gateway",
"type": "completion",
"endpoint": "http://ai-gateway:8080/v1/chat/completions",
"api_mode": "chat_completions",
"auth": {
"header": "Authorization",
"prefix": "Bearer ",
"key_env": "PRIVATE_AI_GATEWAY_API_KEY"
},
"model_map": ["gateway-chat"]
}
Импортируйте, активируйте и сохраните ключ. Добавьте переменные для редактируемого базового URL, пути, обнаружения и конечных точек отдельных возможностей. Полный пример — plugins/openai.json.
Для намеренно не требующего аутентификации шлюза в доверенной сети задайте auth.header и auth.key_env пустыми и уберите auth.prefix; ключ не потребуется и не будет отправляться.
Chat Completions или Responses
| Режим | Путь | Поле |
|---|---|---|
chat_completions | /chat/completions | messages |
responses | /responses | input |
Встроенный OpenAI предлагает Режим API. Libre преобразует завершённый и потоковый вывод Responses для Chat и Work, включая ограниченное состояние воспроизведения рассуждений и вызовов инструментов.
Режим меняет путь по умолчанию, но не протокол вышестоящего сервера. Выбирайте Responses только при совместимой форме запросов и событий.
Базовый URL или полная конечная точка
Порядок:
- Нестандартный полный
endpoint. base_url+api_path.- Конечная точка из определения плагина.
Базовый URL:
https://gateway.example/v1
Chat Completions:
https://gateway.example/v1/chat/completions
Responses:
https://gateway.example/v1/responses
Путь API для относительной операции. Устаревшая полная конечная точка для полного URL; полный приоритетнее.
Суффиксы /chat/completions, /completions, /responses определяют семантику. Неизвестный путь сохраняет выбранный режим.
После изменения маршрута или ключа сохраните провайдера перед тестированием. Пользовательский маршрут с аутентификацией требует учётных данных того же аккаунта. Вариант без аутентификации оставляет поля пустыми. Ключ окружения оператора не отправляется в пользовательскую точку; резервное значение применяется только к доверенному встроенному маршруту.
Обнаружение ID моделей
Выберите активного и Обновить модели. Libre перезагружает каталог и Chat.
Автоматически при отсутствии или старше PLUGIN_MODEL_DISCOVERY_TTL_MS. Ручное сообщает:
| Результат | Значение |
|---|---|
| Каталог обновлён | Ответил другим списком |
| Уже актуален | Тот же список |
| Нужен ключ API | Запрос не отправлен, прежний каталог остаётся виден |
| Не удалось загрузить | Недоступен или нет данных |
Ключ только из окружения не используется для установленного определения вместо встроенного; сообщение поясняет это. Модели речи, изображений и эмбеддингов видны с метками возможностей, но не в селекторе чата.
URL списка моделей:
- URL с окончанием
/modelsиспользуется без изменений; - известный суффикс
/chat/completions,/completions,/responses,/embeddingsили/messagesзаменяется на/models; либо - в остальных случаях к пути добавляется
/models.
Пример:
https://gateway.example/v1/chat/completions
https://gateway.example/v1/responses
-> https://gateway.example/v1/models
При неверном выводе выставьте models_endpoint в variables:
{
"name": "models_endpoint",
"type": "string",
"label": "Models Endpoint",
"default": "https://gateway.example/v1/models"
}
Наследуемое или сохранённое администратором значение имеет приоритет. Свойство models_endpoint верхнего уровня не читается. Ожидается совместимый с OpenAI ответ с массивом data:
{
"data": [{ "id": "gateway-chat" }, { "id": "gateway-code" }]
}
Идентификаторы сохраняются для пользователя и не переписывают файл. Без совместимого обнаружения поддерживайте model_map. Каталог доступен только для чтения; метки не являются проверкой работоспособности.
Идентификаторы не уникальны глобально. Chat хранит исходный ID вместе с точной идентичностью провайдера. Недоступный провайдер отображается как недоступный, без перенаправления.
Отдельная генерация изображений
Конечная точка изображений OpenAI — https://api.openai.com/v1/images/generations; новые конфигурации по умолчанию используют gpt-image-2, а старые ID остаются резервными.
Маршруты чата и изображений изолированы. Пользовательский базовый URL чата не получает запросы изображений. Пустой image_endpoint использует определение плагина, полный URL задаёт совместимую операцию Image API.
Выбор связан с конкретным провайдером; одинаковый ID направляется только выбранному.
Безопасный HTTP-шлюз
Допустимы HTTP и HTTPS. HTTP подходит для доверенной LAN, Tailscale или сети контейнеров, но передаёт ключи, промпты, результаты инструментов и содержимое без транспортного шифрования. Предпочитайте HTTPS с TLS.
Запросы исходят от серверной части, поэтому выбирайте достижимый из неё адрес:
| Место | Пример |
|---|---|
| Нативно, тот же хост | http://127.0.0.1:8081/v1 |
| Служба Compose | http://ai-gateway:8080/v1 |
| Контейнер → хост | http://host.docker.internal:8081/v1 |
| Доверенная LAN/Tailscale | http://192.168.1.20:8081/v1 |
localhost внутри — контейнер, не сервис/хост.
Принимаются только HTTP и HTTPS; конечный адрес проверяется до выбора учётных данных, а перенаправления не выполняются. Настройте окончательный URL напрямую.
Проверка шлюза
С хоста или контейнера серверной части:
curl http://ai-gateway:8080/v1/models \
-H 'Authorization: Bearer YOUR_GATEWAY_KEY'
Chat Completions:
curl http://ai-gateway:8080/v1/chat/completions \
-H 'Authorization: Bearer YOUR_GATEWAY_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gateway-chat",
"messages": [{"role": "user", "content": "Reply with: ready"}],
"stream": false
}'
Responses:
curl http://ai-gateway:8080/v1/responses \
-H 'Authorization: Bearer YOUR_GATEWAY_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gateway-chat",
"input": "Reply with: ready",
"store": false
}'
После успешных проверок задайте тот же маршрут, режим, учётные данные и ID модели, активируйте провайдера, обновите модели и выберите его. Work сможет использовать модель при надёжной поддержке инструментов.
Устранение неполадок
| Симптом | Проверка |
|---|---|
| Запросы идут во встроенную точку | Удалите старое полное переопределение и сохраните нужные базовый URL и путь API. |
| Неверные данные запроса | Сопоставьте режим API с протоколом и проверьте конечный суффикс. |
| Нет ID моделей | Проверьте /models, форму data[].id, models_endpoint или model_map. |
| После смены маршрута осталась старая модель | Сохраните изменение; устаревший обнаруженный каталог будет очищен. |
| Не найден ключ | Сохраните учётные данные пользователя; встроенный резерв окружения не следует переопределениям. |
| Docker не достигает localhost | Используйте имя службы, псевдоним хоста или частный достижимый адрес. |
| Chat работает, изображения нет | Настройте полный image_endpoint и модель этой возможности. |
| Chat работает, Work нет | Подтвердите совместимую поддержку вызовов инструментов. |
| Провайдер перенаправляет | Настройте окончательный проверенный URL; перенаправления не выполняются. |
Подробнее Плагины, ошибки Устранение неполадок.
Благодарность сообществу
Руководство и интерфейс версии 0.16.0 сформированы благодаря ZhengJin (@fangzhengjin): подробные отзывы о сторонних провайдерах и созданная с помощью ИИ концепция интерфейса в #163 помогли определить процесс.