בחירת דגם

גישה ישירה למודל מאפשרת לכם לבחור באופן מפורש את הגרסה של Gemini Nano שבה האפליקציה שלכם משתמשת. אתם יכולים להגדיר את שלב ההשקה של המודל ואת העדפת הביצועים, וכך לקבל גישה מוקדמת ליכולות חדשות של המודל או לבצע אופטימיזציה של האפליקציה בהתאם למגבלות חומרה ספציפיות.

הסבר על הגדרות המודלים

כדי לבחור מודל ספציפי, צריך להגדיר שני פרמטרים עיקריים במחלקה ModelConfig: שלב ההשקה והעדפת המודל.

שלבי ההשקה

שלב ההשקה מאפשר לכם לבחור בין מודל יציב לבין מודל בגרסת טרום-השקה (Preview):

  • יציבה (ModelReleaseStage.STABLE): בחירה בגרסת המודל העדכנית ביותר שנבדקה באופן מלא ונמצאת במכשירי הצרכנים. זוהי הגדרת ברירת המחדל.
  • ‫Preview (ModelReleaseStage.PREVIEW): בחירת גרסת המודל האחרונה בשלב התצוגה המקדימה. בשלב הזה אפשר לבדוק תכונות בטא או ארכיטקטורות מודלים חדשות יותר לפני שהן נפרסות באופן נרחב בשלב היציב.

במדריך לתצוגה המקדימה למפתחים של AICore מפורטים התנאים המוקדמים והוראות ההרשמה.

העדפת מודל

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

  • ‫מלא (ModelPreference.FULL): ההעדפה הזו מומלצת כשדיוק המודל והיכולות המלאות שלו חשובים יותר מהמהירות.
  • מהיר (ModelPreference.FAST): ההעדפה הזו מומלצת לאפליקציות שרגישות לזמן האחזור ודורשות זמני תגובה מינימליים.

הגדרת המודל הגנרטיבי

כדי להשתמש בגרסה ספציפית של מודל, צריך להגדיר ModelConfig ולהעביר אותה אל GenerationConfig כשמפעילים את הלקוח.

בדוגמה הבאה מוסבר איך להגדיר את הלקוח כך שישתמש במודל Fast משלב Preview:

Kotlin

// Define the configuration with a specific stage and preference
val previewFastConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FAST
    }
}

// Initialize the GenerativeModel with the configuration
val generativeModel = Generation.getClient(previewFastConfig)

Java

// Define the configuration with a specific stage and preference
GenerationConfig previewFastConfig = new GenerationConfig.Builder()
    .setModelConfig(new ModelConfig.Builder()
        .setReleaseStage(ModelReleaseStage.PREVIEW)
        .setPreference(ModelPreference.FAST)
        .build())
    .build();

// Initialize the GenerativeModel with the configuration
GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

בדיקת הזמינות של המודלים

לא כל המכשירים תומכים בכל שילוב של שלב הפצה והעדפת מודל. מודלים בגרסת טרום-השקה זמינים רק ברשימת המכשירים הנתמכים במדריך לתצוגה מקדימה למפתחים של AICore.

ב-API אין שיטה להצגת רשימה של כל הגדרות המודל הזמינות מראש. במקום זאת, צריך לאתחל את הלקוח עם ההגדרות הרצויות ואז לאמת את הסטטוס שלו.

  • הפעלת הלקוח: יוצרים את המכונה של GenerativeModel באמצעות ModelConfig המועדף.
  • בדיקת הסטטוס: מפעילים את השיטה checkStatus() במכונה כדי לוודא שגרסת המודל הספציפית זמינה במכשיר.

Kotlin

val generativeModel = Generation.getClient(previewFastConfig)

// Verify that the specific preview model is available
val status = generativeModel.checkStatus()

when (status) {
    FeatureStatus.UNAVAILABLE -> {
        // Specified preview model is not available on this device
    }
    FeatureStatus.DOWNLOADABLE -> {
        // Specified preview model is available for this device, but not downloaded yet.
        // Model may be downloaded through the AICore app or by calling generativeModel.download()
    }
    FeatureStatus.AVAILABLE -> {
        // Proceed with inference
    }
    FeatureStatus.DOWNLOADING -> {
        // Specified preview model is downloading
    }
}

Java

GenerativeModel generativeModel = Generation.INSTANCE.getClient(previewFastConfig);

// For Java, use GenerativeModelFutures if you prefer ListenableFuture
GenerativeModelFutures generativeModelFutures = GenerativeModelFutures.from(generativeModel);
Futures.addCallback(
    generativeModelFutures.checkStatus(),
    new FutureCallback<Integer>() {
        @Override
        public void onSuccess(Integer status) {
            if (status == FeatureStatus.AVAILABLE) {
                // Proceed with inference
            } else if (status == FeatureStatus.DOWNLOADING) {
                // Specified preview model is downloading
            } else if (status == FeatureStatus.DOWNLOADABLE) {
                // Specified preview model is available for this device, but not downloaded yet.
                // Call generativeModelFutures.download(callback) or use the AICore app.
            } else if (status == FeatureStatus.UNAVAILABLE) {
                // Specified preview model is not available on this device
            }
        }

        @Override
        public void onFailure(Throwable t) {
            // Handle failure
        }
    },
    ContextCompat.getMainExecutor(context));

כדי להבטיח תאימות קדימה עם הגדרות פוטנציאליות בעתיד, ה-SDK נועד למנוע הפעלה של GenAiException במהלך האתחול של הלקוח, ולהסתמך רק על השיטה checkStatus() לאימות הזמינות.

שיטות מומלצות

  • הטמעת אסטרטגיות חלופיות: לא מובטח שמודלים בגרסת טרום-השקה יהיו זמינים בכל המכשירים, לכן תמיד צריך להטמיע אסטרטגיה חלופית. אם הפונקציה checkStatus() מחזירה את הערך false להגדרות לתצוגה מקדימה, האפליקציה צריכה לחזור בצורה חלקה ל-ModelReleaseStage.STABLE ול-ModelPreference.FULL.
  • שימוש בשלבי ההשקה של המודל לפיתוח ולסביבת הייצור: השתמשו בשלב גרסת טרום-השקה (Preview) במהלך הפיתוח והבדיקות הפנימיות כדי להעריך את השיפורים הקרובים במודל. כדי להבטיח התנהגות עקבית למשתמשים, כדאי לעבור לערוץ יציב לגרסאות הייצור הציבוריות.

בעיות מוכרות

  • במכשירים מסוימים בשלב גרסת בטא, לא תהיה תמיכה בכמה מועמדים בפלט, ותוחזר שגיאה אם הערך של candidateCount יהיה גדול מ-1. פרטים נוספים זמינים במאמרי העזרה של ה-API.
  • בחלק מההטמעות אין תמיכה בכמה דוגמיות. הביצועים יהיו איטיים יותר מאשר בגרסת הייצור הסופית.