בעזרת Prompt API אפשר לבחור באופן מפורש את הגרסה של Gemini Nano שבה האפליקציה משתמשת. על ידי הגדרת שלב ההשקה של המודל והעדפת הביצועים, אפשר לגשת ליכולות חדשות של המודל מוקדם יותר או לבצע אופטימיזציה של האפליקציה למגבלות חומרה ספציפיות.
הסבר על הגדרות המודל
כדי לבחור מודל ספציפי, צריך להגדיר שני פרמטרים מרכזיים במחלקה ModelConfig: שלב ההשקה והעדפת המודל.
שלבי ההפצה
בשלב ההשקה אפשר לבחור בין מודל יציב למודל בתצוגה מקדימה:
- יציבה (
ModelReleaseStage.STABLE): בחירה של הגרסה האחרונה של המודל שנבדקה באופן מלא וזמינה במכשירי צריכה. זוהי הגדרת ברירת המחדל. - תצוגה מקדימה (
ModelReleaseStage.PREVIEW): בחירה של הגרסה העדכנית ביותר של המודל בשלב התצוגה המקדימה. בשלב הזה אפשר לבדוק תכונות בטא או ארכיטקטורות חדשות יותר של מודלים לפני שהן נפרסות באופן נרחב לשלב היציב.
מידע על הדרישות המוקדמות והוראות ההרשמה לתצוגה המקדימה למפתחים זמין במדריך לתצוגה המקדימה למפתחים של AICore.
העדפת מודל
העדפת המודל מאפשרת לכם לציין אילו מאפייני ביצועים הכי חשובים לתרחיש השימוש שלכם.
- מלאה (
ModelPreference.FULL): מומלץ להשתמש בהגדרה הזו כשחשובים לכם דיוק המודל והיכולות המלאות שלו יותר מהמהירות. - מהיר (
ModelPreference.FAST): ההעדפה הזו מומלצת לאפליקציות שרגישות לזמן האחזור ודורשות זמני תגובה מינימליים.
הגדרת המודל הגנרטיבי
כדי להשתמש בווריאציה ספציפית של מודל, צריך להגדיר ModelConfig ולהעביר אותו אל GenerationConfig כשמאתחלים את הלקוח.
בדוגמה הבאה מוסבר איך להגדיר את הלקוח לשימוש במודל מהיר בשלב התצוגה המקדימה:
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. - שימוש בשלבי הפצה של מודלים לפיתוח ולייצור: כדאי להשתמש בשלב התצוגה המקדימה במהלך הפיתוח והבדיקות הפנימיות כדי להעריך שיפורים עתידיים במודלים. כדי להבטיח התנהגות עקבית למשתמשים, מומלץ לעבור לגרסה יציבה בגרסאות הייצור הציבוריות.
בעיות מוכרות
- במכשירים מסוימים בשלב ההשקה של הגרסה לתצוגה מקדימה, לא תהיה תמיכה בכמה מועמדים בפלט, ותוחזר שגיאה אם הערך של
candidateCountיהיה גדול מ-1. פרטים נוספים זמינים בהפניית API. - בחלק מההטמעות אין תמיכה בכמה דוגמאות. הביצועים יהיו איטיים יותר מאשר בגרסה הסופית.
- כרגע אפשר להזין תמונות רק במכשיר Pixel 10.
- יכול להיות שמודל
nanov4-fastייתן תשובות לא טובות להנחיות מסוימות במכשירים מסוימים.