कोई मॉडल चुनें

Prompt API की मदद से, अपने ऐप्लिकेशन के लिए Gemini Nano का वर्शन चुना जा सकता है. मॉडल रिलीज़ करने की स्टेज और परफ़ॉर्मेंस की प्राथमिकता को कॉन्फ़िगर करके, मॉडल की नई सुविधाओं को पहले ही ऐक्सेस किया जा सकता है. इसके अलावा, अपने ऐप्लिकेशन को हार्डवेयर की कुछ खास सीमाओं के हिसाब से ऑप्टिमाइज़ किया जा सकता है.

मॉडल कॉन्फ़िगरेशन के बारे में जानकारी

किसी मॉडल को चुनने के लिए, आपको ModelConfig क्लास में दो मुख्य पैरामीटर कॉन्फ़िगर करने होंगे: रिलीज़ स्टेज और मॉडल की प्राथमिकता.

रिलीज़ के चरण

रिलीज़ स्टेज में, स्टेबल या प्रीव्यू मॉडल में से किसी एक को चुना जा सकता है:

  • स्टेबल (ModelReleaseStage.STABLE): यह मॉडल के सबसे नए वर्शन को चुनता है. इसकी पूरी तरह से जांच की जा चुकी है और यह उपभोक्ताओं के डिवाइसों पर उपलब्ध है. यह डिफ़ॉल्ट सेटिंग है.
  • झलक (ModelReleaseStage.PREVIEW): यह झलक वाले चरण में, मॉडल के सबसे नए वर्शन को चुनता है. इस स्टेज पर, बीटा वर्शन में उपलब्ध सुविधाओं या नए मॉडल आर्किटेक्चर को टेस्ट किया जा सकता है. ऐसा तब किया जाता है, जब इन्हें स्टेबल वर्शन में बड़े पैमाने पर डिप्लॉय नहीं किया गया हो.

डेवलपर के लिए झलक पाने से जुड़ी ज़रूरी शर्तें और रजिस्टर करने के निर्देशों के लिए, AICore की डेवलपर के लिए झलक पाने से जुड़ी गाइड देखें.

मॉडल की प्राथमिकता

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

  • पूरी (ModelPreference.FULL): इस सेटिंग का सुझाव तब दिया जाता है, जब स्पीड के बजाय मॉडल की सटीक जानकारी और पूरी सुविधाओं को प्राथमिकता दी जाती है.
  • तेज़ (ModelPreference.FAST): इस सेटिंग का सुझाव उन ऐप्लिकेशन के लिए दिया जाता है जिनमें कम से कम समय में जवाब मिलना ज़रूरी होता है.

जनरेटिव मॉडल को कॉन्फ़िगर करना

किसी मॉडल के खास वैरिएंट का इस्तेमाल करने के लिए, आपको ModelConfig तय करना होगा. साथ ही, क्लाइंट को शुरू करते समय इसे अपने GenerationConfig को पास करना होगा.

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

Kotlin

// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)

Java

// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
    .setModelConfig(new ModelConfig.Builder()
        .setReleaseStage(ModelReleaseStage.PREVIEW)
        .setPreference(ModelPreference.FAST)
        .build())
    .build();

// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

मॉडल की उपलब्धता देखना

सभी डिवाइसों पर, रिलीज़ स्टेज और मॉडल की प्राथमिकता के हर कॉम्बिनेशन का इस्तेमाल नहीं किया जा सकता. झलक वाले मॉडल सिर्फ़ AICore Developer Preview गाइड में दिए गए उन डिवाइसों की सूची में उपलब्ध हैं जिन पर ये मॉडल काम करते हैं.

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

  • क्लाइंट को शुरू करना: अपनी पसंद के ModelConfig का इस्तेमाल करके GenerativeModel इंस्टेंस बनाएं.
  • स्थिति की जांच करें: इंस्टेंस पर checkStatus() तरीके को कॉल करें, ताकि यह पुष्टि की जा सके कि डिवाइस पर मॉडल का खास वैरिएंट उपलब्ध है.

Kotlin

val generativeModel = Generation.getClient(previewFastConfig)

// Verify that the specific preview model is available
val status = generativeModel.checkStatus()

when (status) {
    FeatureStatus.UNAVAILABLE -> {
        // Specified preview model is not available on this device
    }
    FeatureStatus.DOWNLOADABLE -> {
        // Specified preview model is available for this device, but not downloaded yet.
        // Model may be downloaded through the AICore app or by calling generativeModel.download()
    }
    FeatureStatus.AVAILABLE -> {
        // Proceed with inference
    }
    FeatureStatus.DOWNLOADING -> {
        // Specified preview model is downloading
    }
}

Java

GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
    generativeModelFutures.checkStatus(),
    new FutureCallback<Integer>() {
        @Override
        public void onSuccess(Integer status) {
            if (status == FeatureStatus.AVAILABLE) {
                // Proceed with inference
            } else if (status == FeatureStatus.DOWNLOADING) {
                // Specified preview model is downloading
            } else if (status == FeatureStatus.DOWNLOADABLE) {
                // Specified preview model is available for this device, but not downloaded yet.
                // Call generativeModelFutures.download(callback) or use the AICore app.
            } else if (status == FeatureStatus.UNAVAILABLE) {
                // Specified preview model is not available on this device
            }
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle failure
        }
    },
    ContextCompat.getMainExecutor(context));

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

सबसे सही तरीके

  • फ़ॉलबैक रणनीतियां लागू करें: झलक दिखाने वाले मॉडल सभी डिवाइसों पर उपलब्ध नहीं होते. इसलिए, हमेशा फ़ॉलबैक रणनीति लागू करें. अगर प्रीव्यू कॉन्फ़िगरेशन के लिए checkStatus() false दिखाता है, तो आपके ऐप्लिकेशन को ModelReleaseStage.STABLE और ModelPreference.FULL पर वापस आ जाना चाहिए.
  • डेवलपमेंट और प्रोडक्शन के लिए, मॉडल रिलीज़ के चरणों का इस्तेमाल करें: डेवलपमेंट और इंटरनल टेस्टिंग के दौरान, झलक चरण का इस्तेमाल करें. इससे मॉडल में होने वाले सुधारों का आकलन किया जा सकेगा. सार्वजनिक तौर पर उपलब्ध प्रॉडक्ट के प्रोडक्शन वर्शन के लिए, स्टेबल वर्शन पर स्विच करें. इससे यह पक्का किया जा सकेगा कि उपयोगकर्ताओं को एक जैसा अनुभव मिले.

ज्ञात समस्याएं

  • झलक रिलीज़ के चरण में मौजूद कुछ डिवाइसों पर, आउटपुट में एक से ज़्यादा कैंडिडेट नहीं दिखेंगे. साथ ही, अगर candidateCount को 1 से ज़्यादा पर सेट किया जाता है, तो गड़बड़ी का मैसेज दिखेगा. ज़्यादा जानकारी के लिए, एपीआई के बारे में जानकारी देखें.
  • कुछ लागू करने के तरीकों में, एक से ज़्यादा सैंपल इस्तेमाल नहीं किए जा सकते. परफ़ॉर्मेंस, फ़ाइनल प्रोडक्शन से धीमी होगी.
  • फ़िलहाल, इमेज इनपुट की सुविधा सिर्फ़ Pixel 10 पर काम करती है.
  • ऐसा हो सकता है कि nanov4-fast मॉडल, कुछ डिवाइसों पर कुछ प्रॉम्प्ट के लिए सही जवाब न दे.