Выбор UI-инструмента для быстрого прототипирования в AI-продуктах: Open WebUI vs Assistant-UI
При разработке AI-продукта мы столкнулись с неожиданной задачей. Выбрать LLM оказалось проще, чем выбрать интерфейс для работы с ней. Готовые AI-чаты хорошо подходят для диалога с одной моделью, но начинают ограничивать продукт, если в нем появляются несколько агентов, сложные сценарии и промежуточные этапы работы. В этой статье опишем суть задачи, требования и разберем Open WebUI.
Основная цель MVP заключается в демонстрации замысла продукта и проверке его жизнеспособности. На этом этапе важно сконцентрироваться на реализации основных функций, внешний вид порой не так важен. Но в AI-продуктах есть нюанс: даже для MVP интерфейс нередко становится частью логики продукта и будущей архитектуры.
Если раньше AI-решения были, по сути, одним чатом, в рамках которого пользователь общался с одной нейросетью, то современные решения включают цепочку или граф AI-агентов, каждый из которых выполняет свою работу отдельно от остальных, иногда взаимодействуя с пользователем. В этом случае UI становится полноценным командным центром: состояние системы, динамика размышлений и работы, вызов внутренних функций (tool calling), точки взаимодействия с пользователем (human-in-the-loop) и многое другое.
Поэтому выбор UI-инструмента влияет и на скорость прототипирования, и на конечный результат, получится ли у пользователя органично работать в системе. В этой статье мы расскажем, как выбирали инструмент для фронтенда в проекте «Банк идей».
Что такое «Банк идей»?
«Банк идей» - это мультиагентная система, отвечающая за анализ и подготовку идей сотрудников компании. Сотрудник в чат-боте описывает проблему, которую хочет решить, подает на вход свою идею, и затем она проходит множество ИИ-агентов, каждый из которых выполняет отведенную ему роль:
- Критик подсвечивает слабые места.
- Безопасник удаляет конфиденциальную информацию, прежде чем идея перейдет во внешнюю LLM.
- И другие агенты.
Под ИИ-агентом принято понимать систему на базе искусственного интеллекта с набором инструментов для решения задачи пользователя.
Работая над «Банком идей», мы столкнулись с необходимостью быстро реализовать фронтенд для демонстрации работы сервиса.
Техническая реализация
Для реализации «Банка идей» мы использовали LangGraph, который позволяет представить логику агентов в виде графа: инструменты агента = узлы, соединенные ребрами, выстраивающими пайплайн агента, а каждый агент = узел в общем графе-оркестраторе.
«Банк идей» подразумевает плотное взаимодействие с пользователем по ходу изменения идеи. У нас было конкретное видение: нам нужен привычный и интуитивно понятный интерфейс: чат-бот с внедрением кастомных компонентов.
Какие нестандартные компоненты требовались:
- Доски. На моменте анализа идеи доменными агентами-экспертами каждый из них должен был передавать свое мнение на доску, где пользователь мог их все прочитать, сравнить и даже внести свои правки. После прохождения этапа оценки доски оставались висеть в чате для контекста.
- Отображение графа. Полный пайплайн графа-оркестратора отрабатывает от 15 до 20 минут. Чтобы пользователь не думал, что сервис завис, мы хотели отображать процесс прохождения всех этапов работы агентов.
Обычный чат-интерфейс хорошо работает, когда весь результат можно представить одним потоком сообщений. Но если система должна показывать состояние процесса, прерываться для подтверждения действий, выводить tool results в виде интерактивных компонентов и сохранять контекст работы, архитектура UI-слоя тоже важна.
Требования к инструменту
Исходя из специфики задачи, мы сформулировали требования:
- Open-source решение.
- Простота внедрения в уже созданную систему.
- Возможность быстрой и удобной кастомизации.
- Продовый и понятный интерфейс.
- Поддержка многошагового взаимодействия.
- Возможность отображать не только ответы модели, но и промежуточные состояния.
- Пригодность не только для демо, но и для дальнейшего развития.
Для внутренних MVP можно позволить себе временный интерфейс. Но если MVP показывает хорошие результаты, бизнес почти всегда хочет быстро перейти к пилоту с реальными пользователями, а затем и к промышленному внедрению. Слишком жесткий UI-каркас может сэкономить время на старте, но создать дорогой рефакторинг уже через несколько недель.
Что попробовали
Исходя из требований, список сократился до двух вариантов:
- Open WebUI - самодостаточная open-source платформа с готовым веб-интерфейсом для работы с моделями, документами, инструментами и knowledge base.
- Assistant-UI - открытая TypeScript/React-библиотека, которая дает production-ready компоненты и инструменты для построения чата, но предполагает, что продуктовый интерфейс вы собираете внутри собственного приложения.
Это два инструмента для разных сценариев. Мы сравнивали их не напрямую, а по удобству для разработки и пользователя и полученному бизнес-результату.
Open WebUI
Именно Open WebUI мы использовали для первого варианта «Банка идей» с минимальной архитектурой, и поначалу казалось, что это лучший выбор.
пример интерфейса
Плюсы Open WebUI:
- Понятный и привычный интерфейс чат-бота, который не нужно писать с нуля. Присутствуют привычные функции: прикрепление файлов, выдача подсказок для запросов, создание рабочих пространств и так далее.
- Поддерживает любые модели: от локальных до API. Можно обращаться к своим собственным агентам и в любой момент переключать чаты, модели и агентов без потери контекста.
- Интеграция RAG.
- Добавление пользовательских инструментов (Tools) - Python-скриптов в самом веб-интерфейсе, которые выполняются на вашем сервере и действуют по запросу LLM.
- Наличие механизма событий (events), который обеспечивает связь между backend-логикой и пользовательским интерфейсом в реальном времени.
Open WebUI дает богатую функциональность «из коробки». Для команд, которым нужно быстро поднять внутренний AI-чат или демостенд без отдельной фронтенд-разработки, это действительно удобный вариант.
Где Open WebUI начал ограничивать нас
1. Безопасность. Tools и Functions выполняют на вашем сервере произвольный Python-код, поэтому нужно следить, кому передаются права создавать и импортировать инструменты.
2. Невозможность редактировать базовый интерфейс. Большинство функций (левая панель, прикрепление вложений) полезны для обычного чат-бота, но избыточны для «Банка идей». Чтобы их убрать, пришлось бы вносить изменения в код самого Open WebUI, что привязывало бы нас к определенной версии.
3. Детальная кастомизация не предполагается. Мы так и не нашли способа реализовать доски и другие компоненты так, как мы задумали.
4. Ограниченная поддержка многошагового взаимодействия. Несмотря на event-систему, Open WebUI не предоставляет полноценной модели многошагового взаимодействия «из коробки». Поддерживался один эндпоинт, и мы не могли разделить случаи, когда нужно начать пайплайн заново и когда нужно просто его продолжить после прерывания для взаимодействия с пользователем.
Именно здесь стало понятно, что Open WebUI хорош, когда не хочется писать код и нужен готовый привычный AI-чат. Но если проект требует собственного UX со сложным состоянием, human-in-the-loop и доменными компонентами, платформа начинает ощущаться не ускорителем, а рамкой, которую приходится постоянно обходить.
Assistant-UI
Мы отложили в сторону Open WebUI и взялись за фреймворк Assistant-UI.
Assistant-UI - это открытая библиотека на TypeScript/React для создания настраиваемых интерфейсов чат-ботов на основе ИИ.
В отличие от Open WebUI, это набор инструментов для фронтенда, из которых можно собрать интерфейс под свою задачу. Библиотека рассчитана на создание AI-чатов: она умеет показывать ответ по мере генерации, корректно обрабатывать прерывания и повторные запросы, поддерживает длинный диалог в несколько шагов и интегрируется с разными backend-решениями, включая собственные API и LangGraph.
Преимущества Assistant-UI:
- Полная кастомизация. Так как это библиотека, внешний вид можно менять как угодно, писать и внедрять свои собственные компоненты. В случае затруднений можно опираться на примеры проектов с GitHub.
- Интеграция с LangGraph. Assistant-UI поддерживает LangGraph template (шаблон для интеграции с фреймворком, использующимся для графового представления «Банка идей»). Это дает готовую поддержку потокового обновления состояния агента, а не только текста ответа, что позволяет точно отражать на интерфейсе прогресс выполнения задач. Из коробки доступны механизмы human-in-the-loop и генеративный UI.
- Каталог готовых UI-компонентов (tool-ui). Более 20 инструментов для прямого взаимодействия с пользователем: от таблиц и чек-листов до командной строки и трекера прогресса.
Недостатки Assistant-UI:
- Более высокий порог входа. Требуется знание React.
- Время и трудозатраты. UI нужно писать и собирать, что влияет на сроки показа MVP.
- Часть функциональности нужно дорабатывать руками. Например, работу с документами, которая в Open WebUI была «из коробки».
Что мы получили с Assistant-UI
В нашем случае Assistant-UI оказался более удобным и подходящим инструментом:
- Собственные компоненты. Мы встроили в продукт нужную визуализацию процесса работы над идеей. Это удобно, понятно и близко к процессу в жизни — именно так люди в команде совместно работают над новой темой.
- Интеграция с LangGraph. Поддержка в фреймворке позволила не делать специальных «приседаний» при разработке. Процесс работы архитектурно представлен внутри продукта в виде графов на разные этапы с возможным изменением маршрутов.
- Organic human-in-the-loop. Каждый агент в нужный момент обращается к пользователю с полным контекстом.
Какой выбор и для каких сценариев
Open WebUI - open-source веб-интерфейс, удобен, когда не хочется писать код и нужен простой привычный чат-бот. Можно быстро интегрировать, но придется потратить много усилий на кастомизацию. Т.е. хороший выбор для быстрого старта, когда нужен готовый self-hosted AI-продукт и взаимодействие с пользователем - это обычный привычный чат.
Assistant-UI - фреймворк, который предоставляет полную свободу действий. Подходит для более креативных задач. Требуется время, чтобы написать основу, однако интеграция готовых инструментов облегчается примерами с GitHub. Требует хотя бы базового понимания React, но дает контроль над состоянием, потоковыми обновлениями, tool calling, human-in-the-loop, кастомными UI-компонентами и прямую интеграцию с агентными бэкендами вроде LangGraph.
Где встречается такой выбор
Описанная логика выбора пригодится не только для «Банка идей». Она применима ко многим корпоративным AI-решениям:
- внутренние AI-ассистенты для сотрудников;
- AI-модули в CRM, ERP, Service Desk и отраслевых системах;
- сервисы разбора заявок, документов и обращений;
- мультиагентные решения для аналитики, проверки гипотез и подготовки рекомендаций;
- интерфейсы, где AI должен не только отвечать, но и проводить пользователя по процессу.
Во всех этих случаях «чат» часто является лишь верхним уровнем взаимодействия. Под ним находится корпоративный flow, состояние, управление агентами, проверки, согласования и доменная логика. Именно поэтому для таких продуктов нужен интерфейсный слой, который умеет жить вместе с этой логикой.
Заключение
При разработке AI-продуктов вопрос выбора фронтового инструмента нельзя сводить к удобству готового чата или скорости первого запуска. В проектах, где есть мультиагентная логика, human-in-the-loop и нестандартные интерфейсные сущности, UI становится частью архитектуры продукта.
- Open WebUI — сильный инструмент для быстрого старта, когда нужен готовый универсальный AI-интерфейс.
- Assistant-UI — более гибкий путь, когда нужно встроить AI в конкретный бизнес-сценарий и сохранить свободу в проектировании интерфейса.
Для нас это означало простой выбор: если цель — просто показать чат, можно взять готовую платформу. Если цель — показать, как действительно будет работать AI-сервис внутри продукта и бизнес-процесса, нужен инструмент, который позволяет проектировать собственный UX вокруг логики системы. В нашем случае таким инструментом стал Assistant-UI.