Renderer Agent-to-UI per Jetpack Compose (A2UI)

Il renderer da agente a UI (A2UI) di Jetpack Compose fornisce un'implementazione del protocollo A2UI, consentendo agli agenti AI di generare interfacce utente interattive e avanzate che eseguono il rendering dei componenti Compose nativi, senza eseguire codice arbitrario. Questa libreria mappa il protocollo JSON A2UI ai primitivi di Compose rispettando la gestione dello stato idiomatica e fornendo una reattività granulare basata sul sistema di stato di Compose Snapshot.

La libreria di rendering Compose A2UI offre le seguenti funzionalità:

  • Reattività ad alte prestazioni (androidx.a2ui.compose:compose-runtime): fornisce aggiornamenti dell'interfaccia utente granulari sfruttando il sistema di stato di Compose Snapshot, garantendo che vengano ricomposti solo i componenti specifici interessati dagli aggiornamenti dell'agente di streaming o dalle interazioni dell'utente.
  • API e personalizzazione flessibili dei componenti (androidx.a2ui.compose:compose-ui): fornisce un pattern strutturato per definire cataloghi di implementazioni di componenti che mappano gli schemi del protocollo JSON alla tua UI Compose nativa. In questo modo puoi creare componenti che supportano il rendering progressivo, stati di caricamento personalizzati dei sottocomponenti, transizioni animate e data binding bidirezionali che possono inviare dati all'agente.
  • Core indipendente dal sistema di progettazione: mantiene i livelli di runtime e rendering dell'interfaccia utente indipendenti da qualsiasi sistema di progettazione specifico, consentendoti di creare cataloghi personalizzati per il sistema di progettazione della tua app o di adottare il catalogo di base fornito.
  • Gestione controllata delle allucinazioni dell'AI (androidx.a2ui:a2ui-model e androidx.a2ui:a2ui-engine): fornisce la convalida dello schema per intercettare i payload non validi prima che raggiungano i modelli di stato, la gestione degli errori tramite gli stati di errore dei componenti e la segnalazione automatica degli errori a un agente per l'autocorrezione.
  • Catalogo di base integrato (androidx.compose.material3:material3-a2ui): fornisce un'implementazione del catalogo di base pronta all'uso utilizzando i componenti Material 3, supportando il rendering progressivo e i temi Material in aggiunta al renderer Compose.

Architettura di alto livello

Ogni interfaccia A2UI è basata su un catalogo di componenti. Anziché far generare a un agente codice UI arbitrario o inventare componenti non registrati, il catalogo funge da contratto che definisce gli elementi, le proprietà e le funzioni specifici della UI disponibili per l'agente. Il catalogo dichiara i componenti; l'agente li utilizza per costruire le interfacce utente.

Per supportare questo modello, il renderer A2UI di Compose separa il motore di rendering principale e indipendente dal sistema di progettazione dalle implementazioni concrete del catalogo negli artefatti Jetpack descritti in precedenza e fornisce API di test dedicate in androidx.a2ui.compose:compose-ui-testing.

Evoluzione del protocollo e compatibilità delle API

Il renderer A2UI di Compose attualmente supporta la versione 0.9.1 della specifica A2UI.

I livelli UI (androidx.a2ui.compose:compose-ui) e runtime (androidx.a2ui.compose:compose-runtime) forniscono una superficie API per le app e i cataloghi di componenti, mentre il livello dati sottostante (androidx.a2ui:a2ui-model e androidx.a2ui:a2ui-engine) gestisce l'analisi e l'elaborazione dei messaggi specifiche per la versione del protocollo. Poiché queste librerie fanno parte di AndroidX, si applicano regole di compatibilità binaria rigorose. Ad esempio, dopo che l'API pubblica raggiunge la versione stabile 1.0.0, non vengono apportate modifiche che causano interruzioni alle superfici dell'API pubblica, come classi e interfacce.

Il renderer A2UI di Compose utilizza le seguenti strategie per supportare l'evoluzione del protocollo.

Evolvere le API di rendering dell'UI e del runtime

Man mano che il protocollo A2UI si evolve o aggiunge nuove funzionalità, le API di rendering supportano queste modifiche nei seguenti modi:

  • Aggiunte di API non rivoluzionarie: quando viene introdotta una nuova funzionalità, questa diventa parte di un'interfaccia pubblica di base (come A2uiComponent o A2uiCatalog) con un'implementazione predefinita. In questo modo, i componenti dell'app continuano a essere compilati e a funzionare senza modifiche.
  • Le modifiche che causano interruzioni comportano il ritiro delle interfacce precedenti: se un futuro aggiornamento del protocollo introduce una modifica incompatibile, le vecchie interfacce incompatibili (ad esempio A2uiComponent) vengono ritirate e le nuove interfacce, come A2uiComponentV2, vengono introdotte e supportate insieme a quelle precedenti.

Catalogo delle versioni e schemi dei componenti

Una definizione dello schema del catalogo è associata a una versione specifica del protocollo. Quando il protocollo si evolve, la definizione del catalogo si evolve di conseguenza e avanza la sua versione. Le implementazioni dei componenti per questa versione "successiva" possono utilizzare le API di rendering aggiornate.

Per facilitare le migrazioni senza interruzioni, il client può dichiarare più versioni del catalogo supportate, che l'agente ottiene durante la fase di negoziazione delle funzionalità.