कैसे करें

इंटेलिजेंट Android ऐप्लिकेशन बनाना: डिवाइस पर इन्फ़रेंस की सुविधा

पढ़ने में 6 मिनट लगेंगे
कैरेन चांग की प्रोफ़ाइल देखें
Caren Chang डेवलपर रिलेशंस इंजीनियर

"इंटेलिजेंट Android ऐप्लिकेशन बनाएं" ब्लॉग पोस्ट सीरीज़ में आपका फिर से स्वागत है. इस सीरीज़ में, हम एक सामान्य Android ऐप्लिकेशन को उपयोगकर्ता के हिसाब से बनाए गए, इंटेलिजेंट, और एजेंट की तरह काम करने वाले ऐप्लिकेशन में बदलते हैं. हमने पिछली पोस्ट में Jetpacker के बारे में बताया था. यह एक डेमो ऐप्लिकेशन है, जिसका इस्तेमाल हम इस सीरीज़ में करेंगे. 

इस ब्लॉग पोस्ट में, हम आपको यह बताएंगे कि उपयोगकर्ता के डिवाइस पर काम करने वाली बेहतर सुविधाएं बनाने के लिए, ML Kit के Prompt API की मदद से Gemini Nano का इस्तेमाल कैसे किया जा सकता है.

उपयोगकर्ता के डिवाइस पर स्मार्ट सुविधाएं उपलब्ध कराने का मतलब है कि डिवाइस पर ही प्रॉम्प्ट और डेटा को प्रोसेस किया जा सकता है. इसके लिए, डेटा को सर्वर पर भेजने की ज़रूरत नहीं होती. इससे कुछ फ़ायदे मिलते हैं: 

  • उपयोगकर्ता के डेटा को डिवाइस पर स्थानीय तौर पर प्रोसेस किया जा सकता है. इससे उपयोगकर्ता की निजता बनी रहती है
  • इंटरनेट कनेक्शन ठीक से न होने या न होने पर भी, मॉडल भरोसेमंद तरीके से काम करता है
  • क्लाउड इन्फ़रेंस की कोई अतिरिक्त लागत नहीं लगती, क्योंकि सब कुछ उपयोगकर्ता के हार्डवेयर पर चलता है

डिवाइस पर मौजूद एआई की सुविधाओं को ध्यान में रखते हुए, हमने Jetpacker में तीन सुविधाएं जोड़ी हैं. इनसे उपयोगकर्ता अनुभव को बेहतर बनाया जा सकता है: यात्रा की योजनाओं के बारे में खास जानकारी देना, खर्च मैनेज करना, और वॉइस नोट कैप्चर करना.

Screenshot 2026-07-02 at 12.57.08 PM.png
Jetpacker में उपयोगकर्ता के डिवाइस पर उपलब्ध सुविधाएं: यात्रा की योजनाओं की खास जानकारी, खर्च मैनेज करना, और वॉइस नोट

छोटे टेक्स्ट की खास जानकारी को अच्छी क्वालिटी में अपनी पसंद के मुताबिक़ बनाना

यात्रा की योजना वाली स्क्रीन पर, लोगों को किसी यात्रा से जुड़ी सभी गतिविधियों की खास जानकारी तुरंत मिल जाती है. इस स्क्रीन पर बहुत सारी जानकारी होती है. इसलिए, यह तुरंत मुश्किल लग सकती है. उपयोगकर्ताओं को बिना किसी परेशानी के यात्रा की तैयारी करने में मदद करने के लिए, हम सबसे ऊपर ‘अपनी यात्रा के लिए तैयार हो जाएं’ सेक्शन जोड़ सकते हैं.

Screenshot_20260702_111934.png
पेरिस की रोमांटिक यात्रा के बारे में खास जानकारी दी गई है. इसमें पेरिस के मशहूर स्थलों पर घूमने, कला का आनंद लेने, और स्वादिष्ट खाना खाने के बारे में बताया गया है. इसमें एक सुझाव और कुछ काम के वाक्यांश भी जोड़े गए हैं.

