اختيار نموذج

تتيح لك ميزة "الوصول المباشر إلى النموذج" اختيار إصدار 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));

لضمان التوافق مع الإعدادات المستقبلية المحتملة، تم تصميم حزمة SDK لتجنُّب ظهور GenAiException أثناء إعداد العميل، والاعتماد فقط على طريقة checkStatus() للتحقّق من مدى التوفّر.

أفضل الممارسات

  • تنفيذ استراتيجيات احتياطية: بما أنّ نماذج المعاينة غير مضمونة التوفّر على جميع الأجهزة، يجب دائمًا تنفيذ استراتيجية احتياطية. إذا عرضت الدالة checkStatus() القيمة false لإعدادات المعاينة، يجب أن يعود تطبيقك بسلاسة إلى ModelReleaseStage.STABLE وModelPreference.FULL.
  • استخدام مراحل إصدار النماذج للتطوير والإنتاج: استخدِم مرحلة المعاينة أثناء التطوير والاختبار الداخلي لتقييم التحسينات القادمة على النماذج. يُرجى التبديل إلى الإصدار الثابت لإصدارات الإنتاج العلنية لضمان سلوك متّسق للمستخدمين.

المشاكل المعروفة

  • بالنسبة إلى بعض الأجهزة في مرحلة الإصدار المبكر الحصري، لن تتيح استخدام عدة مرشحين في الناتج وستعرض خطأ إذا تم ضبط candidateCount على قيمة أكبر من 1. لمزيد من التفاصيل، يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات.
  • لا تتوفّر ميزة العينات المتعددة في بعض عمليات التنفيذ. سيكون الأداء أبطأ من الإنتاج النهائي.