डिवाइस पर मौजूद और क्लाउड पर होस्ट किए गए मॉडल की मदद से, Android ऐप्लिकेशन में हाइब्रिड अनुभव बनाना


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

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

ध्यान दें कि Firebase AI Logic के ज़रिए उपयोगकर्ता के डिवाइस पर अनुमान की सुविधा, Firebase AI Logic SDK टूल के 17.10.0 या इसके बाद के वर्शन (BoM के 34.10.0 या इसके बाद के वर्शन) का इस्तेमाल करने वाले Android ऐप्लिकेशन के लिए उपलब्ध है. साथ ही, यह सुविधा चुनिंदा डिवाइसों पर काम करती है. यह ML Kit की शर्तों के साथ-साथ, ML Kit के जेन एआई से जुड़े पहलुओं के लिए तय की गई शर्तों के मुताबिक काम करता है.

इस्तेमाल के सुझाए गए उदाहरण और उपलब्ध सुविधाएं

इस्तेमाल के सुझाए गए उदाहरण

  • अनुमान लगाने के लिए, उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने से ये फ़ायदे मिलते हैं:

    • बेहतर निजता
    • लोकल कॉन्टेक्स्ट
    • बिना किसी शुल्क के अनुमान लगाने की सुविधा
    • ऑफ़लाइन काम करने की सुविधा
  • हाइब्रिड फ़ंक्शन का इस्तेमाल करने से ये फ़ायदे मिलते हैं:

    • उपयोगकर्ता के डिवाइस पर मॉडल की उपलब्धता और इंटरनेट कनेक्टिविटी को ध्यान में रखकर, ज़्यादा से ज़्यादा ऑडियंस तक पहुंचें

उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के साथ काम करने वाली सुविधाएं और क्षमताएं

उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा, सिर्फ़ एक बार में टेक्स्ट जनरेट करने (चैट नहीं) के लिए काम करती है. इसमें स्ट्रीमिंग या नॉन-स्ट्रीमिंग आउटपुट का इस्तेमाल किया जा सकता है. यह टेक्स्ट जनरेट करने की इन सुविधाओं के साथ काम करता है:

इस पेज पर सबसे नीचे मौजूद, उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए फ़िलहाल उपलब्ध नहीं होने वाली सुविधाओं की सूची ज़रूर देखें.

शुरू करने से पहले

इन बातों का ध्यान रखें:

वे Android डिवाइस जिन पर Gemini काम करता है और उन पर उपलब्ध उपयोगकर्ता के डिवाइस पर मॉडल

डिवाइस पर अनुमान लगाने की सुविधा (जो ML Kit के Prompt API का इस्तेमाल करती है) के लिए, ML Kit के दस्तावेज़ में इस सुविधा के साथ काम करने वाले डिवाइसों और उनके ऑन-डिवाइस मॉडल की सूची देखी जा सकती है.

शुरू करें

शुरू करने के इन चरणों में, किसी भी तरह के प्रॉम्प्ट अनुरोध को भेजने के लिए ज़रूरी सामान्य सेटअप के बारे में बताया गया है.

