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_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 [झलक] (nano-v4-full, जो Gemma 4 E4B पर आधारित है).

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

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

        • उदाहरण के लिए, Gemini Nano 4 Fast [झलक] (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_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_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 की सेवा देने वाली कंपनी के हिसाब से कॉन्टेंट और कोड देखने के लिए, सेवा देने वाली कंपनी के नाम पर क्लिक करें.

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

  • क्लाउड पर होस्ट किए गए मॉडल: generationConfig (Kotlin | Java) का इस्तेमाल करके कॉन्फ़िगरेशन सेट करें. उपलब्ध पैरामीटर के बारे में जानें.

  • उपयोगकर्ता के डिवाइस पर मौजूद मॉडल: onDeviceConfig (Kotlin | Java) का इस्तेमाल करके कॉन्फ़िगरेशन सेट करें. उपलब्ध पैरामीटर के बारे में जानें (Kotlin | Java).

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

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

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


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