مدل را انتخاب کنید

دسترسی مستقیم به مدل به شما امکان می‌دهد نسخه 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)

جاوا

// 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» دردسترس است.

این میانای برنامه‌سازی کاربردی روشی برای فهرست کردن همه پیکربندی‌های مدل دردسترس ازقبل ارائه نمی‌دهد. درعوض، کارخواه را با پیکربندی دلخواهتان مقداردهی اولیه کنید و سپس وضعیت آن را تأیید کنید.

  • مقداردهی اولیه کارخواه: نمونه GenerativeModel را بااستفاده از ModelConfig ترجیحی‌تان ایجاد کنید.
  • بررسی وضعیت: روش 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
    }
}

جاوا

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 درطول مقداردهی اولیه کارخواه جلوگیری کند، و صرفاً به روش checkStatus() برای درستی‌سنجی دردسترس بودن متکی باشد.

روال‌های مطلوب

  • پیاده‌سازی استراتژی‌های جایگزین: چون تضمینی وجود ندارد که مدل‌های پیش‌نمایش در همه دستگاه‌ها دردسترس باشند، همیشه یک استراتژی جایگزین پیاده‌سازی کنید. اگر checkStatus() برای پیکربندی پیش‌نمایش false را برگرداند، برنامه‌تان باید به‌طور مناسب به ModelReleaseStage.STABLE و ModelPreference.FULL برگردد.
  • استفاده از مراحل انتشار مدل برای توسعه و تولید: از مرحله پیش‌نمایش درطول توسعه و آزمایش داخلی برای ارزیابی بهبودهای آتی مدل استفاده کنید. برای نسخه‌های پخش تولید عمومی‌تان، به پایدار بروید تا مطمئن شوید رفتار ثابتی برای کاربران شما وجود دارد.

مشکلات شناخته‌شده

  • برخی‌از دستگاه‌ها در مرحله انتشار نسخه پیش‌نمایش از چند نامزد در خروجی پشتیبانی نمی‌کنند و اگر candidateCount بزرگ‌تر از ۱ تنظیم شده باشد، خطا برمی‌گردانند. برای جزئیات بیشتر، مرجع میانای برنامه‌سازی کاربردی را ببینید.
  • در برخی‌از پیاده‌سازی‌ها، از چند نمونه پشتیبانی نمی‌شود. عملکرد کندتر از تولید نهایی خواهد بود.