इंटेलिजेंट Android ऐप्लिकेशन बनाना: क्लाउड और हाइब्रिड इन्फ़रेंस
8 मिनट में पढ़ा जा सकता है
"इंटेलिजेंट Android ऐप्लिकेशन बनाना" ब्लॉग पोस्ट सीरीज़ में आपका फिर से स्वागत है. इस सीरीज़ में, हम एक सामान्य Android ऐप्लिकेशन को उपयोगकर्ता की दिलचस्पी के हिसाब से बनाए गए, इंटेलिजेंट, और एजेंटिक अनुभव में बदलते हैं. हमने पिछली पोस्ट में, ML Kit के Prompt API का इस्तेमाल करके, Gemini Nano की मदद से उपयोगकर्ता के डिवाइस पर स्मार्ट सुविधाएं बनाने का तरीका बताया था.
इस पोस्ट में, हम देखेंगे कि क्लाउड पर होस्ट की गई और हाइब्रिड एआई सुविधाएं बनाने के लिए, Firebase AI Logic का इस्तेमाल कैसे किया जा सकता है:
- जवाबों को असल दुनिया के कॉन्टेक्स्ट के हिसाब से तैयार करना
- हाइब्रिड इन्फ़्रेंस का इस्तेमाल करके, क्लाउड और लोकल एक्ज़ीक्यूशन के बीच अनुरोधों को डाइनैमिक तरीके से रूट करना
- कस्टम रूटिंग सिस्टम की मदद से कॉन्टेंट का अनुवाद करना
कभी-कभी, किसी इस्तेमाल के उदाहरण के लिए, ऐसे एआई मॉडल की ज़रूरत होती है जिनके पास दुनिया भर की ज़्यादा जानकारी हो, बड़ी कॉन्टेक्स्ट विंडो हो या जटिल क्वेरी को हैंडल करने की क्षमता हो. ऐसे मामलों में, हम क्लाउड मॉडल का इस्तेमाल कर सकते हैं.
कभी-कभी, आपको दोनों दुनिया का सबसे अच्छा अनुभव चाहिए होता है: लागत कम करने के लिए उपलब्ध होने पर हाइब्रिड अनुमान को उपयोगकर्ता के डिवाइस पर चलाना, जबकि सभी डिवाइसों के लिए अनुकूलता सुनिश्चित करने के लिए क्लाउड पर वापस जाना.
आइए, देखते हैं कि हमने Jetpacker में क्लाउड और हाइब्रिड की तीन सुविधाओं को कैसे लागू किया:
- संग्रहालय में काम करने वाला एक असिस्टेंट, जो वेब पर उपलब्ध भरोसेमंद स्रोतों से जानकारी लेता है
- रेस्टोरेंट की समीक्षा लिखने के लिए हाइब्रिड सुविधा
- होटल के लिए सहायता चैट की सुविधा. इसमें कस्टम-रूट की गई लाइव अनुवाद की सुविधा शामिल है.
अप-टू-डेट जानकारी के लिए, एलएलएम ग्राउंडिंग का इस्तेमाल करनाएलएलएम ग्राउंडिंग की सुविधा वाला म्यूज़ियम असिस्टेंट चैटबॉट
म्यूज़ियम असिस्टेंट एक इंटरैक्टिव चैटबॉट है. इसे लोगों को म्यूज़ियम जाने का प्लान बनाने में मदद करने के लिए डिज़ाइन किया गया है. इससे लोगों को खास प्रदर्शनियों, खुलने के मौजूदा समय, टिकट की कीमत वगैरह के बारे में अप-टू-डेट जानकारी मिलती है.
एआई की सुविधाएं बनाते समय, मॉडल से ताज़ा, सटीक, और असल दुनिया की जानकारी के साथ जवाब पाना एक आम चुनौती है. क्लाउड मॉडल के पास दुनिया भर की जानकारी होती है. हालांकि, हो सकता है कि उन्हें सीज़नल प्रदर्शनियों या आज के दिन के कारोबार के खुले होने के समय के बारे में जानकारी न हो.
इस अंतर को कम करने के लिए, हम ग्राउंडिंग तकनीकों का इस्तेमाल कर सकते हैं. इससे मॉडल की कॉन्टेक्स्ट विंडो में ज़्यादा कॉन्टेक्स्ट जोड़ा जा सकता है. Firebase AI Logic SDK में तीन तरह की ग्राउंडिंग की सुविधा उपलब्ध है:
- यूआरएल ग्राउंडिंग: किसी वेबपेज के कॉन्टेंट का इस्तेमाल करके जवाब देना. उदाहरण के लिए, टिकट की मौजूदा कीमतें या संग्रहालय के नियम.
- Google Search से मिली जानकारी का इस्तेमाल करना: मॉडल को Google Search के रीयल-टाइम इंडेक्स से क्वेरी करने की अनुमति देना, ताकि उसे अप-टू-डेट जानकारी मिल सके.
- Maps grounding: Google Maps के लोकेशन डेटा का इस्तेमाल करना.
Jetpacker में, चालू की गई सुविधा के फ़्लैग के आधार पर उपलब्ध टूल को डाइनैमिक तरीके से बनाया जाता है. साथ ही, Firebase AI SDK का इस्तेमाल करके जनरेटिव मॉडल को शुरू किया जाता है:
// implementation("com.google.firebase:firebase-ai-logic") private var toolList = mutableListOf<Tool>() init { if (ENABLE_SEARCH_GROUNDING) { toolList.add(Tool.googleSearch()) } if (ENABLE_URL_GROUNDING) { toolList.add(Tool.urlContext()) } } private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash", systemInstruction = content { text("You are a helpful museum assistant answering questions about a museum. Use plain text.") }, tools = toolList )
जब कोई उपयोगकर्ता, Assistant से कोई सवाल पूछता है और यूआरएल ग्राउंडिंग की सुविधा चालू होती है, तो हम सीधे तौर पर म्यूज़ियम के संसाधन के यूआरएल को प्रॉम्प्ट में जोड़ देते हैं:
val groundingText = if (FeatureFlags.ENABLE_URL_GROUNDING) { "\n If the following message above is about the rules and terms to visit Le Louvre, " + "if needed answer this urls ${urlList.joinToString()}" } else { "" } val prompt = "$text $groundingText" var response = chat.sendMessage(prompt)
हाइब्रिड इन्फ़रेंस: Maps के डीप लिंक के साथ डिवाइस पर समीक्षा जनरेट करना
एआई के हर टास्क के लिए, क्लाउड-आधारित मॉडल की ज़रूरत नहीं होती. साथ ही, हर डिवाइस ऑनलाइन नहीं होता. डेवलपर को लेटेन्सी, लागत, और ऑफ़लाइन उपलब्धता को बैलेंस करने में मदद करने के लिए, हमने हाल ही में Firebase API for Hybrid Inference लॉन्च किया है.
Jetpacker में, रेस्टोरेंट की समीक्षा सुविधा की मदद से, लोग कुछ विषयों की समीक्षा कर सकते हैं. साथ ही, यह सुविधा अपने-आप एक समीक्षा का ड्राफ़्ट तैयार कर देती है. सभी उपयोगकर्ताओं के लिए इस सुविधा को चालू करने के लिए, हम Gemini Nano की मदद से स्थानीय तौर पर प्रोसेस करने को प्राथमिकता देते हैं. साथ ही, उन डिवाइसों पर क्लाउड मॉडल का इस्तेमाल करते हैं जिन पर Gemini Nano काम नहीं करता.
// implementation("com.google.firebase:firebase-ai-logic") // implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta03") // Initialize the model with hybrid routing configuration val reviewModel = Firebase.ai.generativeModel( modelName = "gemini-3.1-flash-lite", onDeviceConfig = OnDeviceConfig( inferenceMode = InferenceMode.PREFER_ON_DEVICE ) )
हाइब्रिड इन्फ़रेंस एपीआई में, राउटिंग के चार अलग-अलग मोड इस्तेमाल किए जा सकते हैं:
- PREFER_ON_DEVICE: इसमें, डिवाइस पर मौजूद डेटा को प्रोसेस करने को प्राथमिकता दी जाती है. अगर Gemini Nano उपलब्ध नहीं है, तो क्लाउड का इस्तेमाल किया जाता है.
- PREFER_IN_CLOUD: यह क्लाउड पर प्रोसेस करने को प्राथमिकता देता है. अगर डिवाइस ऑफ़लाइन हो जाता है, तो यह उपयोगकर्ता के डिवाइस पर प्रोसेस करने की सुविधा पर वापस आ जाता है.
- ONLY_ON_DEVICE: इस सेटिंग को चालू करने पर, डिवाइस पर ही कार्रवाई की जा सकती है.
- ONLY_IN_CLOUD: यह विकल्प, सिर्फ़ क्लाउड में एक्ज़ीक्यूट करने की अनुमति देता है.
समीक्षा जनरेट होने के बाद, हम उसे क्लिपबोर्ड पर कॉपी करते हैं. इसके बाद, Google Maps को सीधे तौर पर रेस्टोरेंट के समीक्षा पेज पर खोलने के लिए, इंटेंट का इस्तेमाल करते हैं. इससे लोगों को बेहतर अनुभव मिलता है:
private fun copyAndOpenMapsReview(context: Context, reviewText: String, placeId: String) { val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val clip = ClipData.newPlainText("User Review", reviewText) clipboard.setPrimaryClip(clip) val uri = Uri.parse("https://search.google.com/local/writereview/mobile?placeid=$placeId") val intent = Intent(Intent.ACTION_VIEW, uri).apply { setPackage("com.google.android.apps.maps") } context.startActivity(intent) }
कस्टम हाइब्रिड राउटिंग: होटल के लिए सहायता चैट में, सिमुलेट किए गए पर्सोना के साथ अनुवाद करने की सुविधा
होटल की सहायता टीम से चैट करने की सुविधा इसलिए बनाई गई है, ताकि लोग लॉजिस्टिक्स से जुड़ी जानकारी को फ़ाइनल कर सकें और होटल की जानकारी देख सकें. इस सुविधा में, सिस्टम के निर्देशों का इस्तेमाल करके, स्थानीय भाषा में रिसेप्शनिस्ट असिस्टेंट को कॉन्फ़िगर किया जाता है. निर्देशों में कुछ खास जानकारी देकर, जैसे कि पसंदीदा भाषा और होटल की जानकारी, हम किसी होटल के लिए बातचीत करने वाला पर्सोना सेट अप कर सकते हैं.
private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( systemInstruction = content { text(""" You are a helpful hotel receptionist at $hotelName only speaking $language. Answer politely in $language. The bar closes at 10pm and breakfast is from 7am to 10am. There's someone at the desk 24/7. You can retrieve your luggage from the storage room at the back of the lobby at any time. """) }, modelName = "gemini-3-flash-preview" )
रिसेप्शनिस्ट के जवाब, होटल की स्थानीय भाषा में होते हैं. उदाहरण के लिए, पेरिस में मौजूद होटल ले मेरिडियन के लिए फ़्रेंच भाषा. इसलिए, हमें मैसेज को उपयोगकर्ता की पसंदीदा भाषा में अनुवाद करना होगा.
हाइब्रिड मॉडल, सामान्य राउटिंग की प्राथमिकताओं को कॉन्फ़िगर कर सकते हैं. हालांकि, जटिल स्थितियों के लिए कस्टम राउटिंग लॉजिक की ज़रूरत होती है. Jetpacker में, हम कस्टम रूटिंग स्टैक लागू करते हैं. इसमें इन बातों का ध्यान रखा जाता है:
- भाषा की पहचान करना: उपयोगकर्ता के डिवाइस पर मौजूद ML Kit Language Identification API का इस्तेमाल करके, हम आने वाले मैसेज की भाषा का पता लगा सकते हैं.
- उपयोगकर्ता के डिवाइस पर अनुवाद करने की सुविधा (Gemini Nano): ML Kit के Prompt API की मदद से, हम सामान्य भाषा के जोड़े का अनुवाद सीधे डिवाइस पर कर सकते हैं. इससे बैंडविथ और क्लाउड की लागत बचती है.
- क्लाउड ट्रांसलेशन (Gemini 3 Flash): ज़्यादा मुश्किल भाषाओं के लिए, हम Gemini 3 Flash का इस्तेमाल करते हैं, ताकि बेहतर क्वालिटी में अनुवाद किया जा सके.
// implementation("com.google.android.gms:play-services-mlkit-language-id:17.0.0") // ML Kit for Language Identification (powered by Google Play Services) private val languageIdentifier = LanguageIdentification.getClient() // On-device translator model (prefer Gemini Nano) for translating common language pairs private val hybridTranslationModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash", onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE) ) // Cloud translator model for more complex language pairs private val cloudTranslationModel = Firebase.ai(backend = GenerativeBackend.googleAI()) .generativeModel( modelName = "gemini-3-flash" )
जब किसी मैसेज का अनुवाद करना होता है, तो हम जिस भाषा का अनुवाद करना है उसकी पहचान करते हैं और अपने कस्टम रूटिंग लॉजिक को लागू करते हैं. इसके बाद, उपयोगकर्ता के डिवाइस पर या क्लाउड पर अनुवाद किया जाता है:
fun translateMessage(message: SupportChatMessage) { viewModelScope.launch { // 1. Detect language using ML Kit Language Identification val sourceLang = try { Tasks.await(languageIdentifier.identifyLanguage(message.text)) } catch (e: Exception) { "Undefined" } // 2. Custom routing: we've verified the translation quality for English and Korean with Gemini Nano, and will translate message on-device for those two languages val routeToCloud = sourceLang != "en" && sourceLang != "kr" val prompt = "Translate the following text to $selectedLanguage. Just return the translated sentence: ${message.text}." val (translatedText, routePrefix) = if (routeToCloud) { val result = cloudTranslationModel.generateContent(prompt) result.text to "[Cloud]" } else { val result = hybridTranslationModel.generateContent(prompt) result.text to "[On-Device]" } if (translatedText != null) { _translations.update { current -> current + (message.id to "$routePrefix: $translatedText") } } } }
इस उदाहरण में, कस्टम राउटिंग लॉजिक सिर्फ़ अनुवाद की सोर्स और टारगेट भाषा को ध्यान में रखता है. हालांकि, आपके ऐप्लिकेशन के इस्तेमाल के उदाहरण के आधार पर, राउटिंग लॉजिक को बढ़ाया जा सकता है. इसमें अन्य फ़ैक्टर शामिल किए जा सकते हैं. जैसे, उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का वर्शन, नेटवर्क कनेक्टिविटी, बैटरी की स्थिति वगैरह.
एआई पाइपलाइन को सुरक्षित करना: Firebase App Check
आखिर में, क्लाउड में एआई का इस्तेमाल करने से, एपीआई कुंजी के गलत इस्तेमाल या बिना अनुमति के बिलिंग की संभावनाएं बढ़ जाती हैं. एपीआई कॉल को सुरक्षित बनाने के लिए, हमने Firebase App Check को इंटिग्रेट किया है. इसके लिए, हमने Play Integrity (प्रोडक्शन) और लोकल Debug Provider (लोकल डेवलपमेंट या एम्युलेटर के लिए) दोनों का इस्तेमाल किया है.
JetPackerApplication.kt फ़ाइल में, हम स्टार्टअप के समय डीबग प्रोवाइडर इंस्टॉल करते हैं. साथ ही, पहचान ज़ाहिर किए बिना पुष्टि करने की सुविधा को ट्रिगर करते हैं, ताकि उपयोगकर्ता के लिए सुरक्षित सेशन बनाया जा सके:
// implementation("com.google.firebase:firebase-appcheck-playintegrity") // implementation("com.google.firebase:firebase-appcheck-debug") // implementation("com.google.firebase:firebase-auth") override fun onCreate() { super.onCreate() Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance() ) Firebase.auth.signInAnonymously() }
एम्युलेटर पर स्थानीय तौर पर ऐप्लिकेशन बनाते समय, App Check, logcat में लोकल टोकन सीक्रेट प्रिंट करता है:
Enter this debug secret into the allow list in the Firebase Console: a8c2dd4c-xxxx-xxxx-xxxx-ef6c114ba27e
Firebase कंसोल में रजिस्टर करने के बाद, स्थानीय अनुरोधों की पूरी तरह से पुष्टि की जाती है. साथ ही, App Check से इनकी पुष्टि की जाती है. इससे हमारे बैकएंड की सुरक्षा होती है. साथ ही, हमें ऐप्लिकेशन को स्थानीय तौर पर टेस्ट करने की अनुमति मिलती है.
नतीजा
हमने क्लाउड मॉडल की सुविधाओं (ग्राउंडिंग, सिस्टम के निर्देश) को उपयोगकर्ता के डिवाइस पर मौजूद सुविधाओं (हाइब्रिड राउटिंग, अनुवाद, सुरक्षा के लिए ऐप्लिकेशन की जांच) के साथ मिलाकर, एक ऐसा यात्रा ऐप्लिकेशन बनाया है जो स्मार्ट, सुरक्षित, और ऑफ़लाइन उपलब्ध है.
GitHub पर Jetpacker का पूरा सोर्स कोड देखें. साथ ही, शुरू करने के लिए Firebase का दस्तावेज़ पढ़ें:
Firebase AI Logic का दस्तावेज़
Firebase Hybrid Inference API
ज़्यादा जानें
इस ब्लॉग पोस्ट सीरीज़ के अन्य हिस्से देखें:
पहला हिस्सा: ऐप्लिकेशन के बारे में जानकारी और खास जानकारी.
दूसरा हिस्सा: उपयोगकर्ता के डिवाइस पर मौजूद इंटेलिजेंस. एमएल किट के जेन एआई एपीआई और Gemini Nano के बारे में ज़्यादा जानें. साथ ही, निजता को प्राथमिकता देने वाली सुविधाएँ बनाएँ. जैसे, यात्रा की योजना की खास जानकारी, रसीद पार्स करना, और स्थानीय ऑडियो प्रोसेसिंग.
तीसरा हिस्सा (यह पोस्ट!): हाइब्रिड और क्लाउड रीज़निंग. एलएलएम के जवाबों को Google Maps और वेब कॉन्टेक्स्ट जैसे असल दुनिया के डेटा के आधार पर तैयार करने के लिए, Firebase के एआई लॉजिक का इस्तेमाल करने का तरीका जानें.
चौथा हिस्सा: सिस्टम इंटिग्रेशन. AppFunctions का इस्तेमाल करके, Android के इंटेलिजेंस सिस्टम के साथ इंटिग्रेट करना.
पांचवां हिस्सा (जल्द आ रहा है): ऐप्लिकेशन में एआई एजेंट के वर्कफ़्लो. A2UI और ADK की मदद से, बुकिंग से जुड़ी सभी सुविधाओं को ऐप्लिकेशन में जोड़ें.
क्या आपको Android डेवलपमेंट के बारे में ज़्यादा जानना है? Android Developers को YouTube या LinkedIn पर फ़ॉलो करें!
इस ब्लॉग पोस्ट में दिए गए सभी कोड स्निपेट के लिए, कॉपीराइट से जुड़ा यह नोटिस लागू होता है:
Copyright 2026 Google LLC. SPDX-License-Identifier: Apache-2.0
-
कैसे करें"इंटेलिजेंट Android ऐप्लिकेशन बनाएं" ब्लॉग पोस्ट सीरीज़ में आपका फिर से स्वागत है. इस सीरीज़ में, हम एक सामान्य Android ऐप्लिकेशन को आपकी दिलचस्पी के हिसाब से बनाए गए, इंटेलिजेंट, और एजेंटिक अनुभव में बदलते हैं. हमने अपनी पिछली पोस्ट में Jetpacker के बारे में बताया था. यह एक डेमो ऐप्लिकेशन है, जिसका इस्तेमाल हम इस पूरी सीरीज़ में करेंगे.
Caren Chang • 6 मिनट में पढ़ा जा सकता है -
कैसे करेंJetpacker, तकनीकी तौर पर एक बेहतरीन ऐप्लिकेशन है. हमारी टीम ने इसे इस साल के Google I/O के लिए बनाया है. इसे Antigravity का इस्तेमाल करके बनाया गया है. Jetpacker का मुख्य काम, लोगों को उनके अगले रोमांचक सफ़र की योजना बनाने, उसे एक्सप्लोर करने, और उसका आनंद लेने में मदद करना है.
Jolanda Verhoef • 4 मिनट में पढ़ें -
कैसे करें"इंटेलिजेंट Android ऐप्लिकेशन बनाएं" ब्लॉग पोस्ट सीरीज़ में आपका फिर से स्वागत है. इस सीरीज़ में, हम एक सामान्य Android ऐप्लिकेशन को आपकी दिलचस्पी के हिसाब से बनाए गए, इंटेलिजेंट, और एजेंटिक अनुभव में बदलते हैं. पिछली पोस्ट में, हमने क्लाउड पर होस्ट की गई और हाइब्रिड एआई सुविधाएं बनाने के लिए, Firebase AI Logic का इस्तेमाल करने का तरीका बताया था.
Ben Weiss • 6 मिनट में पढ़ा जा सकता है
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.