यात्रा की योजना की जानकारी डालकर, एलएलएम से उसका सारांश बनाने के लिए कहा जा सकता है. इससे हमें यात्रा का सारांश, सामान पैक करने के बारे में सलाह, और स्थानीय भाषा के काम के वाक्यांश मिल सकते हैं. यह उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने का एक बेहतरीन उदाहरण है. इसकी कई वजहें हैं: 

  • परफ़ॉर्मेंस और क्वालिटी: इनपुट और आउटपुट, दोनों टेक्स्ट छोटे होते हैं. इससे, हमें उपयोगकर्ता के डिवाइस पर मौजूद समाधान की परफ़ॉर्मेंस और क्वालिटी, ज़्यादा बेहतर क्लाउड मॉडल के बराबर मिलने की उम्मीद है.
  • स्केल करने की क्षमता: अनुमान लगाने की प्रोसेस को उपयोगकर्ता के डिवाइस पर ट्रांसफ़र करने से, हम इस सुविधा को कुछ उपयोगकर्ताओं से लेकर लाखों उपयोगकर्ताओं तक पहुंचा सकते हैं. साथ ही, हमें क्लाउड पर अनुमान लगाने की बढ़ती लागत को मैनेज करने की चिंता नहीं करनी पड़ती.
  • कम इंतज़ार का समय और भरोसेमंद: उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा से, इंतज़ार का समय कम होता है. साथ ही, यह सुविधा तब भी भरोसेमंद अनुभव देती है, जब लोग ऑफ़लाइन होते हैं.

डिवाइस पर मौजूद डेटा का इस्तेमाल करके, Gemini Nano को बनाया गया है. यह Google का सबसे बेहतर मॉडल है. इसे फ़ोन और टैबलेट के लिए ऑप्टिमाइज़ किया गया है. Gemini Nano को कुछ साल पहले लॉन्च किया गया था. फ़िलहाल, यह 14 करोड़ से ज़्यादा डिवाइसों पर काम कर रहा है. मॉडल का नया वर्शन, Gemini Nano 4, हाल ही में रिलीज़ हुए Gemma 4 मॉडल के आर्किटेक्चर पर आधारित है. इसे बैटरी और परफ़ॉर्मेंस की बेहतर क्षमता के लिए ऑप्टिमाइज़ किया गया है. 

ML Kit के Prompt API का इस्तेमाल करके, हम Gemini Nano 4 की नई मॉडल क्षमताओं का फ़ायदा उठा सकते हैं. इससे, हम उपयोगकर्ता के डिवाइस पर काम करने वाली सुविधाओं का प्रोटोटाइप तैयार कर सकते हैं. हम एक ऐसा प्रॉम्प्ट बनाएंगे जिसमें यात्रा की योजना शामिल होगी. साथ ही, मॉडल से तैयारी के सुझावों के साथ-साथ यात्रा की जानकारी का सारांश जनरेट करने के लिए कहेंगे.

आम तौर पर, सबसे सही प्रॉम्प्ट ढूंढने के लिए कुछ बार कोशिश करनी पड़ती है. इस प्रोसेस के लिए, AICore ऐप्लिकेशन सबसे सही है. AICore के डेवलपर प्रीव्यू विकल्प में शामिल होने के बाद, हम Gemini Nano 4 जैसे प्रीव्यू मॉडल डाउनलोड कर सकते हैं. इससे प्रॉम्प्ट की जांच की जा सकती है और मॉडल के संभावित आउटपुट देखे जा सकते हैं. प्रॉम्प्ट में कुछ बदलाव करने के बाद, हम जवाब देने की प्रोसेस को बेहतर बना पाए. अब जवाब देने में 13 सेकंड के बजाय, दो सेकंड से भी कम समय लगता है! कोड लागू करने और प्रॉम्प्ट से जुड़ी फ़ाइनल जानकारी यहां देखें.

[ASSET HERE - FILE TOO LARGE ATM]

संवेदनशील उपयोगकर्ता इनपुट को स्थानीय तौर पर प्रोसेस करना

इसके बाद, हम एक आसान खर्च मैनेजर बनाएंगे, ताकि लोग अपनी यात्रा का और भी ज़्यादा आनंद ले सकें. इससे उन्हें रसीदों को क्रम से लगाने और बजट का हिसाब लगाने जैसे कामों को मैन्युअल तरीके से नहीं करना पड़ेगा. 

