Der Jetpack Compose-Renderer für die Kommunikation zwischen Agent und UI (A2UI) bietet eine Implementierung des A2UI-Protokolls, mit dem KI-Agents umfangreiche, interaktive Benutzeroberflächen generieren können, die native Compose-Komponenten rendern, ohne beliebigen Code auszuführen. Diese Bibliothek ordnet das A2UI-JSON-Protokoll Compose-Primitiven zu, wobei die idiomatische Statusverwaltung eingehalten wird und eine detaillierte Reaktivität basierend auf dem Compose Snapshot-Statussystem bereitgestellt wird.
Die Compose A2UI-Renderer-Bibliothek bietet die folgenden Funktionen:
- Reaktivität mit hoher Leistung (
androidx.a2ui.compose:compose-runtime): Ermöglicht detaillierte UI-Updates durch Nutzung des Compose Snapshot-Status-Systems. So werden nur die spezifischen Komponenten neu zusammengesetzt, die von Streaming-Agent-Updates oder Nutzerinteraktionen betroffen sind. - Flexible Komponenten-APIs und Anpassung (
androidx.a2ui.compose:compose-ui): Bietet ein strukturiertes Muster zum Definieren von Katalogen mit Komponentenimplementierungen, die JSON-Protokollschemata Ihrer nativen Compose-UI zuordnen. So können Sie Komponenten erstellen, die progressives Rendern, benutzerdefinierte Ladestatus von Unterkomponenten, animierte Übergänge und bidirektionale Datenbindungen unterstützen, mit denen Daten an den Agent zurückgesendet werden können. - Designsystemunabhängiger Kern: Die Laufzeit- und UI-Rendering-Ebenen sind unabhängig von einem bestimmten Designsystem. So können Sie benutzerdefinierte Kataloge für das Designsystem Ihrer App erstellen oder den bereitgestellten Basic Catalog verwenden.
- Graceful Handling of AI Hallucinations (
androidx.a2ui:a2ui-modelundandroidx.a2ui:a2ui-engine): Bietet Schemavalidierung, um fehlerhafte Nutzlasten abzufangen, bevor sie die Zustandsmodelle erreichen, eine ordnungsgemäße Fehlerbehandlung über Komponentenfehlerzustände und automatische Fehlerberichte an einen Agenten zur Selbstkorrektur. - Integrierter Basic Catalog
(
androidx.compose.material3:material3-a2ui): Bietet eine sofort einsatzbereite Basic Catalog-Implementierung mit Material 3-Komponenten, die progressives Rendern und Material-Theming auf dem Compose-Renderer unterstützt.
Gesamtarchitektur
Jede A2UI-Schnittstelle wird von einem Komponentenkatalog gesteuert. Anstatt dass ein Agent beliebigen UI-Code generiert oder nicht registrierte Komponenten erfindet, dient der Katalog als Vertrag, der die spezifischen UI-Elemente, Eigenschaften und Funktionen definiert, die dem Agenten zur Verfügung stehen. Im Katalog werden die Komponenten deklariert. Der Agent verwendet sie, um Benutzeroberflächen zu erstellen.
Um dieses Modell zu unterstützen, trennt der Compose A2UI-Renderer die Core-Rendering-Engine, die unabhängig vom Designsystem ist, von konkreten Katalogimplementierungen in den oben beschriebenen Jetpack-Artefakten. Außerdem werden in androidx.a2ui.compose:compose-ui-testing spezielle Test-APIs bereitgestellt.
Protokollentwicklung und API-Kompatibilität
Der Compose A2UI-Renderer unterstützt derzeit Version 0.9.1 der A2UI-Spezifikation.
Die UI- (androidx.a2ui.compose:compose-ui) und Laufzeitschichten (androidx.a2ui.compose:compose-runtime) bieten eine API-Oberfläche für Ihre Apps und Komponentenverzeichnisse, während die zugrunde liegende Datenschicht (androidx.a2ui:a2ui-model und androidx.a2ui:a2ui-engine) das protokollversionsspezifische Parsen und die Nachrichtenverarbeitung übernimmt. Da diese Bibliotheken Teil von AndroidX sind, gelten strenge Regeln für die binäre Kompatibilität. Nachdem die öffentliche API beispielsweise die stabile Version 1.0.0 erreicht hat, gibt es keine grundlegenden Änderungen an öffentlichen API-Oberflächen wie Klassen und Schnittstellen.
Der Compose A2UI-Renderer verwendet die folgenden Strategien, um die Protokollentwicklung zu unterstützen.
Weiterentwicklung der APIs für die Benutzeroberfläche und den Laufzeit-Renderer
Wenn sich das A2UI-Protokoll weiterentwickelt oder neue Funktionen hinzugefügt werden, unterstützen die Renderer-APIs diese Änderungen auf folgende Weise:
- Nicht abwärtskompatible API-Ergänzungen: Wenn eine neue Funktion eingeführt wird, wird sie Teil einer öffentlichen Kernschnittstelle (z. B.
A2uiComponentoderA2uiCatalog) mit einer Standardimplementierung. So können die Komponenten Ihrer App weiterhin ohne Änderungen kompiliert werden und funktionieren. - Nicht abwärtskompatible Änderungen führen dazu, dass ältere Schnittstellen eingestellt werden: Wenn bei einem zukünftigen Protokollupdate eine nicht abwärtskompatible Änderung eingeführt wird, werden alte nicht abwärtskompatible Schnittstellen (z. B.
A2uiComponent) eingestellt und neue Schnittstellen wieA2uiComponentV2werden eingeführt und parallel unterstützt.
Versionskatalog und Komponentenschemas
Eine Katalogschemadefinition ist einer bestimmten Protokollversion zugeordnet. Wenn sich das Protokoll weiterentwickelt, wird auch die Katalogdefinition entsprechend weiterentwickelt und die Version wird erhöht. Komponentenimplementierungen für diese „nächste“ Version können die aktualisierten Renderer-APIs verwenden.
Damit die Migrationen nahtlos erfolgen können, kann Ihr Client mehrere unterstützte Katalogversionen deklarieren, die der Agent während der Aushandlungsphase der Funktion erhält.