Jetpack Compose के लिए एजेंट-टू-यूआई रेंडरर (A2UI)

Jetpack Compose agent-to-UI (A2UI) रेंडरर, A2UI प्रोटोकॉल को लागू करता है. इससे एआई एजेंट, बेहतर और इंटरैक्टिव यूज़र इंटरफ़ेस जनरेट कर पाते हैं. ये यूज़र इंटरफ़ेस, नेटिव Compose कॉम्पोनेंट रेंडर करते हैं. साथ ही, ये किसी भी कोड को एक्ज़ीक्यूट नहीं करते. यह लाइब्रेरी, A2UI JSON प्रोटोकॉल को Compose प्रिमिटिव पर मैप करती है. साथ ही, इडियोमैटिक स्टेट मैनेजमेंट का पालन करती है और Compose स्नैपशॉट स्टेट सिस्टम के आधार पर, ज़्यादा सटीक तरीके से प्रतिक्रिया देने की सुविधा देती है.

Compose A2UI रेंडरर लाइब्रेरी में ये सुविधाएं मिलती हैं:

  • बेहतरीन परफ़ॉर्मेंस वाली प्रतिक्रिया (androidx.a2ui.compose:compose-runtime): Compose Snapshot स्टेट सिस्टम का इस्तेमाल करके, यूज़र इंटरफ़ेस (यूआई) को ज़्यादा बारीकी से अपडेट करता है. इससे यह पक्का होता है कि स्ट्रीमिंग एजेंट के अपडेट या उपयोगकर्ता के इंटरैक्शन से प्रभावित होने वाले कॉम्पोनेंट को ही फिर से कंपोज़ किया जाए.
  • फ़्लेक्सिबल कॉम्पोनेंट एपीआई और पसंद के मुताबिक बनाना (androidx.a2ui.compose:compose-ui): यह कॉम्पोनेंट लागू करने के कैटलॉग को तय करने के लिए, एक स्ट्रक्चर्ड पैटर्न उपलब्ध कराता है. यह JSON प्रोटोकॉल स्कीमा को आपके नेटिव Compose यूज़र इंटरफ़ेस (यूआई) पर मैप करता है. इससे ऐसे कॉम्पोनेंट बनाए जा सकते हैं जो प्रोग्रेसिव रेंडरिंग, सबकॉम्पोनेंट की कस्टम लोडिंग स्टेट, ऐनिमेशन वाले ट्रांज़िशन, और दोनों तरफ़ से डेटा बाइंडिंग की सुविधा देते हैं. ये कॉम्पोनेंट, एजेंट को डेटा वापस भेज सकते हैं.
  • डिज़ाइन-सिस्टम से अलग कोर: यह रनटाइम और यूज़र इंटरफ़ेस (यूआई) रेंडरिंग लेयर को किसी भी डिज़ाइन सिस्टम से अलग रखता है. इससे आपको अपने ऐप्लिकेशन के डिज़ाइन सिस्टम के लिए कस्टम कैटलॉग बनाने या उपलब्ध कराए गए बेसिक कैटलॉग को अपनाने में मदद मिलती है.
  • एआई के बनावटी तथ्यों वाली जानकारी को बेहतर तरीके से मैनेज करना (androidx.a2ui:a2ui-model और androidx.a2ui:a2ui-engine): यह स्कीमा की पुष्टि करने की सुविधा देता है, ताकि गलत तरीके से बनाए गए पेलोड को स्टेट मॉडल तक पहुंचने से पहले रोका जा सके. साथ ही, कॉम्पोनेंट की गड़बड़ी की स्थितियों के ज़रिए गड़बड़ी को बेहतर तरीके से मैनेज किया जा सके. इसके अलावा, यह गड़बड़ी की जानकारी को एजेंट को अपने-आप भेजता है, ताकि वह खुद ही गड़बड़ी को ठीक कर सके.
  • पहले से मौजूद बेसिक कैटलॉग (androidx.compose.material3:material3-a2ui): इसमें Material 3 कॉम्पोनेंट का इस्तेमाल करके, बेसिक कैटलॉग को लागू करने की सुविधा पहले से मौजूद होती है. यह Compose रेंडरर के ऊपर, प्रोग्रेसिव रेंडरिंग और Material थीमिंग की सुविधा देता है.

हाई-लेवल आर्किटेक्चर

