Рендерер Jetpack Compose agent-to-UI (A2UI) предоставляет реализацию протокола A2UI , позволяя агентам ИИ генерировать насыщенные интерактивные пользовательские интерфейсы, отображающие нативные компоненты Compose — без выполнения произвольного кода. Эта библиотека сопоставляет протокол A2UI JSON с примитивами Compose, придерживаясь идиоматического управления состоянием и обеспечивая тонкую реактивность на основе системы состояний Compose Snapshot.
Библиотека рендеринга Compose A2UI предоставляет следующие возможности:
- Высокопроизводительная реактивность (
androidx.a2ui.compose:compose-runtime): Обеспечивает детальные обновления пользовательского интерфейса за счет использования системы состояний Compose Snapshot, гарантируя, что перекомпонуются только те компоненты, которые затронуты обновлениями потокового агента или взаимодействием с пользователем. - Гибкие API компонентов и возможности настройки (
androidx.a2ui.compose:compose-ui): Предоставляет структурированный шаблон для определения каталогов реализаций компонентов, которые сопоставляют схемы протокола JSON с вашим собственным пользовательским интерфейсом Compose. Это позволяет создавать компоненты, поддерживающие прогрессивную отрисовку, настраиваемые состояния загрузки подкомпонентов, анимированные переходы и двустороннюю привязку данных, которая может отправлять данные обратно агенту. - Независимый от дизайн-системы ядро : обеспечивает независимость уровней отрисовки во время выполнения и пользовательского интерфейса от какой-либо конкретной дизайн-системы, позволяя создавать собственные каталоги для дизайн-системы вашего приложения или использовать предоставленный базовый каталог .
- Корректная обработка ошибок ИИ (
androidx.a2ui:a2ui-modelиandroidx.a2ui:a2ui-engine): обеспечивает проверку схемы для перехвата некорректно сформированных данных до того, как они достигнут моделей состояний, корректную обработку ошибок через состояния ошибок компонентов и автоматическое сообщение об ошибках агенту для самокоррекции. - Встроенный базовый каталог (
androidx.compose.material3:material3-a2ui): предоставляет готовую к использованию реализацию базового каталога с использованием компонентов Material 3, поддерживающую прогрессивную отрисовку и темы Material поверх рендерера Compose.
Архитектура высокого уровня
Каждый интерфейс A2UI управляется каталогом компонентов . Вместо того чтобы агент генерировал произвольный код пользовательского интерфейса или изобретал незарегистрированные компоненты, каталог выступает в качестве контракта, определяющего конкретные элементы пользовательского интерфейса, свойства и функции, доступные агенту. Каталог объявляет компоненты; агент использует их для построения пользовательских интерфейсов.
Для поддержки этой модели рендерер Compose A2UI отделяет основной, независимый от дизайн-системы механизм рендеринга от конкретных реализаций каталога в артефактах Jetpack, описанных ранее, и предоставляет специальные API для тестирования в androidx.a2ui.compose:compose-ui-testing .
Эволюция протокола и совместимость API
В настоящее время средство рендеринга Compose A2UI поддерживает версию 0.9.1 спецификации A2UI .
Слои пользовательского интерфейса ( androidx.a2ui.compose:compose-ui ) и среды выполнения ( androidx.a2ui.compose:compose-runtime ) предоставляют API-интерфейс для ваших приложений и каталогов компонентов, в то время как базовый слой данных ( androidx.a2ui:a2ui-model и androidx.a2ui:a2ui-engine ) управляет анализом и обработкой сообщений в зависимости от версии протокола. Поскольку эти библиотеки являются частью AndroidX, применяются строгие правила бинарной совместимости. Например, после того, как публичный API достигнет стабильной версии 1.0.0, никаких критических изменений в публичных API-интерфейсах, таких как классы и интерфейсы, не происходит.
Для поддержки эволюции протокола рендерер Compose A2UI использует следующие стратегии.
Развивайте API пользовательского интерфейса и рендерера во время выполнения.
По мере развития протокола A2UI или добавления новых возможностей, API рендеринга поддерживают эти изменения с помощью следующих подходов:
- Добавление API без нарушения совместимости : при добавлении новой возможности она становится частью основного публичного интерфейса (например,
A2uiComponentилиA2uiCatalog) с реализацией по умолчанию. Это позволяет компонентам вашего приложения продолжать компилироваться и функционировать без изменений. - Внесение критических изменений приводит к устареванию старых интерфейсов : если будущее обновление протокола вносит несовместимые изменения, старые несовместимые интерфейсы (например,
A2uiComponent) объявляются устаревшими, а вместо них вводятся и поддерживаются новые интерфейсы, такие какA2uiComponentV2.
Каталог версий и схемы компонентов
Определение схемы каталога связано с конкретной версией протокола. При развитии протокола определение каталога также изменяется, обновляя свою версию. Реализации компонентов для этой «следующей» версии могут использовать обновленные API рендеринга.
Для обеспечения бесперебойной миграции ваш клиент может указать несколько поддерживаемых версий каталога , которые агент получает на этапе согласования возможностей.