पहला चरण: Firebase प्रोजेक्ट सेट अप करना और अपने ऐप्लिकेशन को Firebase से कनेक्ट करना

  1. Firebase कंसोल में साइन इन करें. इसके बाद, अपना Firebase प्रोजेक्ट चुनें.

  2. Firebase कंसोल में, एआई सेवाएं > एआई लॉजिक पर जाएं.

  3. निर्देशों के साथ काम करने वाला वर्कफ़्लो लॉन्च करने के लिए, शुरू करें पर क्लिक करें. इससे आपको अपने प्रोजेक्ट के लिए, ज़रूरी एपीआई और संसाधन सेट अप करने में मदद मिलेगी.

  4. अगर कहा जाए, तो स्क्रीन पर दिए गए निर्देशों का पालन करके, अपने ऐप्लिकेशन को रजिस्टर करें और उसमें Firebase कॉन्फ़िगरेशन जोड़ें.

  5. "Gemini API की सेवा देने वाली कंपनी" चुनने के लिए कहे जाने पर, हमारा सुझाव है कि आप Gemini Developer API को चुनें. इससे आपको बिना किसी शुल्क के तुरंत शुरुआत करने में मदद मिलती है.

    आपके पास बाद में किसी भी समय, Agent Platform Gemini API (formerly Vertex AI) को सेट अप करने का विकल्प होता है. साथ ही, बिलिंग के लिए ज़रूरी जानकारी भी जोड़ी जा सकती है.

  6. Firebase AI Logic के लिए ज़रूरी एपीआई और उनसे जुड़ी सेवाएं सेट अप करने के लिए, वर्कफ़्लो में आगे बढ़ें.

    जुलाई 2026 की शुरुआत से, वर्कफ़्लो का यह चरण AI Logic के लिए Firebase App Check को अपने-आप लागू कर देता है. यह एक ज़रूरी सेवा है, जो आपके ऐप्लिकेशन से सीधे ऐक्सेस किए जाने पर Gemini API को सुरक्षित रखने में मदद करती है. शुरू करने के लिए (इस गाइड में बाद में दिए गए चरण देखें), आपको लोकल डेवलपमेंट के लिए App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना होगा. ऐसा तब करना होगा, जब App Check को लागू किया जाएगा.

  7. अपने ऐप्लिकेशन में ज़रूरी एसडीके जोड़ने के लिए, इस गाइड में दिए गए अगले चरण पर जाएं.

दूसरा चरण: ज़रूरी एसडीके जोड़ना

Firebase AI Logic SDK for Android (firebase-ai) और Firebase AI Logic On-Device SDK (firebase-ai-ondevice) की मदद से, जनरेटिव मॉडल के साथ इंटरैक्ट करने के लिए एपीआई ऐक्सेस किए जा सकते हैं.

मॉड्यूल (ऐप्लिकेशन-लेवल) की Gradle फ़ाइल (जैसे, <project>/<app-module>/build.gradle.kts) में, Android के लिए Firebase AI Logic और App Check लाइब्रेरी की डिपेंडेंसी जोड़ें:

Kotlin

dependencies {
  // ... other androidx dependencies

  // Add the dependencies for the Firebase AI Logic and App Check libraries
  // Note that the on-device SDK is not yet included in the Firebase Android BoM
  implementation("com.google.firebase:firebase-ai:18.1.0")
  implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta07")
  implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")
}

Java

Java के लिए, आपको दो अतिरिक्त लाइब्रेरी जोड़नी होंगी.

dependencies {
  // ... other androidx dependencies

  // Add the dependencies for the Firebase AI Logic and App Check libraries
  // Note that the on-device SDK is not yet included in the Firebase Android BoM
  implementation("com.google.firebase:firebase-ai:18.1.0")
  implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta07")
  implementation("com.google.firebase:firebase-appcheck-debug:20.0.0")

  // Required for one-shot operations (to use `ListenableFuture` from Guava Android)
  implementation("com.google.guava:guava:31.0.1-android")

  // Required for streaming operations (to use `Publisher` from Reactive Streams)
  implementation("org.reactivestreams:reactive-streams:1.0.4")
}

तीसरा चरण: लोकल डेवलपमेंट के लिए, App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना

