El renderizador de agente a IU (A2UI) de Jetpack Compose proporciona una implementación del protocolo A2UI, lo que permite que los agentes de IA generen interfaces de usuario interactivas y enriquecidas que rendericen componentes nativos de Compose, sin ejecutar código arbitrario. Esta biblioteca asigna el protocolo JSON de A2UI a elementos primitivos de Compose, al mismo tiempo que se adhiere a la administración idiomática del estado y proporciona reactividad detallada basada en el sistema de estado de instantáneas de Compose.
La biblioteca del renderizador de A2UI de Compose ofrece las siguientes capacidades:
- Reactividad de alto rendimiento (
androidx.a2ui.compose:compose-runtime): Proporciona actualizaciones detalladas de la IU aprovechando el sistema de estado de instantáneas de Compose, lo que garantiza que solo se vuelvan a componer los componentes específicos afectados por las actualizaciones del agente de transmisión o las interacciones del usuario. - APIs de componentes flexibles y personalización (
androidx.a2ui.compose:compose-ui): Proporciona un patrón estructurado para definir catálogos de implementaciones de componentes que asignan esquemas de protocolo JSON a tu IU nativa de Compose. Esto te permite crear componentes que admiten la renderización progresiva, estados de carga personalizados de subcomponentes, transiciones animadas y vinculaciones de datos bidireccionales que pueden enviar datos al agente. - Núcleo independiente del sistema de diseño: Mantiene las capas de tiempo de ejecución y de renderización de la IU independientes de cualquier sistema de diseño específico, lo que te permite compilar catálogos personalizados para el sistema de diseño de tu app o adoptar el catálogo básico proporcionado.
- Control adecuado de las alucinaciones de la IA (
androidx.a2ui:a2ui-modelyandroidx.a2ui:a2ui-engine): Proporciona validación de esquemas para interceptar cargas útiles con formato incorrecto antes de que lleguen a los modelos de estado, control adecuado de errores a través de estados de error de componentes y generación automática de informes de errores para que un agente realice la autocorrección. - Catálogo básico integrado (
androidx.compose.material3:material3-a2ui): Proporciona una implementación del catálogo básico lista para usar con componentes de Material 3, que admite la renderización progresiva y la asignación de temas de Material sobre el renderizador de Compose.
Arquitectura de alto nivel
Cada interfaz de A2UI se basa en un catálogo de componentes. En lugar de que un agente genere código de IU arbitrario o invente componentes no registrados, el catálogo actúa como un contrato que define los elementos, las propiedades y las funciones específicos de la IU disponibles para el agente. El catálogo declara los componentes, y el agente los usa para construir interfaces de usuario.
Para admitir este modelo, el renderizador de Compose A2UI separa el motor de renderización principal, independiente del sistema de diseño, de las implementaciones concretas del catálogo en los artefactos de Jetpack descritos anteriormente y proporciona APIs de prueba dedicadas en androidx.a2ui.compose:compose-ui-testing.
Evolución del protocolo y compatibilidad de la API
Actualmente, el renderizador de A2UI de Compose admite la versión 0.9.1 de la especificación de A2UI.
La IU (androidx.a2ui.compose:compose-ui) y las capas de tiempo de ejecución (androidx.a2ui.compose:compose-runtime) proporcionan una superficie de API para tus apps y catálogos de componentes, mientras que la capa de datos subyacente (androidx.a2ui:a2ui-model y androidx.a2ui:a2ui-engine) administra el procesamiento de mensajes y el análisis específicos de la versión del protocolo. Como estas bibliotecas forman parte de AndroidX, se aplican reglas estrictas de compatibilidad binaria. Por ejemplo, después de que la API pública alcance la versión estable 1.0.0, no habrá cambios que interrumpan las superficies de la API pública, como las clases y las interfaces.
El renderizador de A2UI de Compose usa las siguientes estrategias para admitir la evolución del protocolo.
Evolucionar las APIs de IU y de renderizador de tiempo de ejecución
A medida que el protocolo de A2UI evoluciona o agrega nuevas capacidades, las APIs del renderizador admiten esos cambios a través de los siguientes enfoques:
- Incorporaciones de APIs sin interrupciones: Cuando se introduce una nueva capacidad, esta pasa a formar parte de una interfaz pública principal (como
A2uiComponentoA2uiCatalog) con una implementación predeterminada. Esto permite que los componentes de tu app sigan compilándose y funcionando sin modificaciones. - Los cambios que interrumpen la compatibilidad hacen que las interfaces anteriores queden obsoletas: Si una actualización futura del protocolo introduce un cambio incompatible, las interfaces antiguas incompatibles (como
A2uiComponent) quedan obsoletas y se introducen y admiten interfaces nuevas, comoA2uiComponentV2, junto con ellas.
Esquemas de componentes y catálogos de versiones
Una definición de esquema de catálogo se asocia con una versión de protocolo específica. Cuando el protocolo evoluciona, la definición del catálogo también lo hace y avanza su versión. Las implementaciones de componentes para esta versión "siguiente" pueden usar las APIs del renderizador actualizadas.
Para facilitar las migraciones sin problemas, tu cliente puede declarar varias versiones del catálogo compatibles, que el agente obtiene durante la fase de negociación de capacidades.