خيارات الإعداد للتجارب المختلطة في تطبيقات Android


توضّح هذه الصفحة خيارات الإعداد التالية للتجارب المختلطة:

تأكَّد من إكمال دليل البدء لإنشاء تجارب مختلطة.

ضبط وضع الاستنتاج

تستخدِم الأمثلة الواردة في دليل البدء PREFER_ON_DEVICE، ولكن هذا الوضع هو واحد فقط من أوضاع الاستدلال الأربعة المتاحة.

في ما يلي أوضاع الاستنتاج المتاحة:

  • PREFER_ON_DEVICE: محاولة استخدام النموذج على الجهاز فقط إذا كان متاحًا ويدعم نوع الطلب بخلاف ذلك، سجِّل خطأ على الجهاز ثم استخدِم النموذج المستضاف على السحابة الإلكترونية تلقائيًا.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_ON_DEVICE: محاولة استخدام النموذج على الجهاز فقط إذا كان متاحًا ويدعم نوع الطلب بخلاف ذلك، اطرح استثناءً.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_ON_DEVICE)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_ON_DEVICE;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • PREFER_IN_CLOUD: محاولة استخدام النموذج المستضاف على السحابة الإلكترونية إذا كان الجهاز متصلاً بالإنترنت وكان النموذج متاحًا إذا كان الجهاز غير متصل بالإنترنت، سيتم استخدام النموذج المتوفّر على الجهاز فقط. في جميع حالات التعذّر الأخرى، يجب طرح استثناء.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.PREFER_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.PREFER_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    
  • ONLY_IN_CLOUD: محاولة استخدام النموذج المستضاف على السحابة الإلكترونية إذا كان الجهاز متصلاً بالإنترنت وكان النموذج متاحًا بخلاف ذلك، اطرح استثناءً.

    Kotlin

    val config = OnDeviceConfig(mode = InferenceMode.ONLY_IN_CLOUD)
    

    Java

    InferenceMode mode = InferenceMode.ONLY_IN_CLOUD;
    OnDeviceConfig config = new OnDeviceConfig(mode);
    

تحديد ما إذا تم استخدام الاستدلال على الجهاز فقط أو في السحابة

إذا كان وضع الاستدلال لديك هو PREFER_ON_DEVICE أو PREFER_IN_CLOUD، قد يكون من المفيد معرفة الوضع الذي تم استخدامه لطلبات معيّنة. يتم توفير هذه المعلومات من خلال السمة inferenceSource لكل ردّ.

عند الوصول إلى هذه السمة، ستكون القيمة المعروضة إما ON_DEVICE أو IN_CLOUD.

Kotlin

// ...

print("You used: ${result.response.inferenceSource}")

print(result.response.text)

Java

// ...

System.out.println("You used: " + result.getResponse().getInferenceSource());

System.out.println(result.getResponse().getText());

تحديد نموذج لاستخدامه

انقر على مقدّم خدمة Gemini API لعرض المحتوى والرمز الخاصين بمقدّم الخدمة على هذه الصفحة.

