خيارات الإعداد للتجارب المختلطة في تطبيقات 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