โปรแกรมแสดงผลจากตัวแทนไปยัง UI สำหรับ Jetpack Compose (A2UI)

ตัวแสดงผล 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 ของโปรแกรมแสดงผลที่อัปเดตแล้วได้

เพื่อช่วยให้การย้ายข้อมูลเป็นไปอย่างราบรื่น ลูกค้าของคุณสามารถประกาศแคตตาล็อกเวอร์ชันที่รองรับหลายเวอร์ชัน ซึ่งเอเจนต์จะได้รับในระหว่างขั้นตอนการเจรจาความสามารถ