Google представляет A2UI (Agent-to-User Interface): открытый протокол для интерфейсов, управляемых агентами

Компания 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, что делает его доступным для инженеров, создающих агентские приложения.

Источник