जुलाई 2026 की शुरुआत से, कंसोल में AI Logic के लिए सेटअप वर्कफ़्लो के तहत, Firebase App Check को अपने-आप लागू कर दिया जाएगा, ताकि Gemini API को सुरक्षित रखा जा सके. लोकल डेवलपमेंट के लिए, आपको App Check डीबग प्रोवाइडर को कॉन्फ़िगर करना होगा, ताकि पुष्टि की प्रोसेस को बायपास किया जा सके. हालांकि, इस दौरान App Check को लागू करना जारी रखना होगा.

  1. डीबग के लिए बिल्ड में, App Check को कॉन्फ़िगर करें, ताकि डीबग प्रोवाइडर फ़ैक्ट्री का इस्तेमाल किया जा सके:

    Kotlin

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )
    

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
    
  2. अपना डीबग टोकन पाना:

    1. अपने ऐप्लिकेशन को एम्युलेटर या टेस्ट डिवाइस पर चलाएं.

    2. अपने लॉग में App Check डीबग टोकन ढूंढें. उदाहरण के लिए:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. टोकन को कॉपी करें (उदाहरण के लिए, 123a4567-b89c-12d3-e456-789012345678).

  3. App Check पर अपना डीबग टोकन रजिस्टर करें:

    1. Firebase कंसोल में, सुरक्षा > App Check > ऐप्लिकेशन टैब पर जाएं.

    2. अपना ऐप्लिकेशन ढूंढें और ओवरफ़्लो मेन्यू () पर क्लिक करें. इसके बाद, डीबग टोकन मैनेज करें को चुनें.

    3. डीबग टोकन को रजिस्टर करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें.

डीबग प्रोवाइडर के बारे में ज़्यादा जानने के लिए, आधिकारिक App Check दस्तावेज़ देखें. इसमें नया डीबग टोकन पाने का तरीका भी बताया गया है.

चौथा चरण: देखें कि उपयोगकर्ता के डिवाइस पर मौजूद मॉडल उपलब्ध है या नहीं

FirebaseAIOnDevice का इस्तेमाल करके, देखें कि उपयोगकर्ता के डिवाइस पर मौजूद मॉडल उपलब्ध है या नहीं. अगर उपलब्ध नहीं है, तो मॉडल डाउनलोड करें.

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

Kotlin

val status = FirebaseAIOnDevice.checkStatus()
when (status) {
  OnDeviceModelStatus.UNAVAILABLE -> {
    Log.w(TAG, "On-device model is unavailable")
  }

  OnDeviceModelStatus.DOWNLOADABLE -> {
    FirebaseAIOnDevice.download().collect { status ->
      when (status) {
        is DownloadStatus.DownloadStarted ->
          Log.w(TAG, "Starting download - ${status.bytesToDownload}")

        is DownloadStatus.DownloadInProgress ->
          Log.w(TAG, "Download in progress ${status.totalBytesDownloaded} bytes downloaded")

        is DownloadStatus.DownloadCompleted ->
          Log.w(TAG, "On-device model download complete")

        is DownloadStatus.DownloadFailed ->
          Log.e(TAG, "Download failed ${status}")
      }
    }
  }
  OnDeviceModelStatus.DOWNLOADING -> {
    Log.w(TAG, "On-device model is being downloaded")
  }

  OnDeviceModelStatus.AVAILABLE -> {
    Log.w(TAG, "On-device model is available")
  }
}

Java

Checking for, downloading, and warming up the model is not yet available for Java.

However, all other APIs and interactions in this guide are available for Java.

उपयोगकर्ता के डिवाइस पर मौजूद मॉडल को डाउनलोड करने के बारे में, इन बातों का ध्यान रखें:

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

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

  • अगर उपयोगकर्ता के डिवाइस पर अनुमान लगाने का अनुरोध किए जाने पर, उपयोगकर्ता के डिवाइस पर मॉडल उपलब्ध नहीं है, तो SDK टूल, उपयोगकर्ता के डिवाइस पर मॉडल को डाउनलोड करने की प्रोसेस अपने-आप ट्रिगर नहीं करेगा. एसडीके, क्लाउड पर होस्ट किए गए मॉडल पर वापस चला जाएगा या कोई गड़बड़ी दिखाएगा. अनुमान वाले मोड के व्यवहार के बारे में ज़्यादा जानकारी देखें.

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

लेटेंसी ऑप्टिमाइज़ेशन

