Компания Google открыла исходный код A2UI — спецификации и набора библиотек для создания интерфейсов, управляемых агентами. Этот протокол позволяет агентам описывать сложные нативные интерфейсы в декларативном формате JSON, а клиентским приложениям — отображать их с помощью собственных компонентов.
Что такое A2UI?
A2UI — это открытый стандарт и реализация, которая позволяет агентам «говорить на языке интерфейса». Агент выводит не HTML или JavaScript, а ответ A2UI — полезную нагрузку в формате JSON, которая описывает набор компонентов, их свойства и модель данных. Клиентское приложение считывает это описание и сопоставляет каждый компонент со своими нативными виджетами, например, компонентами Angular, виджетами Flutter, веб-компонентами, компонентами React или представлениями SwiftUI.
Проблема: агентам нужно «говорить на языке интерфейса»
Большинство агентов, работающих через чат, отвечают длинными текстами. Для таких задач, как бронирование ресторана или ввод данных, это приводит к большому количеству запросов и плотным ответам.
A2UI позволяет агенту запросить форму в виде структурированного описания интерфейса вместо того, чтобы описывать её на естественном языке.
Проблема усложняется в мультиагентной сети. В такой системе оркестратор в одной организации может делегировать работу удалённому агенту A2A в другой организации. Удалённый агент не может взаимодействовать с моделью объектов документа хост-приложения. Он может только отправлять сообщения. Исторически это означало HTML или скрипты внутри iframe. Такой подход был громоздким, часто визуально непоследовательным с хостом и рискованным с точки зрения безопасности.
A2UI определяет формат данных, который безопасен, как данные, но достаточно выразителен для описания сложных макетов.
Основные принципы проектирования: безопасность и удобство для LLM
A2UI ориентирован на безопасность, удобство для LLM и портативность.
* Безопасность на первом месте. A2UI — это декларативный формат данных, а не исполняемый код. Клиент поддерживает каталог доверенных компонентов, таких как Card, Button или TextField. Агент может ссылаться только на типы из этого каталога. Это снижает риск внедрения пользовательского интерфейса и предотвращает выполнение произвольных скриптов из выходных данных модели.
* Удобное представление для LLM. Интерфейс представлен в виде плоского списка компонентов со ссылками на идентификаторы. Это упрощает генерацию или обновление интерфейсов с помощью языковых моделей и поддерживает потоковые обновления. Агент может корректировать представление по мере развития разговора, не пересоздавая полное вложенное дерево JSON.
* Независимость от фреймворков. Одна полезная нагрузка A2UI может быть отображена на нескольких клиентах. Агент описывает дерево компонентов и связанную с ним модель данных. Клиент сопоставляет эту структуру с нативными виджетами в таких фреймворках, как Angular, Flutter, React или SwiftUI. Это позволяет повторно использовать одну и ту же логику агента в веб-, мобильных и настольных приложениях.
* Прогрессивный рендеринг. Поскольку формат предназначен для потоковой передачи, клиенты могут отображать частичные интерфейсы, пока агент продолжает вычисления. Пользователи видят, как интерфейс собирается в реальном времени, а не ждут полного ответа.
Архитектура и поток данных
A2UI — это конвейер, который разделяет генерацию, транспортировку и рендеринг.
Пользователь отправляет сообщение агенту через чат или другую поверхность. Агент, часто поддерживаемый Gemini или другой моделью, генерирующей JSON, создаёт ответ A2UI. Этот ответ описывает компоненты, макет и привязки данных.
Сообщения A2UI передаются клиенту через транспорт, такой как протокол Agent to Agent или протокол AG UI. Клиент использует библиотеку рендеринга A2UI. Рендерер анализирует полезную нагрузку и преобразует каждый тип компонента в конкретный виджет в кодовой базе хоста.
Действия пользователя, например, нажатия кнопок или отправка форм, отправляются обратно в виде событий агенту. Агент может ответить новыми сообщениями A2UI, которые обновляют существующий интерфейс.
Основные выводы
A2UI — это открытый стандарт и набор библиотек от Google, который позволяет агентам «говорить на языке интерфейса», отправляя декларативную спецификацию JSON для интерфейсов, в то время как клиенты отображают их с помощью нативных компонентов, таких как Angular, Flutter или Lit.
Спецификация ориентирована на безопасность, рассматривая пользовательский интерфейс как данные, а не код, поэтому агенты ссылаются только на каталог компонентов, контролируемых клиентом, что снижает риск внедрения пользовательского интерфейса и предотвращает выполнение произвольных скриптов из выходных данных модели.
Внутренний формат использует обновляемое плоское представление компонентов, оптимизированное для LLM, которое поддерживает потоковую передачу и инкрементные обновления, поэтому агенты могут постепенно совершенствовать интерфейс во время сеанса.
A2UI не зависит от транспорта и уже используется с протоколом A2A и AG UI, что позволяет агентам-оркестраторам и удалённым вспомогательным агентам отправлять полезные нагрузки пользовательского интерфейса через границы доверия, в то время как хост-приложения сохраняют контроль над брендингом, макетом и доступностью.
Проект находится на ранней стадии публичного предварительного просмотра в версии v0.8, выпущен под лицензией Apache 2.0, с эталонными рендерерами, примерами быстрого запуска и интеграциями в проектах, таких как Opal, Gemini Enterprise и Flutter GenUI, что делает его напрямую доступным для инженеров, создающих агентские приложения.
1. Какие проблемы решает A2UI в контексте взаимодействия агентов и пользовательских интерфейсов?
A2UI решает проблему взаимодействия агентов и пользовательских интерфейсов, позволяя агентам описывать сложные нативные интерфейсы в декларативном формате JSON. Это упрощает генерацию интерфейсов и делает их более структурированными и управляемыми.
2. Какие основные принципы проектирования лежат в основе A2UI?
Основные принципы проектирования A2UI включают безопасность, удобство для LLM (языковых моделей) и портативность. A2UI ориентирован на безопасность, так как использует декларативный формат данных и ограничивает взаимодействие с доверенными компонентами. Это снижает риск внедрения пользовательского интерфейса и предотвращает выполнение произвольных скриптов.
3. Как A2UI обеспечивает безопасность при работе с пользовательскими интерфейсами?
A2UI обеспечивает безопасность, используя декларативный формат данных вместо исполняемого кода. Клиент поддерживает каталог доверенных компонентов, и агент может ссылаться только на эти компоненты. Это предотвращает выполнение произвольных скриптов и снижает риск внедрения пользовательского интерфейса.
4. Какие преимущества предоставляет A2UI для разработчиков агентских приложений?
A2UI предоставляет разработчикам агентских приложений возможность создавать структурированные и управляемые интерфейсы, используя декларативный формат JSON. Это упрощает разработку, тестирование и интеграцию агентских приложений с различными фреймворками и платформами.
5. Какие версии и лицензии доступны для A2UI на данный момент?
На данный момент проект A2UI находится на ранней стадии публичного предварительного просмотра в версии v0.8. Проект выпущен под лицензией Apache 2.0, что делает его доступным для инженеров, создающих агентские приложения.