ตัวแสดงผล Agent-to-UI (A2UI) ของ Jetpack Compose มีการใช้งานโปรโตคอล A2UI ซึ่งช่วยให้ AI Agent สร้างอินเทอร์เฟซผู้ใช้แบบอินเทอร์แอกทีฟที่สมบูรณ์ซึ่งแสดงผลคอมโพเนนต์ Compose แบบเนทีฟได้โดยไม่ต้องเรียกใช้โค้ดที่กำหนดเอง ไลบรารีนี้จะแมปโปรโตคอล JSON ของ A2UI กับองค์ประกอบพื้นฐานของ Compose ขณะเดียวกันก็ยึดมั่นในการจัดการสถานะตามหลักการและมอบ การตอบสนองแบบละเอียดตามระบบสถานะสแนปชอตของ Compose
ไลบรารีตัวแสดงผล A2UI ของ Compose มีความสามารถดังนี้
- การตอบสนองที่มีประสิทธิภาพสูง
(
androidx.a2ui.compose:compose-runtime): อัปเดต UI อย่างละเอียด โดยใช้ประโยชน์จากระบบสถานะของ Compose Snapshot เพื่อให้มั่นใจว่า เฉพาะคอมโพเนนต์ที่ได้รับผลกระทบจากการอัปเดตเอเจนต์การสตรีมหรือการโต้ตอบของผู้ใช้เท่านั้น ที่จะได้รับการคอมโพสใหม่ - API ของคอมโพเนนต์และการปรับแต่งที่ยืดหยุ่น
(
androidx.a2ui.compose:compose-ui): มีรูปแบบที่มีโครงสร้างสำหรับ การกำหนดแคตตาล็อกของการติดตั้งใช้งานคอมโพเนนต์ที่แมปสคีมาโปรโตคอล JSON กับ UI ของ Compose แบบเนทีฟ ซึ่งช่วยให้คุณสร้างคอมโพเนนต์ที่ รองรับการแสดงผลแบบค่อยๆ แสดง สถานะการโหลดที่กำหนดเองของคอมโพเนนต์ย่อย การเปลี่ยนภาพเคลื่อนไหว และการเชื่อมโยงข้อมูลแบบ 2 ทางที่สามารถส่งข้อมูลกลับไปยัง เอเจนต์ได้ - แกนหลักที่ไม่ขึ้นอยู่กับระบบการออกแบบ: ทำให้เลเยอร์การแสดงผล UI และเลเยอร์รันไทม์ ไม่ขึ้นอยู่กับระบบการออกแบบที่เฉพาะเจาะจง ซึ่งช่วยให้คุณสร้างแคตตาล็อกที่กำหนดเอง สำหรับระบบการออกแบบของแอป หรือใช้แคตตาล็อกพื้นฐานที่ให้มาได้
- การจัดการการหลอนของ AI อย่างราบรื่น (
androidx.a2ui:a2ui-modelและandroidx.a2ui:a2ui-engine): ให้การตรวจสอบความถูกต้องของสคีมาเพื่อ สกัดกั้นเพย์โหลดที่มีรูปแบบไม่ถูกต้องก่อนที่จะไปถึงโมเดลสถานะ การจัดการข้อผิดพลาดอย่างราบรื่น ผ่านสถานะข้อผิดพลาดของคอมโพเนนต์ และการรายงานข้อผิดพลาดอัตโนมัติ ไปยังตัวแทนเพื่อการแก้ไขด้วยตนเอง - แคตตาล็อกพื้นฐานในตัว
(
androidx.compose.material3:material3-a2ui): มีการติดตั้งใช้งานแคตตาล็อกพื้นฐานที่พร้อมใช้งาน โดยใช้คอมโพเนนต์ Material 3 ซึ่งรองรับ การแสดงผลแบบค่อยเป็นค่อยไปและการกำหนดธีม Material บนตัวแสดงผล Compose
สถาปัตยกรรมระดับสูง
อินเทอร์เฟซ A2UI ทุกรายการขับเคลื่อนโดยแคตตาล็อกคอมโพเนนต์ แคตตาล็อกทำหน้าที่เป็นสัญญาที่กำหนดองค์ประกอบ UI พร็อพเพอร์ตี้ และฟังก์ชันเฉพาะที่พร้อมใช้งานสำหรับเอเจนต์ แทนที่จะให้เอเจนต์สร้างโค้ด UI ที่กำหนดเองหรือสร้างคอมโพเนนต์ที่ไม่ได้ลงทะเบียน แคตตาล็อกจะประกาศคอมโพเนนต์ ส่วน เอเจนต์จะใช้คอมโพเนนต์เหล่านั้นเพื่อสร้างอินเทอร์เฟซผู้ใช้
เพื่อรองรับโมเดลนี้ ตัวแสดงผล A2UI ของ Compose จะแยกแกนหลัก
เครื่องมือแสดงผลที่ไม่ขึ้นกับระบบการออกแบบออกจากแคตตาล็อกการใช้งานจริง
ในอาร์ติแฟกต์ Jetpack ที่อธิบายไว้ก่อนหน้านี้ และมี API การทดสอบเฉพาะใน androidx.a2ui.compose:compose-ui-testing
การพัฒนาโปรโตคอลและความเข้ากันได้ของ API
ปัจจุบันตัวแสดงผล A2UI ของ Compose รองรับเวอร์ชัน 0.9.1 ของ ข้อกำหนด A2UI
เลเยอร์ UI (androidx.a2ui.compose:compose-ui) และเลเยอร์รันไทม์
(androidx.a2ui.compose:compose-runtime) มีพื้นผิว API สำหรับ
แอปและแคตตาล็อกคอมโพเนนต์ของคุณ ขณะที่เลเยอร์ข้อมูลพื้นฐาน
(androidx.a2ui:a2ui-model และ androidx.a2ui:a2ui-engine) จะจัดการการแยกวิเคราะห์และการประมวลผลข้อความที่เฉพาะเจาะจงกับเวอร์ชันโปรโตคอล เนื่องจากไลบรารีเหล่านี้เป็นส่วนหนึ่งของ AndroidX จึงมีกฎความเข้ากันได้ของไบนารีที่เข้มงวด ตัวอย่างเช่น หลังจากที่ API สาธารณะมีเวอร์ชันเสถียร 1.0.0 แล้ว จะไม่มีการเปลี่ยนแปลงที่ไม่เข้ากันกับเวอร์ชันก่อนหน้าในส่วนของ API สาธารณะ เช่น คลาสและอินเทอร์เฟซ
ตัวแสดงผล A2UI ของ Compose ใช้กลยุทธ์ต่อไปนี้เพื่อรองรับการพัฒนาโปรโตคอล
พัฒนา API ของ UI และตัวแสดงผลรันไทม์
เมื่อโปรโตคอล A2UI พัฒนาขึ้นหรือเพิ่มความสามารถใหม่ๆ API ของเครื่องมือแสดงผลจะรองรับ การเปลี่ยนแปลงเหล่านั้นผ่านแนวทางต่อไปนี้
- การเพิ่ม API ที่ไม่ทำให้เกิดการเปลี่ยนแปลงที่ทำให้ใช้งานร่วมกันไม่ได้: เมื่อมีการเปิดตัวความสามารถใหม่ ความสามารถดังกล่าวจะกลายเป็นส่วนหนึ่งของอินเทอร์เฟซสาธารณะหลัก (เช่น
A2uiComponentหรือA2uiCatalog) พร้อมการติดตั้งใช้งานเริ่มต้น ซึ่งจะช่วยให้คอมโพเนนต์ของแอป คอมไพล์และทำงานต่อไปได้โดยไม่ต้องแก้ไข - การเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้องจะทำให้เลิกใช้งานอินเทอร์เฟซรุ่นเก่า: หากการอัปเดตโปรโตคอลในอนาคตทำให้เกิดการเปลี่ยนแปลงที่ไม่เข้ากัน ระบบจะเลิกใช้งานอินเทอร์เฟซเก่าที่ไม่เข้ากัน (เช่น
A2uiComponent) และจะเปิดตัวอินเทอร์เฟซใหม่ เช่นA2uiComponentV2พร้อมทั้งรองรับอินเทอร์เฟซเก่า
แคตตาล็อกเวอร์ชันและสคีมาคอมโพเนนต์
คำจำกัดความของสคีมาแคตตาล็อกจะเชื่อมโยงกับโปรโตคอลเวอร์ชันที่เฉพาะเจาะจง เมื่อโปรโตคอลมีการพัฒนา คำจำกัดความของแคตตาล็อกก็จะพัฒนาตามไปด้วยและ อัปเดตเวอร์ชัน การติดตั้งใช้งานคอมโพเนนต์สำหรับเวอร์ชัน "ถัดไป" นี้สามารถใช้ API ของโปรแกรมแสดงผลที่อัปเดตแล้วได้
เพื่อช่วยให้การย้ายข้อมูลเป็นไปอย่างราบรื่น ลูกค้าของคุณสามารถประกาศแคตตาล็อกเวอร์ชันที่รองรับหลายเวอร์ชัน ซึ่งเอเจนต์จะได้รับในระหว่างขั้นตอนการเจรจาความสามารถ