पहले अनुमान कॉल के लिए ऑप्टिमाइज़ करने के लिए, आपके ऐप्लिकेशन को onDeviceExtension?.warmUp() को कॉल करना होगा. फ़िलहाल, यह सुविधा सिर्फ़ Kotlin के लिए उपलब्ध है. इससे उपयोगकर्ता के डिवाइस पर मौजूद मॉडल, मेमोरी में लोड हो जाता है और रनटाइम कॉम्पोनेंट शुरू हो जाते हैं.

पांचवां चरण: सेवा को शुरू करना और मॉडल इंस्टेंस बनाना

इस पेज पर, Gemini API की सेवा देने वाली कंपनी के हिसाब से कॉन्टेंट और कोड देखने के लिए, सेवा देने वाली कंपनी के नाम पर क्लिक करें.

मॉडल को प्रॉम्प्ट का अनुरोध भेजने से पहले, ये सेट अप करें.

  1. एपीआई की सेवा देने वाली चुनी गई कंपनी के लिए, सेवा शुरू करें.

  2. GenerativeModel इंस्टेंस बनाएं और mode को इनमें से किसी एक पर सेट करें. यहां दी गई जानकारी बहुत ही बुनियादी है. हालांकि, इन मोड के काम करने के तरीके के बारे में ज़्यादा जानने के लिए, अनुमान वाला मोड सेट करना लेख पढ़ें.

    • PREFER_ON_DEVICE: उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने की कोशिश करें; नहीं तो, क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करें.

    • ONLY_ON_DEVICE: उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने की कोशिश करें; अगर ऐसा नहीं होता है, तो कोई अपवाद दिखाएं.

    • PREFER_IN_CLOUD: क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें; अगर ऐसा नहीं हो पाता है, तो उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करें.

    • ONLY_IN_CLOUD: क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें; नहीं तो, कोई अपवाद दिखाएं.

Kotlin

// Using this SDK to access on-device inference is an Experimental release and requires opt-in
@OptIn(PublicPreviewAPI::class)

// ...

// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);

छठा चरण: किसी मॉडल को प्रॉम्प्ट का अनुरोध भेजना

इस सेक्शन में बताया गया है कि अलग-अलग तरह के आउटपुट जनरेट करने के लिए, अलग-अलग तरह के इनपुट कैसे भेजे जा सकते हैं. जैसे:

सिर्फ़ टेक्स्ट वाले इनपुट से टेक्स्ट जनरेट करना

इस सैंपल को आज़माने से पहले, पक्का करें कि आपने इस गाइड का शुरू करें सेक्शन पूरा कर लिया हो.

टेक्स्ट वाले प्रॉम्प्ट से जनरेट किया गया टेक्स्ट बनाने के लिए, generateContent() का इस्तेमाल किया जा सकता है:

Kotlin

// Imports + initialization of Gemini API backend service + creation of model instance

// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
val response = model.generateContent(prompt)
print(response.text)

Java

// Imports + initialization of Gemini API backend service + creation of model instance

// Provide a prompt that contains text
Content prompt = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

ध्यान दें कि Firebase AI Logic, generateContent के बजाय generateContentStream का इस्तेमाल करके, टेक्स्ट वाले जवाबों को स्ट्रीम करने की सुविधा भी देता है.

टेक्स्ट और इमेज (मल्टीमोडल) इनपुट से जनरेट किया गया टेक्स्ट

इस सैंपल को आज़माने से पहले, पक्का करें कि आपने इस गाइड का शुरू करें सेक्शन पूरा कर लिया हो.

generateContent() का इस्तेमाल करके, टेक्स्ट और एक इमेज फ़ाइल (सिर्फ़ बिटमैप) वाले प्रॉम्प्ट से टेक्स्ट जनरेट किया जा सकता है. इसके लिए, आपको हर इनपुट फ़ाइल का mimeType और फ़ाइल देनी होगी.

Kotlin

// Imports + initialization of Gemini API backend service + creation of model instance

// Loads an image from the app/res/drawable/ directory
val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky)

