Перейти к основному содержимому

Подключение сторонних и самостоятельно размещённых провайдеров

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

Подключения провайдеров Libre WebUI с поиском, выбором, настройкой, обновлением моделей и каталогом возможностей.

Поддерживаются форматы:

  • OpenAI Chat Completions;
  • OpenAI Responses;
  • Anthropic Messages; и
  • содержимое и вызовы функций Google Gemini.

Встроенные определения Anthropic и Gemini используют специальные адаптеры, выбираемые по идентичности провайдера. Новое импортированное определение использует семантику Chat Completions или Responses; указание совместимого с Anthropic или Gemini API не выбирает встроенный адаптер. Иная форма запроса, потока, вызова инструмента или ответа требует серверного адаптера. JSON описывает маршрутизацию и конфигурацию, но не преобразует чужой протокол.

Открытие подключений

  1. Войдите, откройте Настройки > Плагины.
  2. Найдите слева.
  3. Выберите для состояния и каталога.
  4. Активируйте для аккаунта.
  5. Выберите Настроить только для учётных данных или переопределения подключения.

Конфигурация закрыта по умолчанию. Настройки подключения отображаются администраторам первыми, а параметры выборки находятся в отдельно свёрнутом разделе Расширенные параметры. Наследуемые значения показаны как подсказки, а не как заранее заполненные переопределения аккаунта.

Определения являются общей конфигурацией инстанции, поэтому импортировать, устанавливать, обновлять и удалять их могут только администраторы. Каждый пользователь управляет собственной активацией, учётными данными и разрешёнными параметрами генерации.

Быстрое добавление

Настройки > Подключения — короткий путь для одной совместимой с 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/completionsmessages
responses/responsesinput

Встроенный OpenAI предлагает Режим API. Libre преобразует завершённый и потоковый вывод Responses для Chat и Work, включая ограниченное состояние воспроизведения рассуждений и вызовов инструментов.

Режим меняет путь по умолчанию, но не протокол вышестоящего сервера. Выбирайте Responses только при совместимой форме запросов и событий.

Базовый URL или полная конечная точка

Порядок:

  1. Нестандартный полный endpoint.
  2. base_url + api_path.
  3. Конечная точка из определения плагина.

Базовый 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
Служба Composehttp://ai-gateway:8080/v1
Контейнер → хостhttp://host.docker.internal:8081/v1
Доверенная LAN/Tailscalehttp://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 помогли определить процесс.

Связанная документация