रसीदों में क्रेडिट कार्ड नंबर और पते जैसी संवेदनशील जानकारी हो सकती है. इसलिए, उपयोगकर्ता के डिवाइस पर काम करने वाले समाधान का इस्तेमाल करना एक और बेहतरीन इस्तेमाल का उदाहरण है. उपयोगकर्ता के डिवाइस पर मौजूद एआई की मदद से, उपयोगकर्ता यह भरोसा कर सकते हैं कि उनकी निजी जानकारी को डिवाइस पर ही प्रोसेस किया जाएगा. उनका कोई भी डेटा क्लाउड पर नहीं भेजा जाएगा.

इसके अलावा, Gemini Nano 4 में टेक्स्ट, इमेज वग़ैरह को प्रोसेस करने की क्षमता की मॉडल केपबिलिटी को बेहतर बनाया गया है. खास तौर पर, इमेज की बारीक़ी से पहचान जैसे कामों के लिए, जैसे कि ओसीआर और विज़ुअल डेटा निकालने की सुविधा. इसलिए, यह रसीदों से जानकारी निकालने जैसे कामों के लिए एक बेहतरीन समाधान है.

इस उदाहरण में, प्रॉम्प्ट रसीद की इमेज का विश्लेषण करेगा. इसके बाद, वह जानकारी देगा. जैसे: जनरेट किया गया टाइटल, खर्च की गई रकम, और खर्च की कैटगरी. मॉडल से अपनी पसंद के फ़ॉर्मैट में जानकारी पाने के लिए, हम ML Kit के स्ट्रक्चर्ड आउटपुट एपीआई का इस्तेमाल कर सकते हैं. इससे हमें आसानी से Kotlin डेटा ऑब्जेक्ट मिल जाता है, जिसे हम तय करते हैं.

// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// ksp("com.google.mlkit:genai-schema-compiler:1.0.0-alpha1")

@Generable("Information extracted from an expense receipt")
data class ParsedReceipt(
  @Guide("Generated title for the expense less than 6 words. Based on restaurant or activity name.")
  val title: String,
  @Guide("Total amount of the expense. Look for values at the bottom and words like total or balance due.")
  val amount: Double,
  @Guide("Type of expense", enumValues = ["travel", "food", "shopping", "entertainment", "other"])
  val category: String,
)

val prompt = "Determine if the image is a receipt or expense. 
    If it is NOT a receipt or expense, output the text 'NOT_A_RECEIPT'.
    Otherwise, parse the receipt information."

val request = generateContentRequest(ImagePart(bitmap), TextPart(prompt)) {}
val requestWithStructuredOutput = generateTypedContentRequest(request, ParsedReceipt::class)

// Define the configuration for Gemini Nano 4 E4B preview model  
// When selecting models, you can specify which performance charactertists are most important
//  for your use case. Use ModelPreference.FULL when you want to prioritize reasoning power over speed. 
//  Use ModelPreference.FAST when complex logic is not required and latency is a priority.
val previewFullConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FULL
    }
}

val geminiNano4BPreviewModel = Generation.getClient(previewFullConfig)
val response = geminiNano4BPreviewModel.generateContent(requestWithStructuredOutput)
val parsedReceipt: ParsedReceipt? = response.candidates.firstOrNull()?.response

मल्टीमॉडल इनपुट

आखिर में, उपयोगकर्ताओं को यात्रा के दौरान ऑडियो मेमो रिकॉर्ड करने में मदद करने के लिए, उपयोगकर्ता के डिवाइस पर पूरी तरह से काम करने वाली वॉइस नोट की सुविधा बनाते हैं. हम ML Kit के Speech Recognition API का इस्तेमाल करके, उपयोगकर्ताओं को छोटे वॉइस नोट रिकॉर्ड करने की सुविधा देंगे. ये वॉइस नोट, टेक्स्ट में अपने-आप ट्रांसक्राइब हो जाएंगे. ट्रांसक्राइब किए गए टेक्स्ट के साथ, हम ML Kit के Prompt API का इस्तेमाल करेंगे. इससे यह पता चलेगा कि रिकॉर्ड किए गए वॉइस नोट से यात्रा की कौनसी गतिविधि जुड़ी है. इससे उपयोगकर्ता, यात्रा के कार्यक्रम को स्क्रोल करते समय आसानी से अपनी यात्रा की खास बातें देख सकेंगे. 

