אפשרויות הגדרה של חוויות היברידיות באפליקציות ל-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

val model = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "MODEL_NAME",
        onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
    )

Java

GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
        "MODEL_NAME",
        new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

כאן אפשר למצוא את שמות המודלים של כל המודלים הנתמכים של Gemini.

שימוש בהגדרות המודל כדי לשלוט בתשובות

לוחצים על הספק 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);