हर A2UI इंटरफ़ेस, कॉम्पोनेंट कैटलॉग से चलता है. एजेंट को यूज़र इंटरफ़ेस (यूआई) का कोई भी कोड जनरेट करने या बिना रजिस्टर किए गए कॉम्पोनेंट बनाने के बजाय, कैटलॉग एक समझौते की तरह काम करता है. इसमें यूज़र इंटरफ़ेस (यूआई) के खास एलिमेंट, प्रॉपर्टी, और एजेंट के लिए उपलब्ध फ़ंक्शन तय किए जाते हैं. कैटलॉग कॉम्पोनेंट के बारे में बताता है. एजेंट, इनका इस्तेमाल यूज़र इंटरफ़ेस बनाने के लिए करता है.

इस मॉडल के साथ काम करने के लिए, Compose A2UI रेंडरर, रेंडरिंग इंजन को अलग करता है. यह इंजन, डिज़ाइन सिस्टम से अलग होता है. साथ ही, यह Jetpack के उन आर्टफ़ैक्ट में कैटलॉग को लागू करने के लिए होता है जिनके बारे में ऊपर बताया गया है. इसके अलावा, यह androidx.a2ui.compose:compose-ui-testing में टेस्टिंग के लिए खास एपीआई उपलब्ध कराता है.

प्रोटोकॉल में बदलाव और एपीआई के साथ काम करने की सुविधा

फ़िलहाल, Compose A2UI रेंडरर, A2UI स्पेसिफ़िकेशन के वर्शन 0.9.1 के साथ काम करता है.

यूज़र इंटरफ़ेस (androidx.a2ui.compose:compose-ui) और रनटाइम लेयर (androidx.a2ui.compose:compose-runtime) आपके ऐप्लिकेशन और कॉम्पोनेंट कैटलॉग के लिए एपीआई उपलब्ध कराती हैं. वहीं, डेटा लेयर (androidx.a2ui:a2ui-model और androidx.a2ui:a2ui-engine) प्रोटोकॉल-वर्शन के हिसाब से पार्सिंग और मैसेज प्रोसेसिंग को मैनेज करती है. ये लाइब्रेरी AndroidX का हिस्सा हैं. इसलिए, इन पर बाइनरी कंपैटिबिलिटी के सख्त नियम लागू होते हैं. उदाहरण के लिए, जब सार्वजनिक एपीआई, स्टेबल वर्शन 1.0.0 पर पहुंच जाता है, तो सार्वजनिक एपीआई के इंटरफ़ेस, जैसे कि क्लास और इंटरफ़ेस में कोई बड़ा बदलाव नहीं होता है.

Compose A2UI रेंडरर, प्रोटोकॉल के विकास में मदद करने के लिए इन रणनीतियों का इस्तेमाल करता है.

यूज़र इंटरफ़ेस और रेंडरर एपीआई को बेहतर बनाना

A2UI प्रोटोकॉल में बदलाव होने या नई सुविधाएं जुड़ने पर, रेंडरर एपीआई इन बदलावों के साथ काम करते हैं. इसके लिए, ये तरीके अपनाए जाते हैं:

  • एपीआई में ऐसे बदलाव जो मौजूदा एपीआई के साथ काम करते हैं: जब कोई नई सुविधा लॉन्च की जाती है, तो यह डिफ़ॉल्ट तौर पर लागू होने वाले मुख्य सार्वजनिक इंटरफ़ेस (जैसे कि A2uiComponent या A2uiCatalog) का हिस्सा बन जाती है. इससे आपके ऐप्लिकेशन के कॉम्पोनेंट, बिना किसी बदलाव के कंपाइल और काम करते रहते हैं.
  • बदलावों की वजह से, पुराने इंटरफ़ेस काम नहीं करते: अगर प्रोटोकॉल के आने वाले अपडेट में कोई ऐसा बदलाव होता है जो काम नहीं करता, तो पुराने इंटरफ़ेस (जैसे कि A2uiComponent) काम नहीं करते. साथ ही, नए इंटरफ़ेस (जैसे कि A2uiComponentV2) लॉन्च किए जाते हैं और उनके साथ काम करते हैं.

वर्शन कैटलॉग और कॉम्पोनेंट स्कीमा

कैटलॉग स्कीमा की परिभाषा, किसी खास प्रोटोकॉल वर्शन से जुड़ी होती है. प्रोटोकॉल में बदलाव होने पर, कैटलॉग की परिभाषा में भी बदलाव होता है. साथ ही, इसका वर्शन अपडेट हो जाता है. इस "अगले" वर्शन के लिए कॉम्पोनेंट लागू करने वाले लोग, अपडेट किए गए रेंडरर एपीआई का इस्तेमाल कर सकते हैं.

आसानी से माइग्रेट करने के लिए, आपका क्लाइंट सहायता देने वाले कैटलॉग के कई वर्शन डिक्लेयर कर सकता है. एजेंट को ये वर्शन, क्षमता से जुड़ी बातचीत के दौरान मिलते हैं.