اختيار نموذج

تتيح لك واجهة برمجة التطبيقات 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)

جافا

// 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. لمزيد من التفاصيل، يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات.
  • لا تتوفّر عيّنات متعددة في بعض عمليات التنفيذ. سيكون الأداء أبطأ من الإنتاج النهائي.
  • لا يمكن حاليًا إدخال الصور إلا على هاتف Pixel 10.
  • قد يقدّم نموذج nanov4-fast ردودًا غير ملائمة لطلبات معيّنة على بعض الأجهزة.