Архитектура OWUI
OWUI - Open WebUI - это веб-интерфейс для работы с моделями искусственного интеллекта.Документация по OWUI API находится здесь: https://docs.openwebui.com/reference/api-endpoints/
Введение
Open WebUI (OWUI) — это self‑hosted веб‑интерфейс для работы с большими языковыми моделями (LLM), спроектированный как гибкая, расширяемая и безопасная платформа. Его архитектура позволяет использовать разные модели (локальные и облачные), встраивать RAG‑конвейеры, подключать внешние инструменты и выстраивать сложные пайплайны обработки запросов без необходимости писать код. Ниже подробно разобрана архитектура системы, логика взаимодействия компонентов и принципы масштабирования.
Стек и уровни архитектуры
Архитектура OWUI строится по трёхуровневой схеме:
- Frontend (SvelteKit): отвечает за пользовательский интерфейс, чат, панель администратора, управление контекстом и файлами, а также за двустороннюю связь с бэкендом через WebSocket.
- Backend (Python + FastAPI): управляет маршрутизацией запросов, авторизацией, интеграциями с провайдерами моделей, RAG‑логикой, плагинами и оркестрацией пайплайнов.
- Хранилище и внешние сервисы: включают основную базу данных (SQLite по умолчанию, PostgreSQL в продакшене), векторные базы данных (ChromaDB, Qdrant, Milvus и др.), файловое хранилище и Redis (для сессий и координации WebSocket в кластере).
Такая модульная структура позволяет разворачивать систему как на одном сервере, так и в высокодоступной конфигурации с горизонтальным масштабированием.
Обработка пользовательского запроса: сквозной поток
Путь запроса в OWUI выглядит следующим образом:
- Вход
через фронтенд: пользователь отправляет сообщение в чате; фронтенд
передаёт его через WebSocket или REST‑запрос.
- Аутентификация
и валидация: бэкенд проверяет права пользователя, принадлежность к
рабочей области, лимиты и политики доступа.
- Препроцессинг
и плагины: применяются фильтры (Filters), Skills (наборы инструкций),
а также логика Pipes (пайплайнов) для маршрутизации запроса.
- Маршрутизация
к модели: система выбирает целевую LLM на основе настроек чата,
предпочтений пользователя, правил администратора и доступных ресурсов.
- RAG
(при необходимости): если включён RAG, запрос проходит через Embedding‑модель,
выполняется поиск по векторной базе, затем Rerank‑модель улучшает выдачу,
и только после этого формируется промпт для LLM.
- Инференс
модели: запрос отправляется провайдеру (Ollama, OpenAI‑совместимый
API, vLLM и т. п.).
- Постобработка:
применяются дополнительные фильтры, инструменты (Tools), форматирование
ответа.
- Возврат
результата: ответ стримится через WebSocket и отображается во
фронтенде.
На каждом этапе возможна кастомизация через систему плагинов, что делает архитектуру универсальной для разных сценариев.
Система расширений: Skills, Tools, Pipes, Filters
OWUI предоставляет набор механизмов расширения, которые
можно комбинировать:
- Skills — переиспользуемые
наборы инструкций в формате Markdown. Они не выполняют код, но задают
правила поведения модели (стиль ответов, чеклисты, алгоритмы диагностики и
т. д.).
- Tools — исполняемые
функции (Python‑скрипты, HTTP‑запросы), которые модель может вызывать для
получения внешних данных или выполнения действий.
- Pipes — пайплайны
маршрутизации и обработки запросов. Позволяют направлять запросы к разным
моделям или цепочкам действий в зависимости от условий.
- Filters — компоненты
для пре‑ и постобработки сообщений: цензура, маскирование PII,
форматирование, валидация и т. п.
Эти компоненты управляются через интерфейс администратора и
могут быть привязаны к пользователям, чатам или моделям, что даёт тонкую
настройку поведения системы.
| Компонент | Где найти в интерфейсе | Как вызывать пользователю | Добавление | Описание |
| Pipes | Admin Panel → Functions → Pipes | Пользователь взаимодействует через интерфейс, вводит запрос. Пользователь не делает ничего специального. | 1. Перейти в Admin Panel → Functions. 2. Нажать Create, задать название и короткое описание. 3. При необходимости указать параметры. 4. Сохранить. Теперь выбранный Pipe появляется в списке моделей и может быть выбран в чате. | Первое что бросается в глаза, так это предупреждение: "Pipelines are legacy, do not use for new deployments". Рекомендуют использовать Functions. Приём запроса: Обработка запроса: Возврат ответа: Пошагово: Pipe перехватывает запрос, извлекает сообщение. - Проверяет настройки пользователя. - Отправляет запрос в n8n. - Pipe парсит ответ из n8n, возвращает пользователю. Структура класса Pipe в Python: # 1. Проверка типа запроса |
| Tools | Workspace → Tools | Пользователь пишет запрос. Модель сама решает, нужен ли Tool. Пользователь не делает ничего специального. | 1. Перейти в Workspace → Tools. | Что такое Tool Call, как модель решает вызвать Tool, структура описания функции Инструменты — это различные способы расширить возможности больших языковых моделей, выйдя за рамки простого генерирования текста. При их использовании можно: искать информацию в интернете, собирать данные, генерировать изображения, воспроизводить речь с помощью искусственного интеллекта и многое другое. Инструменты выполняют произвольный код Python на сервере. Tool Call — это механизм, позволяющий LLM использовать различные инструменты для выполнения задач, вызывать внешние или внутренние функции/инструменты во время генерации ответа. Существует два режима вызова инструментов (Tool Calling Modes): Native (Agentic) Mode (режим агента) — режим по умолчанию с версии v0.10.0, использует встроенные возможности модели для работы с инструментами. Позволяет модели самостоятельно решать, какие инструменты использовать в каждом конкретном случае. Модель принимает решение использовать ли инструмент и какой на основе двух вещей: явной инструкции в системном промпте и своего обучения.
Итого: модель решает вызвать Tool, когда понимает, что её собственных знаний недостаточно и в системном промпте есть инструмент, подходящий для этого запроса. Структура описания Tool: Описания структурированы в виде таблиц, где для каждого инструмента перечислены его параметры и формат вывода. Также в описаниях могут быть указаны условия использования инструмента, например:
|
| Skills | Workspace → Skills | Skills не нужно вызывать вручную. Они работают в фоне и активируются автоматически. | 1. Перейти в Workspace → Skills → Нажать Create. | Навыки — это многократно используемые наборы инструкций на основе Markdown, которые вы прикрепляете к моделям или вызываете в чате. В отличие от инструментов (исполняемых скриптов Python), навыки представляют собой текстовые инструкции: рекомендации по проверке кода, правила написания, руководства по устранению неполадок, рабочие процессы анализа данных. Модель считывает их и следует им. Skills и Tools отличаются по своему назначению и форме. Skills:
Tools:
Tool нужен, когда модели требуется получить данные из внешнего источника. Например: запросить информацию из Confluence, выполнить поиск в интернете, обратиться к базе данных. Модель вызывает Tool явно, получает результат и включает его в ответ. Skill нужен, когда требуется изменить сам процесс работы модели. Например: сделать текст более формальным, перевести на другой язык, исправить стиль изложения. Skill срабатывает неявно — он влияет на то, как модель обрабатывает запрос, но сам по себе данных не возвращает. Когда применять: Tool: задача требует информации, которой у модели нет, требующих выполнения конкретных операций: вычислений, работы с API, запуска команд и т. д. Нужен поиск, запрос к API, получение актуальных данных. Skill: задача требует определённой обработки текста или изменения тона, формата, стиля ответа, нужно обучить модель определённому подходу к решению задач, задать правила работы или предоставить алгоритмы действий в текстовой форме. Например, для внедрения стандартов проверки кода, формирования текстов в определённом стиле или следования диагностическим шагам при устранении неполадок. Итого: Tool — для получения данных извне, Skill — для изменения поведения модели. |
| Промпты | Workspace → Промпты | Пользователь вводит "/" и название промпта в чате. | 1. Перейти в Workspace → Promts → Нажать Create. 2. Написать промт 3. Сохранить. | Чем Промпты отличаются от Skills Промпты (подсказки) — это многоразовые слэш-команды, которые превращают сложные инструкции в команды, выполняемые в один клик. Они позволяют сохранять часто используемые инструкции в виде слэш-команд. Например, можно ввести /summarize в любом чате, и полная подсказка сработает мгновенно. Промпты — это сохранённые слэш-команды. Например, /summarize или /translate. Пользователь вводит их вручную, и в чат подставляется заранее заготовленная инструкция. Skills — это активные обработчики, которые автоматически срабатывают без ручного вызова. Они перехватывают или модифицируют работу модели без участия пользователя. Основное отличие: промпт требует ручного вызова пользователем через слэш-команду. Skill срабатывает автоматически, без явного указания. |
| Valves | Внутри любого Pipe / Tool (класс Valves) | Никак — Valves не вызываются. Они настраиваются. Valves — это не команды, а настройки Pipe. Пользователь один раз заполняет поля и забывает. | 1. Открыть уже созданный Pipe или Tool. | Valves и UserValves используются, чтобы пользователи могли предоставлять динамические данные, например, ключ API или опцию конфигурации. Они создают заполняемое поле или переключатель в меню GUI для заданной функции. Valves позволяют пользователю настраивать параметры без редактирования кода следующим образом: 1. Создают в меню GUI удобные элементы для ввода данных: 2. Позволяют выбирать разные типы ввода в зависимости от задачи: 3. Дают возможность настраивать параметры через интерфейс без изменения кода: |
OWUI - Open WebUI - это веб-интерфейс для работы с моделями искусственного интеллекта.
Routing в Open WebUI
Routing — это механизм определения того, как и куда направлять запросы пользователей в системе. В контексте Open WebUI это:
- Механизм распределения запросов между различными моделями ИИ
- Система правил для определения оптимального маршрута обработки запроса
- Процесс выбора подходящей модели для обработки конкретного запроса
Как работает routing в Open WebUI
- Базовые принципы маршрутизации:
- Определение доступных моделей
- Установление приоритетов обработки
- Настройка правил распределения запросов
- Факторы маршрутизации:
- Предпочтения пользователя
- Настройки конкретного чата
- Глобальные параметры системы
- Модель по умолчанию
- Права доступа
- Контекст диалога
Управление routing
- Администраторы могут настраивать:
- Приоритеты моделей
- Правила маршрутизации
- Ограничения доступа
- Параметры обработки запросов
- Пользователи могут:
- Выбирать модели для конкретных чатов
- Настраивать предпочтения
- Управлять параметрами работы
Модельная инфраструктура и абстракция провайдеров
OWUI не привязан к конкретному поставщику моделей. Вместо
этого реализован слой абстракции, который унифицирует работу с разными
бэкендами:
- Ollama:
для локальных моделей на CPU/GPU.
- OpenAI‑compatible
API: для облачных провайдеров и self‑hosted решений (vLLM, TGI,
llama.cpp и др.).
- Специализированные
провайдеры: Anthropic, Google Vertex AI и т. д.
Это позволяет администратору подключать новые источники
моделей и управлять ими централизованно, а
пользователям — переключаться между моделями в рамках одного
интерфейса.
RAG‑архитектура: Embedding, поиск и Rerank
RAG в OWUI реализован как встроенный конвейер:
- Embedding‑модели
преобразуют текст в векторы, которые индексируются в векторной базе
данных. Поддерживаются разные хранилища: ChromaDB (локально), Qdrant,
Milvus, PGVector и другие.
- Поиск
выполняется по векторному сходству (cosine similarity) и может дополняться
лексическим поиском (BM25) для гибридного подхода.
- Rerank‑модели
улучшают выдачу: они берут топ‑N найденных фрагментов и пересортировывают
их по релевантности, что заметно повышает качество контекста для LLM.
Такой подход позволяет системе эффективно работать с корпоративными базами знаний, документами и FAQ, не перегружая контекстное окно модели.
Основные типы моделей в Open WebUI
LLM (Large Language Model) — основная модель для обработки текстовых запросов:
- Отвечает за генерацию текста
- Выполняет основную обработку запросов
- Поддерживает различные типы задач (чат, генерация, анализ)
Embedding Model — модель для создания векторных представлений текста:
- Преобразует текст в числовые векторы
- Используется для:
- Поиска по базе знаний
- Сравнения текстов
- Классификации
- Работает с семантическим сходством
Rerank Model — модель для переранжирования результатов:
- Пересортировывает полученные результаты
- Улучшает качество выдачи
- Применяет дополнительные критерии оценки
Как они работают вместе
- Процесс обработки запроса:
- LLM получает запрос от пользователя
- Embedding Model создает вектор запроса
- Система ищет релевантные данные
- Rerank Model сортирует результаты
- LLM формирует финальный ответ
- Взаимодействие моделей:
- Могут работать как единый конвейер
- Поддерживают параллельную обработку
- Интегрируются через API системы
Особенности настройки
LLM:
- Настраивается через параметры модели
- Требует настройки контекста
- Имеет различные режимы работы
Embedding:
- Определяет способ векторизации
- Влияет на качество поиска
- Может использовать разные алгоритмы
Rerank:
- Настраивается под конкретные задачи
- Определяет критерии ранжирования
- Может использовать дополнительные данные
Важные моменты
- Модели могут работать независимо или в связке
- Настройка происходит через административную панель
- Можно выбирать разные комбинации моделей для разных задач
- Система автоматически управляет распределением нагрузки между моделями
Безопасность и управление доступом
Безопасность в OWUI реализована на нескольких уровнях:
- Аутентификация:
поддержка OAuth/OIDC, API‑ключей, SSO, LDAP/Active Directory.
- Ролевая
модель (RBAC): разграничение прав на уровне пользователей, групп и
рабочих областей.
- Контроль
доступа к моделям и знаниям: администратор может ограничивать
видимость моделей, источников знаний и инструментов для отдельных
пользователей.
- Шифрование
и приватность: данные хранятся локально, а при использовании внешних
сервисов администратор контролирует, куда и какие данные отправляются.
Для корпоративных сценариев предусмотрены дополнительные
механизмы: интеграция с SCIM для автоматического управления пользователями,
журналирование действий и экспорт логов для аудита.
Масштабируемость и отказоустойчивость
Архитектура OWUI спроектирована с учётом масштабирования:
- Stateless‑бэкенд:
экземпляры могут запускаться в нескольких копиях за балансировщиком
нагрузки.
- Централизованное
хранилище сессий: Redis используется для координации WebSocket‑сессий
и синхронизации конфигурации между узлами.
- Внешние
базы данных: для продакшена рекомендуется использовать PostgreSQL
вместо SQLite.
- Векторные
базы в клиент‑серверном режиме: локальный режим ChromaDB не подходит
для кластера, поэтому в масштабируемых сценариях используют Qdrant, Milvus
или PGVector.
- Мониторинг
и наблюдаемость: поддержка OpenTelemetry для сбора метрик, трейсов и
логов.
Такая конфигурация позволяет разворачивать OWUI в
Kubernetes, Docker Swarm или на виртуальных машинах, обеспечивая высокую
доступность и предсказуемую производительность.
Сценарии использования и гибкость архитектуры
Благодаря модульной структуре OWUI подходит для разных
задач:
- Персональный
AI‑ассистент: локальная установка с Ollama и простой RAG для личных
заметок.
- Командная
платформа: многопользовательский режим с разграничением доступа,
общими источниками знаний и инструментами.
- Корпоративный
шлюз к LLM: централизованное управление моделями, политиками
безопасности и интеграциями.
- Платформа
для экспериментов: быстрый запуск пайплайнов, тестирование разных
моделей и стратегий RAG.
В каждом сценарии архитектура остаётся неизменной, меняется
лишь конфигурация компонентов и уровень требований к инфраструктуре.
Заключение
Архитектура Open WebUI объединяет в себе удобство веб‑интерфейса,
гибкость расширений и надёжность enterprise‑решений. Система спроектирована
так, чтобы администратор мог управлять всеми аспектами работы с
LLM — от маршрутизации запросов до интеграции с внешними сервисами и
настройки RAG, — через понятный интерфейс, без необходимости программировать.
При этом сохраняется возможность глубокой кастомизации через плагины и API.
Такой подход делает OWUI универсальным решением как для индивидуальных
пользователей, так и для крупных организаций, которым важны контроль,
безопасность и масштабируемость.