Screenshot_20260702_115529.png
रोमन हॉलिडे की यात्रा की योजना में, वॉइस नोट के कुछ हिस्से दिखाए गए हैं.

ML Kit GenAI Speech Recognition API की मदद से, ऑडियो कॉन्टेंट को पूरी तरह से उपयोगकर्ता के डिवाइस पर टेक्स्ट में बदला जा सकता है. इसके लिए, दो अलग-अलग मोड का इस्तेमाल किया जा सकता है. बेसिक मोड में, उपयोगकर्ता के डिवाइस पर मौजूद पारंपरिक बोली की पहचान मॉडल का इस्तेमाल किया जाता है. यह मोड, Android के ज़्यादातर डिवाइसों पर उपलब्ध है. इसके लिए, एपीआई लेवल 31 और इसके बाद के वर्शन की ज़रूरत होती है. ऐडवांस मोड में Gemini Nano का इस्तेमाल किया जाता है. इससे ज़्यादा भाषाओं में बेहतर क्वालिटी के साथ जवाब मिलते हैं. फ़िलहाल, यह मोड Pixel 10 डिवाइसों पर काम करता है.

अपनी सुविधा के लिए, हम Speech Recognition API को ML Kit GenAI Prompt API के साथ जोड़ते हैं:

// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

val tripEvents = ... 

// Set up speech recognition
val speechRecognizerOptions =
    speechRecognizerOptions {
        locale = Locale.US
        preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
    }
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(speechRecognizerOptions)

suspend fun transcribeVoiceNote(recognizer: SpeechRecognizer) {
    // Display partial text as the user is recording audio
    var partialTextResponse = ""

    // Display the full text once user is finished recording audio
    var transcription = ""

    val request: SpeechRecognizerRequest
        = speechRecognizerRequest { audioSource = AudioSource.fromMic() }
    recognizer.startRecognition(request).collect { response ->
        when (response) {
            is SpeechRecognizerResponse.PartialTextResponse -> {
                partialTextResponse = response.text
            }
            is SpeechRecognizerResponse.FinalTextResponse -> {
                transcription = response.text
                processAndCategorizeVoiceNote(transcription, tripEvents)
            }
        }
    }
}

fun processAndCategorizeVoiceNote(transcribedVoiceNote: String, events: List<Event>) {
    val prompt = "Given the voice note $transcribedVoiceNote
     and the following events for this trip: $events, rewrite this transcription
     to remove filler words. Then, identify which events from the
     list this rewritten transcription matches to."

     // Utilize ML Kit's Prompt API to process voice note and tag it with the relevant trip activities
     Generation.getClient().generateContent(prompt)
}

नतीजा

एमएल किट के GenAI API का इस्तेमाल करके, हम Gemini Nano का फ़ायदा उठा पाए. इससे हमें JetPacker ऐप्लिकेशन के लिए, उपयोगकर्ता के डिवाइस पर पूरी तरह से काम करने वाली स्मार्ट सुविधाएं डेवलप करने में मदद मिली. साथ ही, हम बिना किसी अतिरिक्त क्लाउड शुल्क के, उपयोगकर्ताओं को बेहतर उपयोगकर्ता अनुभव दे पाए.

Github पर Jetpacker का पूरा सोर्स कोड देखें. साथ ही, Google के एआई की मदद से, स्मार्ट Android ऐप्लिकेशन बनाएं वीडियो देखें. इससे आपको यह जानने में मदद मिलेगी कि डिवाइस पर मौजूद मॉडल, क्लाउड की मदद से तर्क करने की सुविधा, और एजेंट के नए फ़्रेमवर्क का इस्तेमाल करके, स्मार्ट सुविधाओं को सीधे अपने ऐप्लिकेशन में कैसे इंटिग्रेट किया जा सकता है.

ज़्यादा जानें

इस ब्लॉग पोस्ट सीरीज़ के अन्य हिस्से देखें:

पहला हिस्सा: ऐप्लिकेशन का परिचय और उसके बारे में खास जानकारी.

दूसरा हिस्सा (यह पोस्ट!): उपयोगकर्ता के डिवाइस पर इंटेलिजेंस. निजता को प्राथमिकता देने वाली सुविधाओं को बनाने के लिए, ML Kit के GenAI 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
लेखक:
पढ़ना जारी रखें