// Provide a prompt that includes the image specified above and text
val prompt = content {
  image(bitmap)
  text("What developer tool is this mascot from?")
}

// To generate text output, call generateContent with the prompt
val response = model.generateContent(prompt)
print(response.text)

Java

// Imports + initialization of Gemini API backend service + creation of model instance

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sparky);

// Provide a prompt that includes the image specified above and text
Content content = new Content.Builder()
        .addImage(bitmap)
        .addText("What developer tool is this mascot from?")
        .build();

// To generate text output, call generateContent with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

ध्यान दें कि Firebase AI Logic, generateContent के बजाय generateContentStream का इस्तेमाल करके, टेक्स्ट वाले जवाबों को स्ट्रीम करने की सुविधा भी देता है.

तुम और क्या कर सकती हो?

हाइब्रिड अनुभव के लिए, कॉन्फ़िगरेशन के कई अन्य विकल्प और सुविधाएं इस्तेमाल की जा सकती हैं:

उपयोगकर्ता के डिवाइस पर अनुमान लगाने की सुविधा के लिए, फ़िलहाल ये सुविधाएं उपलब्ध नहीं हैं

एक्सपेरिमेंट के तौर पर रिलीज़ किए गए क्लाउड मॉडल की सभी केपबिलिटी, उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए उपलब्ध नहीं हैं. उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए, ये सुविधाएं फ़िलहाल उपलब्ध नहीं हैं. हालांकि, ये सुविधाएं आम तौर पर क्लाउड-आधारित अनुमान लगाने के लिए उपलब्ध होती हैं.

  • इमेज जनरेट की जा रही हैं

    • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी होगी.
  • बिटमैप के अलावा, अन्य इमेज फ़ाइल इनपुट टाइप से टेक्स्ट जनरेट करना (मेमोरी में लोड की गई इमेज)

    • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी होगी.
  • सिर्फ़ इमेज वाली फ़ाइल से टेक्स्ट जनरेट करना. उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए, आपको मल्टीमोडल अनुरोध के हिस्से के तौर पर टेक्स्ट देना होगा.

    • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी होगी.
  • एक से ज़्यादा इमेज फ़ाइल इनपुट से टेक्स्ट जनरेट करना

    • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी होगी.
  • ऑडियो, वीडियो, और दस्तावेज़ों (जैसे, PDF) से टेक्स्ट जनरेट करना

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

    • अगर fileData (FileDataPart) का इस्तेमाल करके फ़ाइल का यूआरएल दिया जाता है, तो यह क्लाउड पर होस्ट किए गए मॉडल पर वापस जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी का मैसेज दिखेगा.
    • अगर किसी टेक्स्ट प्रॉम्प्ट में सीधे तौर पर कोई यूआरएल एम्बेड किया जाता है, तो वह अपने-आप क्लाउड-होस्ट किए गए मॉडल पर स्विच नहीं होता. ऐसा इसलिए, क्योंकि उपयोगकर्ता के डिवाइस पर मौजूद मॉडल, एम्बेड किए गए यूआरएल को अनदेखा कर देता है.
  • ऐसे अनुरोध भेजना जिनमें 4,000 से ज़्यादा टोकन (या अंग्रेज़ी के करीब 3,000 शब्द) हों

    • क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल किया जा सकता है. हालांकि, ONLY_ON_DEVICE मोड में गड़बड़ी होगी.
  • एक से ज़्यादा बार चैट करने की सुविधा

    • यह क्लाउड पर होस्ट किए गए मॉडल पर अपने-आप स्विच नहीं होता. डिवाइस पर मौजूद मॉडल, प्रॉम्प्ट के इतिहास को एक टेक्स्ट प्रॉम्प्ट में जोड़ देता है. ऐसा इसलिए होता है, क्योंकि डिवाइस पर मौजूद मॉडल, अलग-अलग भूमिकाओं के बीच अंतर नहीं कर पाता और इतिहास को एक ही मैसेज के तौर पर देखता है. इसलिए, यह क्लाउड पर होस्ट किए गए मॉडल जितना सटीक नहीं होगा.
    • अगर आपको मल्टी-टर्न चैट की सुविधा इस्तेमाल करनी है, तो हमारा सुझाव है कि आप ONLY_IN_CLOUD मोड का इस्तेमाल करें.
  • मॉडल को टूल उपलब्ध कराना, ताकि वह जवाब जनरेट कर सके. जैसे, फ़ंक्शन कॉलिंग, कोड एक्ज़ीक्यूशन, यूआरएल कॉन्टेक्स्ट, Google Search के साथ ग्राउंडिंग, और Google Maps के साथ ग्राउंडिंग

    • यह क्लाउड पर होस्ट किए गए मॉडल पर अपने-आप स्विच नहीं होता. अगर आपको टूल इस्तेमाल करने हैं, तो हमारा सुझाव है कि आप ONLY_IN_CLOUD मोड का इस्तेमाल करें.

