Перейти к содержанию
Публикация AiManual

ChatGPT Intelligent UI: как за сутки реверс-инжинирили и воссоздали на локальных LLM через OpenUI

OpenAI показала Intelligent UI, где ChatGPT собирает калькуляторы и графики вместо простыни текста, а команда OpenUI повторила эту реализацию меньше чем за 24 ч

Коротко

Что будет в материале

  1. 01

    Что такое Intelligent UI и generative UI: краткий ответ

  2. 02

    Как команда OpenUI реверс-инжинирила ChatGPT менее чем за 24 часа

  3. 03

    Как воссоздать Intelligent UI на локальных LLM через OpenUI и Ollama

  4. 04

    Сравнение подходов: OpenUI, json-render от Vercel, A2UI от Google и Intelligent UI

Что такое Intelligent UI и generative UI: краткий ответ

Intelligent UI - это вариант generative UI от OpenAI: вместо простыни текста или markdown модель собирает интерактивные элементы прямо в ходе ответа. Кнопки, формы, графики и калькуляторы появляются в чате как объекты, с которыми можно взаимодействовать, а не как их текстовое описание.

Команда OpenUI повторила то, как это устроено в ChatGPT, меньше чем за 24 часа после запуска функции и выпустила открытый фреймворк Open Intelligent UI. Привязки к конкретной модели нет, поэтому фреймворк связывается с локальными LLM через Ollama и LM Studio. Оговорка важная: готового решения «в один клик» не существует, это набор компонентов для самостоятельной сборки. Разбор реверс-инжиниринга и проекта Open Intelligent UI.

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

Чем Intelligent UI отличается от обычного текстового ответа

Под капотом - набор готовых элементов и сборщик, который строит интерфейс по ходу ответа. Поэтому калькулятор появляется на экране частями: сначала одни поля и кнопки, затем остальные. Описание механики Intelligent UI и примеры запросов.

Формат ответа выбирает модель. Если полезнее текст, она ответит текстом. Когда пришёл текст, а хотелось интерфейс, помогает прямой запрос: «покажи кнопками и графиком». Тот же источник приводит именно такую формулировку как рабочий приём.

Где Intelligent UI находится на спектре подходов к generative UI

Подходы к generative UI различаются объёмом свободы, который получает модель. Одни системы позволяют выбирать и компоновать элементы из предопределённой библиотеки компонентов, другие дают модели генерировать целые интерфейсы на лету: писать HTML или React-код и рендерить его в iframe. OpenUI, json-render от Vercel, A2UI от Google и Intelligent UI от ChatGPT стоят в разных точках этого спектра, и подробнее о компромиссах - в разделе о сравнении ниже.

Как команда OpenUI реверс-инжинирила ChatGPT менее чем за 24 часа

Работу выполнили меньше чем за сутки после запуска функции. Внутренний код OpenAI команда не видела: все выводы построены на публично наблюдаемом поведении. Публичный разбор реверс-инжиниринга.

Какие данные использовались для реверс-инжиниринга

Источников три. Первый - собственные аккаунты ChatGPT: команда смотрела, как ведёт себя интерфейс в обычных диалогах. Второй - трафик веб-приложения: какие запросы уходят на сервер и что приходит в ответ. Третий - открытый JavaScript, который chatgpt.com отдаёт любому посетителю, то есть клиентская логика сборки интерфейса.

Набор стандартный для анализа веб-приложений и не требует доступа к серверной инфраструктуре. Обратная сторона тоже очевидна: часть логики остаётся на сервере, поэтому картина заведомо неполная, и это стоит держать в голове, оценивая полноту такого разбора.

Что такое Open Intelligent UI и зачем он нужен

Ответ команды - открытый фреймворк Open Intelligent UI. Он позволяет собрать опыт, похожий на Intelligent UI, внутри своих приложений. Привязки к конкретной модели нет, поэтому тот же фреймворк подходит для локальных LLM через Ollama, LM Studio и аналогичные инструменты. На выходе получается конструктор: компоненты и логика есть, сборка остаётся на разработчике.

Как воссоздать Intelligent UI на локальных LLM через OpenUI и Ollama

Логика такая: локальная модель должна вернуть не текст, а структуру, например JSON с описанием интерфейса. Дальше рендерер OpenUI превращает структуру в интерактивные элементы. Модель при этом работает на вашем железе, и данные никуда не уходят.

Какие компоненты нужны для сборки

  • Локальная LLM, запущенная через Ollama или LM Studio.
  • Слой структурированного вывода: модель возвращает JSON или другую структуру, которую можно проверить схемой.
  • Рендерер OpenUI: превращает структуру в кнопки, формы, графики и другие элементы.

