Rendu de l'agent à l'UI pour Jetpack Compose (A2UI)

Le moteur de rendu Jetpack Compose agent-to-UI (A2UI) fournit une implémentation du protocole A2UI, permettant aux agents d'IA de générer des interfaces utilisateur riches et interactives qui affichent des composants Compose natifs, sans exécuter de code arbitraire. Cette bibliothèque mappe le protocole JSON A2UI aux primitives Compose tout en respectant la gestion idiomatique de l'état et en fournissant une réactivité précise basée sur le système d'état Compose Snapshot.

La bibliothèque de moteur de rendu Compose A2UI offre les fonctionnalités suivantes :

  • Réactivité haute performance (androidx.a2ui.compose:compose-runtime) : fournit des mises à jour de l'UI précises en tirant parti du système d'état Compose Snapshot, ce qui garantit que seuls les composants spécifiques affectés par les mises à jour de l'agent de streaming ou les interactions utilisateur sont recomposés.
  • API de composants flexibles et personnalisation (androidx.a2ui.compose:compose-ui) : fournit un modèle structuré pour définir des catalogues d'implémentations de composants qui mappent les schémas de protocole JSON à votre UI Compose native. Cela vous permet de créer des composants qui prennent en charge le rendu progressif, les états de chargement personnalisés des sous-composants, les transitions animées et les liaisons de données bidirectionnelles qui peuvent renvoyer des données à l'agent.
  • Noyau indépendant du système de conception : permet de conserver les couches d'exécution et de rendu de l'UI indépendamment de tout système de conception spécifique. Vous pouvez ainsi créer des catalogues personnalisés pour le système de conception de votre application ou adopter le catalogue de base fourni.
  • Gestion élégante des hallucinations de l'IA (androidx.a2ui:a2ui-model et androidx.a2ui:a2ui-engine) : fournit une validation du schéma pour intercepter les charges utiles mal formées avant qu'elles n'atteignent les modèles d'état, une gestion des exceptions élégante grâce aux états d'erreur des composants et un signalement automatique des erreurs à un agent pour l'autocorrection.
  • Catalogue de base intégré (androidx.compose.material3:material3-a2ui) : fournit une implémentation de catalogue de base prête à l'emploi à l'aide des composants Material 3, prenant en charge le rendu progressif et la thématisation Material en plus du moteur de rendu Compose.

Architecture de haut niveau

Chaque interface A2UI est basée sur un catalogue de composants. Au lieu de demander à un agent de générer du code d'UI arbitraire ou d'inventer des composants non enregistrés, le catalogue sert de contrat qui définit les éléments d'UI, les propriétés et les fonctions spécifiques disponibles pour l'agent. Le catalogue déclare les composants, et l'agent les utilise pour construire des interfaces utilisateur.

Pour prendre en charge ce modèle, le moteur de rendu Compose A2UI sépare le moteur de rendu principal, indépendant du système de conception, des implémentations concrètes du catalogue dans les artefacts Jetpack décrits précédemment. Il fournit également des API de test dédiées dans androidx.a2ui.compose:compose-ui-testing.

Évolution du protocole et compatibilité des API

Le moteur de rendu A2UI Compose est actuellement compatible avec la version 0.9.1 de la spécification A2UI.

Les couches d'interface utilisateur (androidx.a2ui.compose:compose-ui) et d'exécution (androidx.a2ui.compose:compose-runtime) fournissent une surface d'API pour vos applications et catalogues de composants, tandis que la couche de données sous-jacente (androidx.a2ui:a2ui-model et androidx.a2ui:a2ui-engine) gère l'analyse et le traitement des messages spécifiques à la version du protocole. Étant donné que ces bibliothèques font partie d'AndroidX, des règles strictes de compatibilité binaire s'appliquent. Par exemple, une fois que l'API publique atteint la version stable 1.0.0, aucune modification destructive n'est apportée aux surfaces de l'API publique, telles que les classes et les interfaces.

Le moteur de rendu A2UI Compose utilise les stratégies suivantes pour prendre en charge l'évolution du protocole.

Faire évoluer les API de l'interface utilisateur et du moteur de rendu d'exécution

À mesure que le protocole A2UI évolue ou ajoute de nouvelles fonctionnalités, les API du moteur de rendu prennent en charge ces modifications de différentes manières :

  • Ajouts d'API non destructifs : lorsqu'une nouvelle fonctionnalité est introduite, elle fait partie d'une interface publique de base (telle que A2uiComponent ou A2uiCatalog) avec une implémentation par défaut. Cela permet aux composants de votre application de continuer à compiler et à fonctionner sans modification.
  • Les modifications destructives entraînent l'obsolescence des anciennes interfaces : si une future mise à jour du protocole introduit une modification incompatible, les anciennes interfaces incompatibles (telles que A2uiComponent) sont obsolètes, et de nouvelles interfaces, telles que A2uiComponentV2, sont introduites et prises en charge à leurs côtés.

Catalogues de versions et schémas de composants

Une définition de schéma de catalogue est associée à une version de protocole spécifique. Lorsque le protocole évolue, la définition du catalogue évolue en conséquence et sa version est mise à jour. Les implémentations de composants pour cette "prochaine" version peuvent utiliser les API du moteur de rendu mises à jour.

Pour faciliter les migrations, votre client peut déclarer plusieurs versions de catalogue compatibles, que l'agent obtient lors de la phase de négociation des capacités.