Google przedstawia A2UI: nowy protokół dla interfejsów sterowanych przez agentów SI
Współczesne agenty SI, choć potężne, często ograniczają interakcję z użytkownikiem do tekstowych konwersacji. To podejście, choć intuicyjne w prostych przypadkach, staje się uciążliwe przy bardziej złożonych zadaniach, takich jak rezerwacja stolika w restauracji czy wypełnianie formularzy. Długie wymiany zdań i wielokrotne pytania zwrotne obniżają komfort użytkowania i wydajność. Google dostrzegło ten problem i jako rozwiązanie proponuje A2UI (Agent-to-User Interface) – specyfikację i zestaw bibliotek o otwartym kodzie źródłowym, której celem jest umożliwienie agentom SI budowania dynamicznych interfejsów użytkownika.
A2UI to otwarty standard, który pozwala agentom „mówić” interfejsem użytkownika, nie generując przy tym kodu HTML czy JavaScript. Zamiast tego, agent wysyła odpowiedź A2UI w postaci ładunku JSON. Ten ładunek opisuje zestaw komponentów, ich właściwości oraz model danych. Aplikacja kliencka, odbierając tę deklaratywną specyfikację, mapuje każdy komponent do swoich natywnych widżetów, niezależnie od używanego frameworka – czy to Angulara, Fluttera, Reacta czy SwiftUI. To eliminuje potrzebę wysyłania kodu wykonywalnego, co jest kluczowe dla bezpieczeństwa i spójności wizualnej.
Kwestia ta staje się jeszcze bardziej krytyczna w architekturach wieloagentowych, gdzie agenty z różnych organizacji muszą ze sobą współpracować. Dawniej rozwiązaniem było osadzanie treści w iframe’ach, co wiązało się jednak z obciążeniem, brakiem spójności z aplikacją-hostem oraz ryzykiem bezpieczeństwa. A2UI oferuje format danych, który jest bezpieczny jak dane, ale jednocześnie wystarczająco ekspresyjny, aby opisać złożone układy interfejsów.
Kluczowe filary projektu A2UI to bezpieczeństwo, łatwość integracji z modelami językowymi (LLM) oraz przenośność. Bezpieczeństwo osiągnięto poprzez uczynienie A2UI deklaratywnym formatem danych, a nie kodem wykonywalnym. Klient utrzymuje katalog zaufanych komponentów, takich jak przyciski czy pola tekstowe, a agent może odwoływać się tylko do typów z tej listy. Minimalizuje to ryzyko wstrzyknięcia złośliwego UI i wykonania arbitralnego skryptu. Struktura A2UI, przedstawiająca interfejs jako płaską listę komponentów z identyfikatorami, ułatwia generowanie i aktualizowanie interfejsów przez modele językowe, wspierając przy tym strumieniowe aktualizacje. Dzięki temu agenci mogą dynamicznie dostosowywać widoki w miarę postępu konwersacji, bez potrzeby generowania całego drzewa JSON od nowa. Protokół jest także niezależny od frameworków, co umożliwia renderowanie tej samej logiki agenta na różnych platformach – webowych, mobilnych i desktopowych.
Architektura A2UI rozdziela proces na generowanie, transport i renderowanie. Użytkownik wysyła wiadomość do agenta, który następnie, często z pomocą modelu SI takiego jak Gemini, generuje odpowiedź A2UI, opisującą komponenty, układ i powiązania danych. Te wiadomości strumieniowo trafiają do klienta, który używa biblioteki renderującej A2UI. Biblioteka ta analizuje ładunek i przekształca typy komponentów w konkretne widżety w kodzie hosta. Działania użytkownika, takie jak kliknięcia przycisków, są przesyłane z powrotem do agenta jako zdarzenia, co pozwala na iteracyjne aktualizowanie interfejsu w czasie rzeczywistym.
A2UI to nie tylko teoretyczna koncepcja. Projekt jest już w fazie publicznej wersji zapoznawczej (v0.8) i został wydany na licencji Apache 2.0. Dostępne są referencyjne narzędzia do renderowania, przykłady szybkiego startu oraz integracje produkcyjne w projektach takich jak Opal, Gemini Enterprise i Flutter GenUI. Oznacza to, że inżynierowie budujący aplikacje agentowe mogą już teraz korzystać z tej technologii, otwierając nowy rozdział w projektowaniu interfejsów użytkownika opartych na sztucznej inteligencji.
