Jetpack Compose용 에이전트-UI 렌더러 (A2UI)

Jetpack Compose 에이전트-UI (A2UI) 렌더러는 A2UI 프로토콜을 구현하여 AI 에이전트가 임의의 코드를 실행하지 않고도 네이티브 Compose 구성요소를 렌더링하는 풍부한 대화형 사용자 인터페이스를 생성할 수 있도록 지원합니다. 이 라이브러리는 관용적인 상태 관리를 준수하면서 A2UI JSON 프로토콜을 Compose 기본 요소에 매핑하고 Compose 스냅샷 상태 시스템을 기반으로 세부적인 반응성을 제공합니다.

Compose A2UI 렌더러 라이브러리는 다음 기능을 제공합니다.

  • 고성능 반응성(androidx.a2ui.compose:compose-runtime): Compose 스냅샷 상태 시스템을 활용하여 세부적인 UI 업데이트를 제공하므로 스트리밍 에이전트 업데이트나 사용자 상호작용의 영향을 받는 특정 구성요소만 리컴포즈됩니다.
  • 유연한 구성요소 API 및 맞춤설정(androidx.a2ui.compose:compose-ui): JSON 프로토콜 스키마를 네이티브 Compose UI에 매핑하는 구성요소 구현 카탈로그를 정의하기 위한 구조화된 패턴을 제공합니다. 이를 통해 점진적 렌더링, 하위 구성요소의 맞춤 로드 상태, 애니메이션 전환, 에이전트에 데이터를 다시 전송할 수 있는 양방향 데이터 바인딩을 지원하는 구성요소를 빌드할 수 있습니다.
  • 디자인 시스템에 구애받지 않는 코어: 런타임과 UI 렌더링 레이어를 특정 디자인 시스템과 독립적으로 유지하여 앱의 디자인 시스템을 위한 맞춤 카탈로그를 빌드하거나 제공된 기본 카탈로그를 채택할 수 있습니다.
  • AI 할루시네이션의 원활한 처리 (androidx.a2ui:a2ui-modelandroidx.a2ui:a2ui-engine): 상태 모델에 도달하기 전에 형식이 잘못된 페이로드를 차단하는 스키마 검사, 구성요소 오류 상태를 통한 원활한 오류 처리, 자체 수정을 위해 상담사에게 자동 오류 보고를 제공합니다.
  • 기본 제공 기본 카탈로그(androidx.compose.material3:material3-a2ui): Material 3 구성요소를 사용하여 즉시 사용할 수 있는 기본 카탈로그 구현을 제공하며, Compose 렌더러를 기반으로 점진적 렌더링과 Material 테마를 지원합니다.

상위 수준 아키텍처

모든 A2UI 인터페이스는 구성요소 카탈로그에 의해 구동됩니다. 에이전트가 임의의 UI 코드를 생성하거나 등록되지 않은 구성요소를 발명하는 대신 카탈로그는 에이전트가 사용할 수 있는 특정 UI 요소, 속성, 함수를 정의하는 계약 역할을 합니다. 카탈로그는 구성요소를 선언하고 에이전트는 이를 사용하여 사용자 인터페이스를 구성합니다.

이 모델을 지원하기 위해 Compose A2UI 렌더러는 앞에서 설명한 Jetpack 아티팩트 전반에서 핵심, 디자인 시스템에 구애받지 않는 렌더링 엔진을 구체적인 카탈로그 구현과 분리하고 androidx.a2ui.compose:compose-ui-testing에서 전용 테스트 API를 제공합니다.

프로토콜 발전 및 API 호환성

Compose A2UI 렌더러는 현재 A2UI 사양버전 0.9.1을 지원합니다.

UI (androidx.a2ui.compose:compose-ui) 및 런타임 레이어(androidx.a2ui.compose:compose-runtime)는 앱과 구성요소 카탈로그에 API 노출 영역을 제공하고 기본 데이터 레이어(androidx.a2ui:a2ui-modelandroidx.a2ui:a2ui-engine)는 프로토콜 버전별 파싱과 메시지 처리를 관리합니다. 이러한 라이브러리는 AndroidX의 일부이므로 엄격한 바이너리 호환성 규칙이 적용됩니다. 예를 들어 공개 API가 안정적인 버전 1.0.0에 도달한 후에는 클래스 및 인터페이스와 같은 공개 API 노출 영역에 브레이킹 체인지가 없습니다.

Compose A2UI 렌더러는 다음 전략을 사용하여 프로토콜 진화를 지원합니다.

UI 및 런타임 렌더러 API 발전

A2UI 프로토콜이 발전하거나 새로운 기능을 추가함에 따라 렌더러 API는 다음 접근 방식을 통해 이러한 변경사항을 지원합니다.

  • 호환성이 깨지지 않는 API 추가: 새로운 기능이 도입되면 기본 구현과 함께 핵심 공개 인터페이스 (예: A2uiComponent 또는 A2uiCatalog)의 일부가 됩니다. 이렇게 하면 앱의 구성요소가 수정 없이 계속 컴파일되고 작동할 수 있습니다.
  • 브레이킹 체인지로 인해 이전 인터페이스가 지원 중단됨: 향후 프로토콜 업데이트에서 호환되지 않는 변경사항이 도입되면 호환되지 않는 이전 인터페이스(예: A2uiComponent)는 지원 중단되고 새 인터페이스(예: A2uiComponentV2)가 도입되어 함께 지원됩니다.

버전 카탈로그 및 구성요소 스키마

카탈로그 스키마 정의는 특정 프로토콜 버전과 연결됩니다. 프로토콜이 발전하면 카탈로그 정의도 이에 따라 발전하고 버전이 올라갑니다. 이 '다음' 버전의 구성요소 구현은 업데이트된 렌더러 API를 사용할 수 있습니다.

원활한 이전을 지원하기 위해 클라이언트는 기능 협상 단계에서 에이전트가 가져오는 지원되는 카탈로그 버전을 여러 개 선언할 수 있습니다.