אפשרויות הגדרה של חוויות היברידיות באפליקציות ל-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: הגרסה העדכנית ביותר של המודל במכשיר בגרסת טרום-השקה (Preview) עם יכולות ביצועים מלאות.

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

        • לדוגמה, Gemini Nano 4 Full [גרסת טרום-השקה (Preview)] (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