OpenUI даёт именно компоненты, готовое приложение с чатом и интерфейсом придётся собирать самому. Похожую задачу решает другой открытый проект, где интерфейс строится из примитивов, которые генерирует модель: GUI harness собирает интерфейс из векторных примитивов и откатывает действия агента.

С какими локальными моделями это работает

Формально ограничений нет: подойдёт любая модель, которая умеет следовать заданному формату вывода. На практике всё решает дисциплина модели - способность не сломать JSON и правильно понять, какой элемент нужен в ответе. Публичных замеров, которые сравнивали бы локальные модели именно на этой задаче, в открытых материалах нет, так что проверять придётся на своих сценариях. Инструменты запуска стандартные: Ollama и LM Studio. Как подходить к сравнению моделей, разбираем в чек-листе для оценки новых AI-моделей, а про влияние контекста, KV-cache и VRAM на выбор - в разборе открытых LLM и стоимости инференса.

Сравнение подходов: OpenUI, json-render от Vercel, A2UI от Google и Intelligent UI

OpenUI, json-render от Vercel, A2UI от Google и Intelligent UI от ChatGPT находятся в разных точках спектра подходов к generative UI, и у каждого свои компромиссы по гибкости, надёжности, производительности и свободе модели. Сравнение этих проектов в исходном обсуждении.

Ключевые компромиссы: гибкость, надёжность, производительность

Библиотечный подход, где модель выбирает элементы из заранее заданного набора, даёт предсказуемость: набор элементов ограничен, ошибок меньше, рендеринг проще. Плата - меньшая гибкость: то, чего нет в библиотеке, показать не получится.

Генерация кода на лету даёт максимум свободы, модель может собрать почти любой интерфейс. Цена - ошибки в коде и вопросы безопасности, потому что чужой HTML или React обычно рендерят в изолированном iframe, а значит, взаимодействие с остальным приложением ограничено.

Производительность оценивать стоит по двум параметрам: насколько сложный интерфейс генерируется и сколько токенов модель тратит на структуру вместо самого ответа. Чем богаче интерфейс, тем длиннее вывод и тем выше задержка.

Какой подход выбрать под свою задачу

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

Intelligent UI от OpenAI - проприетарная функция внутри ChatGPT. Встроить её в своё приложение напрямую нельзя, повторить похожий опыт можно только через открытые фреймворки. Что именно OpenAI показала пользователям, разбираем в отдельном материале про Intelligent UI.

Практическая сторона: задержки, накладные расходы и оправданность сложности

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

Когда generative UI оправдан, а когда проще остаться на тексте

Интерфейс выигрывает там, где пользователь что-то меняет или сравнивает. Калькулятор накоплений, где сумму, срок и доходность можно крутить самому. Деление счёта за ужин на шесть человек с оговоркой, что двое не заказывали алкоголь. План делового ужина по времени: что купить заранее, когда ставить горячее, когда встречать гостей. Маршрут по трём городам с отметками остановок. Примеры таких запросов к Intelligent UI.

Для объяснений, справок и коротких ответов текст остаётся быстрее: он не требует ни структуры, ни рендеринга. Модель в Intelligent UI сама выбирает формат и отвечает текстом, когда интерфейс не нужен.

Ограничения локального запуска: что нужно учитывать

Локальные модели держат формат менее стабильно, чем крупные облачные. Значит, нужны проверка схемы, повторные попытки и запасной вариант с текстовым ответом, если структура не собралась. Это дополнительная инженерия, и заметнее всего она на слабом железе: локальный инференс упирается в GPU и объём VRAM, а скорость генерации напрямую влияет на то, как быстро появится интерфейс.

Конкретных цифр по задержкам в открытых материалах о реверс-инжиниринге нет, поэтому накладные расходы стоит мерить на своих моделях и своих задачах. Универсального ответа, окупится ли структурированный вывод, не существует: для чат-помощника с редкими виджетами проще держать текст, для инструмента с формами и калькуляторами интерфейс экономит время пользователя.

Кому это нужно и что делать дальше

Тема полезна разработчикам, которые добавляют интерактивность в свои AI-продукты, и тем, кто гоняет модели локально и хочет посмотреть, как выглядит generative UI без облака. Продакт-менеджерам она даёт рамку для решения, нужны ли в интерфейсе кнопки и графики или хватит текста.

Если вы уже работаете с Ollama или LM Studio, разумный первый шаг - собрать минимальный прототип: один запрос, структурированный ответ, пара элементов рендера. Так вы увидите реальные задержки и качество на своей модели, не вкладываясь в полную интеграцию. Фреймворк OpenUI открытый, но готового продукта из коробки не даёт, и рассчитывать на мгновенный результат не стоит.

Подписаться на канал