אפשרויות הגדרה של חוויות היברידיות באפליקציות ל-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 [תצוגה מקדימה] (nano-v4-full, שמבוסס על Gemma 4 E4B).

      • ‫PREVIEW_FAST: המודל המהיר והעדכני ביותר בגרסת טרום-השקה (Preview) שפועל במכשיר.

        • אופטימיזציה למהירות מקסימלית ולזמן אחזור קצר יותר.

        • לדוגמה, Gemini Nano 4 Fast [Preview] (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