يمكنك تحديد نموذج لاستخدامه عند إنشاء مثيل generativeModel (Kotlin | Java).

  • تحديد نموذج مستضاف على السحابة الإلكترونية:

    • إذا كان وضع الاستنتاج هو PREFER_ON_DEVICE أو PREFER_IN_CLOUD أو ONLY_IN_CLOUD، يجب تحديد نموذج مستضاف على السحابة الإلكترونية بشكل صريح لاستخدامه. لا تتضمّن حزمة تطوير البرامج (SDK) نموذجًا تلقائيًا مستضافًا على السحابة الإلكترونية.

    • يمكنك الاطّلاع على أسماء النماذج لجميع نماذج Gemini المستضافة على السحابة الإلكترونية.

  • تحديد نموذج على الجهاز فقط:

    • إذا كان وضع الاستنتاج PREFER_ON_DEVICE أو PREFER_IN_CLOUD أو ONLY_ON_DEVICE، يمكنك اختياريًا تحديد "فئة" من النماذج على الجهاز فقط لاستخدامها في onDeviceConfig. الفئات هي مزيج من مرحلة الإصدار وخصائص الأداء.

    • في ما يلي قيم الفئات المسموح بها.
      يختار AICore تلقائيًا النموذج المتوافق مع الجهاز فقط والذي يستوفي شروط الفئة المحدّدة ويدعمه الجهاز. على سبيل المثال، إذا حدّدت PREVIEW وكان الجهاز هو Pixel 9، سيتم على الأرجح اختيار Gemini Nano 4 Full [معاينة] (nano-v4-full) تلقائيًا.

      • STABLE: أحدث إصدار ثابت من النموذج الذي يعمل على الجهاز فقط.

        • تم اختبارها بالكامل وعلى أجهزة المستهلكين.

        • على سبيل المثال، Gemini Nano 3 (nano-v3) أو Gemini Nano 2 (nano-v2).

        • الإعداد التلقائي للنموذج على الجهاز فقط في حال عدم تحديد أي OnDeviceModelOption.

      • PREVIEW: أحدث معاينة لنموذج على الجهاز فقط مع إمكانات أداء كاملة

        • تم تصميمه لتعزيز القدرة على التفكير المنطقي وإنجاز المهام المعقّدة.

        • على سبيل المثال، Gemini Nano 4 Full [معاينة] (nano-v4-full، والذي يستند إلى Gemma 4 E4B).

      • PREVIEW_FAST: أحدث معاينة لنموذج على الجهاز فقط يتسم بالسرعة.

        • تم تحسينها لتحقيق أقصى سرعة وأقل وقت استجابة.

        • على سبيل المثال، ‫Gemini Nano 4 Fast [معاينة] (nano-v4-fast، وهو يعتمد على Gemma 4 E2B).

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        modelName = "CLOUD_HOSTED_MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(
            mode = InferenceMode.INFERENCE_MODE,
            // (Optional) Specify an on-device model category.
            // AICore will auto-select an on-device model based on this category.
            // If not specified, AICore will auto-select the default stable on-device model.
            modelOption = OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        // Specify a cloud-hosted model.
        // Required for `PREFER_ON_DEVICE`, `PREFER_IN_CLOUD`, and `ONLY_IN_CLOUD` inference modes.
        "CLOUD_HOSTED_MODEL_NAME",
        /* config = */ null,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        new OnDeviceConfig(
                /* mode = */ InferenceMode.INFERENCE_MODE,
                /* maxOutputTokens = */ null,
                /* temperature = */ null,
                /* topK = */ null,
                /* seed = */ null,
                /* candidateCount = */ 1,
                // (Optional) Specify an on-device model category.
                // AICore will auto-select an on-device model based on this category.
                // If not specified, AICore will auto-select the default stable on-device model.
                /* modelOption = */ OnDeviceModelOption.ON-DEVICE_MODEL_CATEGORY)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

استخدام إعدادات النموذج للتحكّم في الردود

انقر على مقدّم خدمة Gemini API لعرض المحتوى والرمز الخاصين بمقدّم الخدمة على هذه الصفحة.

في كل طلب يتم إرساله إلى نموذج، يمكنك إرسال إعدادات النموذج للتحكّم في طريقة إنشاء النموذج للرد. توفّر النماذج المستضافة على السحابة الإلكترونية والنماذج التي تعمل على الجهاز فقط خيارات إعداد مختلفة (المَعلمات السحابية مقابل المَعلمات التي تعمل على الجهاز فقط).

بالنسبة إلى النماذج المستضافة على السحابة الإلكترونية، اضبط إعداداتها مباشرةً في إعدادات النموذج. ومع ذلك، بالنسبة إلى النماذج التي تعمل على الجهاز فقط، يجب ضبط إعداداتها ضمن onDeviceConfig.

يتم الاحتفاظ بالإعدادات طوال مدة تشغيل الجهاز الظاهري. إذا أردت استخدام إعدادات مختلفة، أنشئ مثيلاً جديدًا من GenerativeModel باستخدام هذه الإعدادات.

في ما يلي مثال يضبط إعدادات النماذج المستضافة على السحابة الإلكترونية والنماذج المتوفّرة على الجهاز فقط التي يمكن استخدامها في حال تم ضبط PREFER_ON_DEVICE على وضع الاستدلال:

Kotlin

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel("MODEL_NAME",
        // Config for cloud-hosted model
        generationConfig = generationConfig {
          temperature = 0.8f,
          topK = 10
        },
        // Config for on-device model
        onDeviceConfig = onDeviceConfig {
          mode = InferenceMode.PREFER_ON_DEVICE,
          temperature = 0.8f,
          topK = 5
        })

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setTemperature(0.8f)
    .setTopK(10)
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig.Builder()
    .setMode(InferenceMode.PREFER_ON_DEVICE)
    .setTemperature(0.8f)
    .setTopK(5)
    .build();

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        generationConfig,
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);