Представим небольшую учебную задачу: участнику книжного клуба нужно сократить несекретное объявление о встрече до двух предложений, сохранив время, место и условия участия. Общий чат в Open WebUI уже работает, но для этой пробы человеку предоставили отдельный подготовленный доступ к модели, который не нужно добавлять в общие административные настройки сервера.
Для такой пробы подойдёт личное прямое подключение (Direct Connections в документации Open WebUI). Разберём, чем запрос из браузера отличается от серверного вызова и где сохраняется ключ в проверенной версии v0.12.3. Затем проверим условия доступа, добавим подключение и попробуем сократить объявление.
Кто отправляет запрос и где сохраняются личные настройки
Когда вы используете обычное OpenAI-совместимое подключение, настроенное администратором, браузер передаёт сообщение серверу Open WebUI, а его серверная часть (backend) обращается к внешнему API модели. В режиме Direct Connections основной запрос OpenAI Chat Completions к API модели отправляет сам браузер (реализация браузерного вызова в v0.12.3).
Это по-прежнему обычный текстовый диалог, а не новая разновидность модели или агент. В документации возможность помечена как экспериментальная. Прямой вызов зависит от работающего браузерного сеанса: пока модель формирует ответ, оставьте вкладку открытой. Сервер Open WebUI тоже участвует в передаче полученных частей ответа (передача ответа в v0.12.3).
Браузерный маршрут запроса не определяет, где хранится ключ. В проверенной стабильной версии Open WebUI v0.12.3 личное соединение вместе с ключом сохраняется и на сервере (сохранение личного соединения и приём настроек сервером). Документация обещает хранение ключа только в браузере, но код этого релиза сохраняет его на сервере вместе с пользовательскими настройками. Это результат чтения исходников на 2026-10-17, а не проверки работающей установки.
Поэтому «личное» (personal) означает настройку вашей учётной записи. Это не гарантия хранения ключа только в одном браузере или на одном компьютере. Прямой вызов также не отменяет историю чатов и серверные служебные этапы Open WebUI и не меняет правила тарификации API.
Что должно быть готово до ввода адреса и ключа
Вводите ключ только в доверенный экземпляр Open WebUI. Прежде чем открывать настройки, проверим, что для упражнения всё готово:
- Разрешение на стороне Open WebUI. Администратор уже включил возможность прямых подключений в
Settings→Admin→Connections(переключательDirect Connectionsв панели администратора). Это настройка моделей; отдельные права на прямые серверы инструментов (Tools) для нашего текстового примера не нужны. - Готовый HTTPS API, совместимый с OpenAI Chat Completions. Адрес должен быть доступен с вашего устройства и принимать запросы каталога и генерации.
- Точный базовый адрес (
Base URL) и фактический идентификатор модели (Model ID). Берите адрес в том виде, в каком его выдал оператор API. Суффикс/v1встречается часто, но дописывать его наугад не нужно. - Разрешение CORS для источника (
origin) вашего Open WebUI. Если страница веб-интерфейса и API модели находятся на разных адресах, браузер применяет правила межисточниковых запросов CORS. Владелец API модели должен заранее разрешитьoriginвашей страницы Open WebUI, то есть точное сочетание схемы, хоста и порта (например,https://chat.example.org). Настройки самого Open WebUI не могут выдать такое разрешение за чужой API-сервер. - Ограниченный временный ключ (
API Key) и понятный лимит расходов. Для упражнения нужен отдельно выданный короткоживущий ключ с доступом к нужной модели и согласованным бюджетом у оператора API. Учитывайте и фоновые модели и дополнительные расходы: генерация заголовков и тегов после ответа остаётся задачей сервера и может вызывать дополнительные обращения к модели.
В личном прямом подключении адрес localhost или 127.0.0.1 всегда указывает на то устройство, где открыт ваш браузер, а не на сервер или Docker-контейнер Open WebUI. Внутреннее имя контейнера или адрес закрытой серверной сети могут работать в административном подключении, но быть недоступны с вашего ноутбука. Если Open WebUI открыт по https://, браузер может заблокировать обращение к незащищённому http:// адресу как смешанное содержимое (mixed content). Для loopback-адресов вроде 127.0.0.1 существуют исключения, а к локальной сети могут применяться отдельные ограничения, зависящие от браузера и версии.
Если подготовленного HTTPS-адреса с настроенным CORS или временного ключа сейчас нет, не ослабляйте защиту браузера и не пытайтесь настраивать прокси на ходу. Пока сократите объявление через уже знакомое административное подключение.
Добавим личное подключение и проверим каталог моделей
Если всё готово, добавим источник в личных настройках. В версии v0.12.3 поля Connection Type и API Type здесь скрыты (поля личного соединения в v0.12.3), поэтому выбирать тип соединения или протокола вручную не придётся.
- Откройте личные настройки пользователя
Settings→Connections(это пользовательское меню настроек, а не панельAdmin). - Нажмите кнопку добавления соединения (
Add Connection) и проверьте, что переключатель активности нового подключения включён. - В поле
URLвставьте точный базовый адрес подготовленного API, полученный от оператора. - В блоке авторизации оставьте выбранный по умолчанию вариант
Bearerи вставьте временный ключ только в предназначенное для него полеAPI Key. Не сохраняйте ключ в заметках чата и не передавайте его в тексте запросов. - Поле
Model IDsоставьте пустым. Так браузер запросит каталог у указанного API. Ручной идентификатор создал бы запись без обращения к каталогу и сам по себе не подтвердил бы связь с сервером модели. - Нажмите кнопку проверки соединения (
Verify Connection). Браузер отправит запросGET <Base URL>/modelsс ключом в заголовкеAuthorization: Bearer …(проверка соединения и запрос/modelsв v0.12.3). Дождитесь подтверждения, что проверка прошла без ошибки. - Нажмите
Saveв окне соединения, а затем сохраните изменения в разделе настроек. - Сразу после сохранения заново откройте
Settings→Connectionsи убедитесь, что добавленная строка осталась в списке и включена.
Save сохраняет настройки учётной записи. Verify Connection проверяет обращение браузера к /models; затем ещё нужно найти ожидаемый ID. Проверка из административного меню её не заменяет: там к API обращался сервер Open WebUI.
Проверим полный ответ на объявлении книжного клуба
После сохранения соединения проверим нужную запись в каталоге, а затем саму генерацию. Успешный ответ от /models ещё не гарантирует, что ключ имеет право запускать модель и что запрос POST <Base URL>/chat/completions проходит без ошибок.
Откройте новый чат:
-
В списке моделей найдите и выберите фактический идентификатор (
Model ID), который дал оператор API. Если в общем списке уже есть модели с похожими названиями от других источников, вспомните, как различать записи моделей с помощью префиксов (Prefix ID), и ориентируйтесь на точный идентификатор, а не на произвольное отображаемое имя. -
Отправьте в чат учебный запрос с вымышленным объявлением:
Сократи до двух предложений, сохранив все условия: «Учебный книжный клуб собирается в субботу в 15:00 в читальном зале. Обсуждаем выбранную книгу. Можно прийти без выступления и просто послушать».
-
Не закрывайте и не перезагружайте вкладку браузера, пока ответ не завершится полностью.
Инструменты разработчика и экспорт сетевых журналов с заголовками авторизации для упражнения не нужны. Проверим результат по отдельным наблюдениям:
- Настройка сохранена: запись подключения остаётся на месте при повторном открытии
Settings→Connections. - Нужная запись найдена: при пустом поле
Model IDsв списке выбора моделей есть ожидаемый фактический ID подготовленного источника. Любая другая запись эту проверку не заменяет. - Генерация завершена и проверена по смыслу: в окне чата без ошибок отобразился законченный ответ из двух предложений, в котором сохранены все четыре условия исходного текста (суббота в 15:00, читальный зал, обсуждение выбранной книги и возможность прийти просто послушать без выступления).
Если все три пункта сошлись, настройка сохранена, ожидаемый ID доступен и получен полный ответ через выбранную запись. Сам по себе складный текст не доказывает, от какого источника пришёл ответ, и ничего не говорит об отсутствии серверных записей или стоимости вызова.
Что проверить, если подключение не сработало
Если подключение не сработало, начните с этапа, на котором возникла ошибка. Ослаблять настройки безопасности браузера, устанавливать расширения для обхода CORS или менять переменную CORS_ALLOW_ORIGIN на сервере Open WebUI не нужно: эти действия либо небезопасны, либо не влияют на заголовки чужого API.
| Наблюдение в интерфейсе | Возможные причины и что проверить |
|---|---|
В личных настройках Settings нет вкладки Connections | Возможно, прямые подключения не разрешены или отличается конфигурация доступа. Уточните у администратора состояние переключателя в Settings → Admin → Connections и версию Open WebUI. |
Ошибка при Verify Connection или каталог моделей не загружается (при пустом Model IDs) | Возможна ошибка GET <Base URL>/models, но API мог также вернуть пустой каталог или список без ожидаемого ID. Проверьте точное написание Base URL (включая наличие или отсутствие /v1), срок действия ключа и то, не указывает ли адрес на localhost или внутреннюю сеть сервера, недоступную с вашего компьютера. Общее сообщение Network Problem не указывает однозначно на CORS: возможны недоступность адреса или проблема с сертификатом. |
| Признаки блокировки межсайтового запроса (CORS) или смешанного содержимого | Возможная причина — целевой API не разрешил точный origin (схему, хост и порт) вашего Open WebUI в заголовках ответа. Другой вариант — ограничения браузера при обращении со страницы https:// к http:// или локальному ресурсу (правила Mixed Content и ограничения доступа к локальной сети). Передайте оператору API точный origin страницы Open WebUI и этап, на котором возник сбой (GET /models или POST /chat/completions). |
| Модель видна в списке и выбирается, но при отправке объявления возникает ошибка | Если Model IDs заполняли вручную, список моделей вообще не запрашивался у сервера. Если каталог загрузился автоматически, это не гарантирует успех следующего запроса POST /chat/completions. Сверьте с оператором API фактический Model ID, права временного ключа именно на генерацию и лимиты счёта. |
Другое устройство и завершение учебной пробы
При входе в ту же учётную запись с другого устройства или браузера личные настройки v0.12.3 могут загрузиться с сервера (загрузка личных настроек). Но запрос к модели выполнит уже этот браузер из доступной ему сети. Наличие сохранённой записи не гарантирует, что адрес заработает на другом устройстве; исчезновение записи после смены браузера тоже не гарантировано.
После пробы с объявлением книжного клуба закройте временный доступ. Если подключение больше не нужно, откройте Settings → Connections, удалите созданную запись и сохраните настройки (удаление личного соединения в v0.12.3). Это действие убирает адрес и ключ из текущих сохранённых настроек пользователя, но не удаляет историю диалогов, серверные журналы или резервные копии и не аннулирует сам ключ у поставщика API. Отдельно подтвердите у оператора API отзыв или истечение учебного ключа.
В пробе с объявлением мы разделили маршрут запроса, место хранения ключа в v0.12.3 и проверки сохранения, каталога /models и ответа /chat/completions. По этим различиям можно выбрать личное браузерное или обычное серверное подключение для своей задачи.

