خيارات الإعداد للتجارب المختلطة في تطبيقات 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_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_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 لعرض المحتوى والرمز البرمجي الخاصَّين بالمزوّد على هذه الصفحة.

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

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

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

Kotlin

// Config for cloud-hosted model
val generationConfig = generationConfig {
    maxOutputTokens = 200
    stopSequences = listOf("red")
}

// Config for on-device model
val onDeviceConfig = OnDeviceConfig(
    mode = InferenceMode.PREFER_ON_DEVICE,
    maxOutputTokens = 200
)

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "CLOUD_MODEL_NAME",
        generationConfig = generationConfig,
        onDeviceConfig = onDeviceConfig
    )

Java

// Config for cloud-hosted model
GenerationConfig generationConfig = new GenerationConfig.Builder()
    .setMaxOutputTokens(200)
    .setStopSequences(List.of("red"))
    .build();

// Config for on-device model
OnDeviceConfig onDeviceConfig = new OnDeviceConfig(
    /* mode = */ InferenceMode.PREFER_ON_DEVICE,
    /* maxOutputTokens = */ 200,
    /* temperature = */ null,
    /* topK = */ null,
    /* seed = */ null,
    /* candidateCount = */ 1,
    /* modelOption = */ null
);

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "CLOUD_MODEL_NAME",
        generationConfig,
        /* safetySettings = */ null,
        /* tools = */ null,
        /* toolConfig = */ null,
        /* systemInstruction = */ null,
        /* requestOptions = */ new RequestOptions(),
        onDeviceConfig
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);


تقديم ملاحظات حول تجربتك مع "Firebase AI Logic"