O renderizador de agente para interface (A2UI) do Jetpack Compose oferece uma implementação do protocolo A2UI, permitindo que agentes de IA gerem interfaces de usuário interativas e avançadas que renderizam componentes nativos do Compose sem executar código arbitrário. Essa biblioteca mapeia o protocolo JSON A2UI para primitivos do Compose enquanto adere ao gerenciamento de estado idiomático e fornece reatividade refinada com base no sistema de estado de instantâneo do Compose.
A biblioteca de renderização A2UI do Compose oferece os seguintes recursos:
- Reatividade de alta performance
(
androidx.a2ui.compose:compose-runtime): oferece atualizações de UI refinadas usando o sistema de estado de snapshot do Compose, garantindo que apenas os componentes específicos afetados por atualizações do agente de streaming ou interações do usuário sejam recompostos. - APIs e personalização de componentes flexíveis
(
androidx.a2ui.compose:compose-ui): fornece um padrão estruturado para definir catálogos de implementações de componentes que mapeiam esquemas de protocolo JSON para sua interface do Compose nativa. Isso permite criar componentes que oferecem suporte a renderização progressiva, estados de carregamento personalizados de subcomponentes, transições animadas e vinculações de dados bidirecionais que podem enviar dados de volta para o agente. - Núcleo independente do sistema de design: mantém as camadas de ambiente de execução e renderização da interface do usuário independentes de qualquer sistema de design específico, permitindo que você crie catálogos personalizados para o sistema de design do app ou adote o Catálogo básico fornecido.
- Tratamento adequado de alucinações de IA (
androidx.a2ui:a2ui-modeleandroidx.a2ui:a2ui-engine): oferece validação de esquema para interceptar payloads malformados antes que eles cheguem aos modelos de estado, tratamento de erros adequado por estados de erro de componente e relatórios automáticos de erros a um agente para autocorreção. - Catálogo básico integrado
(
androidx.compose.material3:material3-a2ui): oferece uma implementação do catálogo básico pronta para uso com componentes do Material 3, compatível com renderização progressiva e temas do Material sobre o renderizador do Compose.
Arquitetura de alto nível
Cada interface A2UI é impulsionada por um catálogo de componentes. Em vez de um agente gerar código arbitrário da interface ou inventar componentes não registrados, o catálogo atua como um contrato que define os elementos, propriedades e funções específicos da interface disponíveis para o agente. O catálogo declara os componentes, e o agente os usa para construir interfaces de usuário.
Para oferecer suporte a esse modelo, o renderizador A2UI do Compose separa o mecanismo de renderização principal e independente do sistema de design das implementações concretas do catálogo nos artefatos do Jetpack descritos anteriormente e fornece APIs de teste dedicadas em androidx.a2ui.compose:compose-ui-testing.
Evolução do protocolo e compatibilidade da API
No momento, o renderizador A2UI do Compose é compatível com a versão 0.9.1 da especificação A2UI.
As camadas de interface (androidx.a2ui.compose:compose-ui) e de tempo de execução (androidx.a2ui.compose:compose-runtime) fornecem uma superfície de API para seus apps e catálogos de componentes, enquanto a camada de dados subjacente (androidx.a2ui:a2ui-model e androidx.a2ui:a2ui-engine) gerencia a análise e o processamento de mensagens específicos da versão do protocolo. Como essas bibliotecas fazem parte do AndroidX, regras estritas de compatibilidade binária são aplicadas. Por exemplo, depois que a API pública atinge a versão estável 1.0.0, não há mudanças significativas nas superfícies da API pública, como classes e interfaces.
O renderizador A2UI do Compose usa as seguintes estratégias para oferecer suporte à evolução do protocolo.
Evoluir as APIs de renderização de interface e de tempo de execução
À medida que o protocolo A2UI evolui ou adiciona novos recursos, as APIs do renderizador oferecem suporte a essas mudanças usando as seguintes abordagens:
- Adições de API não destrutivas: quando um novo recurso é introduzido, ele
se torna parte de uma interface pública principal (como
A2uiComponentouA2uiCatalog) com uma implementação padrão. Isso permite que os componentes do app continuem sendo compilados e funcionando sem modificações. - Mudanças interruptivas causam a descontinuação de interfaces mais antigas: se uma
atualização futura do protocolo introduzir uma mudança incompatível, as interfaces antigas incompatíveis (como
A2uiComponent) serão descontinuadas, e novas interfaces, comoA2uiComponentV2, serão introduzidas e compatíveis com elas.
Catálogo de versões e esquemas de componentes
Uma definição de esquema de catálogo está associada a uma versão específica do protocolo. Quando o protocolo evolui, a definição do catálogo também evolui e avança na versão. As implementações de componentes para essa versão "next" podem usar as APIs de renderizador atualizadas.
Para facilitar as migrações, seu cliente pode declarar várias versões de catálogo compatíveis, que o agente recebe durante a fase de negociação de recursos.