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

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

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

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

रिलीज़ स्टेज

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

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

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

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

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

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

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

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

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

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 की झलक की गाइड में दी गई है.

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

  • क्लाइंट को शुरू करना: अपनी पसंद के 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));

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

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

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

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

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