একটি মডেল নির্বাচন করুন

প্রম্পট এপিআই আপনাকে আপনার অ্যাপে ব্যবহৃত জেমিনি ন্যানো-র সংস্করণটি স্পষ্টভাবে নির্বাচন করার সুযোগ দেয়। মডেল রিলিজের পর্যায় এবং পারফরম্যান্সের পছন্দ কনফিগার করার মাধ্যমে, আপনি নতুন মডেলের সক্ষমতাগুলো আরও আগে ব্যবহার করতে পারেন অথবা নির্দিষ্ট হার্ডওয়্যারের সীমাবদ্ধতার জন্য আপনার অ্যাপকে অপ্টিমাইজ করতে পারেন।

মডেল কনফিগারেশন বুঝুন

একটি নির্দিষ্ট মডেল নির্বাচন করতে, আপনাকে ModelConfig ক্লাসের মধ্যে দুটি মূল প্যারামিটার কনফিগার করতে হবে: রিলিজ স্টেজ এবং মডেল প্রেফারেন্স

মুক্তির পর্যায়

রিলিজ পর্যায়ে আপনি একটি স্থিতিশীল বা প্রিভিউ মডেলের মধ্যে বেছে নিতে পারেন:

  • স্থিতিশীল ( ModelReleaseStage.STABLE ): সম্পূর্ণরূপে পরীক্ষিত এবং গ্রাহক ডিভাইসে উপলব্ধ সর্বশেষ মডেল সংস্করণটি নির্বাচন করে। এটি ডিফল্ট সেটিং।
  • প্রিভিউ ( ModelReleaseStage.PREVIEW ): প্রিভিউ পর্যায়ে থাকা সর্বশেষ মডেল সংস্করণটি নির্বাচন করে। এই পর্যায়টি আপনাকে বিটা ফিচার বা নতুন মডেল আর্কিটেকচারগুলো স্টেবল পর্যায়ে ব্যাপকভাবে চালু হওয়ার আগে পরীক্ষা করার সুযোগ দেয়।

ডেভেলপার প্রিভিউয়ের পূর্বশর্ত এবং তালিকাভুক্তির নির্দেশাবলীর জন্য, AICore ডেভেলপার প্রিভিউ গাইডটি দেখুন।

মডেল পছন্দ

মডেল প্রেফারেন্স আপনাকে নির্দিষ্ট করতে দেয় যে আপনার ব্যবহারের ক্ষেত্রে কোন পারফরম্যান্স বৈশিষ্ট্যগুলো সবচেয়ে গুরুত্বপূর্ণ।

  • Full ( ModelPreference.FULL ): যখন গতির চেয়ে মডেলের নির্ভুলতা এবং পূর্ণ সক্ষমতাকে বেশি অগ্রাধিকার দেওয়া হয়, তখন এই প্রেফারেন্সটি সুপারিশ করা হয়।
  • ফাস্ট ( ModelPreference.FAST ): এই প্রেফারেন্সটি সেইসব ল্যাটেন্সি-সংবেদনশীল অ্যাপের জন্য সুপারিশ করা হয়, যেগুলোর ন্যূনতম রেসপন্স টাইম প্রয়োজন।

জেনারেটিভ মডেলটি কনফিগার করুন

একটি নির্দিষ্ট মডেল ভ্যারিয়েন্ট ব্যবহার করতে হলে, আপনাকে অবশ্যই একটি ModelConfig সংজ্ঞায়িত করতে হবে এবং ক্লায়েন্ট ইনিশিয়ালাইজ করার সময় সেটি আপনার GenerationConfig এ পাস করতে হবে।

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে প্রিভিউ পর্যায় থেকে একটি ফাস্ট মডেল ব্যবহার করার জন্য ক্লায়েন্টকে কনফিগার করতে হয়:

কোটলিন

// 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)

জাভা

// 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() মেথডটি কল করুন।

কোটলিন

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
    }
}

জাভা

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 মান ১-এর বেশি সেট করা হলে একটি এরর দেখাবে। আরও বিস্তারিত জানতে এপিআই রেফারেন্স দেখুন।
  • কিছু বাস্তবায়নে একাধিক স্যাম্পল সমর্থিত নয়। এর পারফরম্যান্স চূড়ান্ত প্রোডাকশনের চেয়ে ধীর হবে।
  • ইমেজ ইনপুট বর্তমানে শুধুমাত্র পিক্সেল ১০-এ কাজ করে।
  • nanov4-fast মডেলটি কিছু ডিভাইসে নির্দিষ্ট কিছু প্রম্পটের ক্ষেত্রে দুর্বল প্রতিক্রিয়া দিতে পারে।