Firebase कंसोल में एआई मॉनिटरिंग की सुविधा, उपयोगकर्ता के डिवाइस पर मौजूद अनुमानों (इसमें डिवाइस लॉग भी शामिल हैं) का कोई डेटा नहीं दिखाती है. हालांकि, क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने वाले किसी भी अनुमान को, Firebase AI Logic की मदद से अन्य अनुमानों की तरह ही मॉनिटर किया जा सकता है.

अन्य सीमाएं

ऊपर बताई गई सीमाओं के अलावा, उपयोगकर्ता के डिवाइस पर अनुमान लगाने की ये सीमाएं भी हैं (ज़्यादा जानने के लिए, ML Kit का दस्तावेज़ पढ़ें):

  • आपके ऐप्लिकेशन के असली उपयोगकर्ता को, डिवाइस पर अनुमान लगाने की सुविधा के लिए, इस्तेमाल किए जा सकने वाले डिवाइस का इस्तेमाल करना होगा.

  • आपका ऐप्लिकेशन, उपयोगकर्ता के डिवाइस पर मौजूद अनुमान को सिर्फ़ तब चला सकता है, जब वह फ़ोरग्राउंड में हो.

  • उपयोगकर्ता के डिवाइस पर अनुमान लगाने के लिए, सिर्फ़ अंग्रेज़ी और कोरियन भाषा की पुष्टि की गई है.

  • डिवाइस पर अनुमान लगाने के पूरे अनुरोध के लिए, ज़्यादा से ज़्यादा 4,000 टोकन इस्तेमाल किए जा सकते हैं. अगर आपके अनुरोध इस सीमा से ज़्यादा हो सकते हैं, तो अनुमान वाला ऐसा मोड कॉन्फ़िगर करें जो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल कर सके.

  • हमारा सुझाव है कि उपयोगकर्ता के डिवाइस पर अनुमान लगाने के ऐसे इस्तेमाल के उदाहरणों से बचें जिनमें लंबे आउटपुट (256 से ज़्यादा टोकन) की ज़रूरत होती है.

  • AICore (उपयोगकर्ता के डिवाइस पर मौजूद मॉडल मैनेज करने वाली Android सिस्टम सर्विस) हर ऐप्लिकेशन के लिए, अनुमान लगाने का कोटा लागू करती है. कम समय में बहुत ज़्यादा एपीआई अनुरोध करने पर, ErrorCode.BUSY जवाब मिलेगा. अगर आपको यह गड़बड़ी दिख रही है, तो अनुरोध को फिर से भेजने के लिए, एक्स्पोनेंशियल बैकऑफ़ का इस्तेमाल करें. इसके अलावा, अगर कोई ऐप्लिकेशन लंबे समय के कोटे (उदाहरण के लिए, रोज़ का कोटा) से ज़्यादा डेटा इस्तेमाल करता है, तो ErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDED को वापस किया जा सकता है.


Firebase AI Logic के साथ अपने अनुभव के बारे में सुझाव/राय देना या शिकायत करना