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