אפשרויות הגדרה של חוויות היברידיות באפליקציות ל-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_ON_DEVICE, אפשר באופן אופציונלי לציין ב-onDeviceConfig 'קטגוריה' של מודל במכשיר לשימוש. הקטגוריות הן שילוב של שלב ההשקה ומאפייני הביצועים.

    • ערכי הקטגוריות הנתמכים מפורטים בהמשך.‫
      AICore בוחר באופן אוטומטי את המודל במכשיר שעומד בתנאים של הקטגוריה שצוינה ונתמך על ידי המכשיר. לדוגמה, אם מציינים PREVIEW והמכשיר הוא Pixel 9, סביר להניח שתיבחר אוטומטית האפשרות Gemini Nano 4 Full [Preview] (nano-v4-full).

      • STABLE: המודל העדכני ביותר יציב במכשיר.

        • נבדק באופן מלא במכשירי צרכנים.

        • לדוגמה, Gemini Nano 3‏ (nano-v3) או Gemini Nano 2‏ (nano-v2).

        • הגדרת ברירת המחדל של המודל במכשיר אם לא מצוין OnDeviceModelOption.

      • PREVIEW: תצוגה מקדימה של המודל העדכני ביותר במכשיר עם יכולות ביצוע מלאות.

        • יכולת חשיבה רציונלית גבוהה יותר ויכולת התמודדות עם משימות מורכבות.

        • לדוגמה, Gemini Nano 4 Full [Preview] (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 כדי לראות בדף הזה תוכן וקוד שספציפיים לספק.

בכל בקשה למודל, אפשר לשלוח הגדרת מודל כדי לשלוט באופן שבו המודל יוצר תשובה. מודלים שמתארחים בענן ומודלים במכשיר מציעים אפשרויות הגדרה שונות (פרמטרים של cloud לעומת on-device).

במודלים שמארחים בענן, מגדירים את ההגדרה שלהם ישירות בהגדרה של המודל. עם זאת, במודלים במכשיר, צריך להגדיר את התצורה שלהם בתוך 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);