Android ऐप्लिकेशन में हाइब्रिड अनुभवों के लिए कॉन्फ़िगरेशन के विकल्प


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

पक्का करें कि आपने हाइब्रिड अनुभव बनाने के शुरुआती निर्देश पढ़ लिए हों.

अनुमान लगाने का मोड सेट करना

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

यहां अनुमान लगाने के लिए उपलब्ध मोड दिए गए हैं:

  • PREFER_ON_DEVICE: अगर डिवाइस पर मॉडल उपलब्ध है और वह अनुरोध के टाइप के साथ काम करता है, तो उसका इस्तेमाल करने की कोशिश करें. ऐसा न होने पर, डिवाइस पर गड़बड़ी लॉग करें. इसके बाद, क्लाउड पर होस्ट किए गए मॉडल पर अपने-आप वापस आ जाएं.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: अगर डिवाइस पर मॉडल उपलब्ध है और वह अनुरोध के टाइप के साथ काम करता है, तो उसका इस्तेमाल करने की कोशिश करें. ऐसा न होने पर, अपवाद थ्रो करें.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: अगर डिवाइस ऑनलाइन है और मॉडल उपलब्ध है, तो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें. अगर डिवाइस ऑफ़लाइन है, तो डिवाइस पर मौजूद मॉडल का इस्तेमाल करें. अन्य सभी मामलों में, अपवाद थ्रो करें.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: अगर डिवाइस ऑनलाइन है और मॉडल उपलब्ध है, तो क्लाउड पर होस्ट किए गए मॉडल का इस्तेमाल करने की कोशिश करें. ऐसा न होने पर, अपवाद थ्रो करें.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

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

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

इस प्रॉपर्टी को ऐक्सेस करने पर, दिखाई गई वैल्यू ON_DEVICE या IN_CLOUD होगी.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

इस्तेमाल करने के लिए कोई मॉडल तय करना

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

generativeModel इंस्टेंस बनाते समय, इस्तेमाल किए जाने वाले मॉडल के बारे में बताया जा सकता है (Kotlin | Java).

  • क्लाउड पर होस्ट किए गए मॉडल के बारे में बताएं:

    • अगर आपका अनुमान लगाने का मोड PREFER_ON_DEVICE, PREFER_IN_CLOUD या ONLY_IN_CLOUD है, तो आपको इस्तेमाल करने के लिए, क्लाउड पर होस्ट किए गए मॉडल के बारे में साफ़ तौर पर बताना होगा. ऐसा करना ज़रूरी है. SDK टूल में, क्लाउड पर होस्ट किया गया कोई डिफ़ॉल्ट मॉडल नहीं होता.

    • क्लाउड पर होस्ट किए गए Gemini मॉडल के साथ काम करने वाले सभी मॉडल के नाम ढूंढें.

  • डिवाइस पर मौजूद मॉडल के बारे में जानकारी देना:

    • अगर आपका अनुमान लगाने का मोड PREFER_ON_DEVICE, PREFER_IN_CLOUD या ONLY_ON_DEVICE है, तो onDeviceConfig में ज़रूरी नहीं है कि इस्तेमाल किए जाने वाले डिवाइस पर मौजूद मॉडल की "कैटेगरी" के बारे में बताया जाए. कैटगरी, रिलीज़ के चरण और परफ़ॉर्मेंस की विशेषताओं का कॉम्बिनेशन होती हैं.

    • कैटगरी की इन वैल्यू का इस्तेमाल किया जा सकता है.
      AICore, डिवाइस पर मौजूद ऐसे मॉडल को अपने-आप चुन लेता है जो बताई गई कैटगरी की शर्तों को पूरा करता हो और डिवाइस पर काम करता हो. उदाहरण के लिए, अगर आपने PREVIEW को चुना है और डिवाइस Pixel 9 है, तो Gemini Nano 4 Full [Preview] (nano-v4-full) अपने-आप चुना जाएगा.

      • STABLE: डिवाइस पर काम करने वाला, स्टेबल वर्शन का नया मॉडल.

        • पूरी तरह से टेस्ट किया गया हो और उपभोक्ताओं के डिवाइसों पर उपलब्ध हो.

        • उदाहरण के लिए, Gemini Nano 3 (nano-v3) या Gemini Nano 2 (nano-v2).

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

      • PREVIEW: डिवाइस पर मौजूद मॉडल की प्रीव्यू सुविधा का नया वर्शन. इसमें परफ़ॉर्मेंस से जुड़ी सभी सुविधाएं उपलब्ध हैं.

        • इसे मुश्किल कामों को पूरा करने और बेहतर तरीके से सोचने-समझने के लिए डिज़ाइन किया गया है.

        • उदाहरण के लिए, Gemini Nano 4 Full [Preview] (nano-v4-full, जो Gemma 4 E4B पर आधारित है).

      • PREVIEW_FAST: यह डिवाइस पर काम करने वाला नया मॉडल है. यह तेज़ी से काम करता है. फ़िलहाल, यह प्रीव्यू के तौर पर उपलब्ध है.

        • इसे ज़्यादा से ज़्यादा स्पीड और कम समय में जवाब देने के लिए ऑप्टिमाइज़ किया गया है.

        • उदाहरण के लिए, Gemini Nano 4 Fast [Preview] (nano-v4-fast, जो Gemma 4 E2B पर आधारित है).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_HOSTED_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_HOSTED_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

जवाबों को कंट्रोल करने के लिए, मॉडल कॉन्फ़िगरेशन का इस्तेमाल करना

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

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

क्लाउड पर होस्ट किए गए मॉडल के लिए, उनके कॉन्फ़िगरेशन को सीधे मॉडल के कॉन्फ़िगरेशन में सेट करें. हालांकि, डिवाइस पर मौजूद मॉडल के लिए, उनके कॉन्फ़िगरेशन को onDeviceConfig में सेट करें.

कॉन्फ़िगरेशन को इंस्टेंस के लाइफ़टाइम के लिए बनाए रखा जाता है. अगर आपको किसी दूसरे कॉन्फ़िगरेशन का इस्तेमाल करना है, तो उस कॉन्फ़िगरेशन के साथ एक नया GenerativeModel इंस्टेंस बनाएं.

यहां एक उदाहरण दिया गया है, जिसमें क्लाउड पर होस्ट किए गए और डिवाइस पर मौजूद मॉडल के लिए कॉन्फ़िगरेशन सेट किए गए हैं. इनका इस्तेमाल तब किया जा सकता है, जब PREFER_ON_DEVICE इन्फ़रेंस मोड सेट किया गया हो:

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);