Gemini מחזירים תשובות כטקסט לא מובנה כברירת מחדל. עם זאת, יש תרחישי שימוש שבהם נדרש טקסט מובנה, כמו JSON. לדוגמה, יכול להיות שאתם משתמשים בתשובה למשימות אחרות בהמשך התהליך שדורשות סכימת נתונים מוגדרת.
כדי לוודא שהפלט שנוצר על ידי המודל תמיד תואם לסכימה ספציפית, אתם יכולים להגדיר סכימה, שפועלת כמו תוכנית פעולה לתשובות של המודל. לאחר מכן, אפשר לחלץ נתונים ישירות מהפלט של המודל עם פחות עיבודים.
הנה כמה דוגמאות:
מוודאים שהתגובה של המודל היא בפורמט JSON תקין ושהיא תואמת לסכימה שסיפקתם.
לדוגמה, המודל יכול ליצור רשומות מובנות למתכונים שתמיד כוללות את שם המתכון, רשימת המצרכים והשלבים. לאחר מכן, תוכלו לנתח ולהציג את המידע הזה בקלות רבה יותר בממשק המשתמש של האפליקציה.הגבלת האופן שבו מודל יכול להגיב במהלך משימות סיווג.
לדוגמה, אתם יכולים להגדיר שהמודל יוסיף הערות לטקסט עם קבוצה ספציפית של תוויות (למשל, קבוצה ספציפית של סוגי enum כמוpositiveו-negative), במקום תוויות שהמודל יוצר (שיכולות להיות בעלות מידת שונות כמוgood,positive,negativeאוbad).
בדף הזה מוסבר איך ליצור פלט מובנה (כמו JSON וטיפוסים בני מנייה (enum)) בחוויות היברידיות באפליקציות אינטרנט.
לפני שמתחילים
חשוב לוודא שהשלמתם את מדריך תחילת העבודה ליצירת חוויות היברידיות.
הגדרת פלט מובנה
אפשר ליצור פלט מובנה (כמו JSON ו-enums) להסקת מסקנות באמצעות מודלים שמתארחים בענן ומודלים שפועלים במכשיר.
עבור היקש היברידי, השתמשו גם ב-inCloudParams וגם ב-onDeviceParams כדי להגדיר את המודל להגיב עם פלט מובנה. במצבים האחרים,
משתמשים רק בתצורה הרלוונטית.
בשביל
inCloudParams: מציינים אתresponseMimeTypeהמתאים (לדוגמה,application/json) ואתresponseSchemaשרוצים שהמודל ישתמש בו.בשביל
onDeviceParams: מציינים אתresponseConstraintשרוצים שהמודל ישתמש בו.
פלט JSON
בדוגמה הבאה מותאמת דוגמת פלט JSON כללית כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
const jsonSchema = Schema.object({
properties: {
characters: Schema.array({
items: Schema.object({
properties: {
name: Schema.string(),
accessory: Schema.string(),
age: Schema.number(),
species: Schema.string(),
},
optionalProperties: ["accessory"],
}),
}),
}
});
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
// ...
פלט של טיפוס בן מנייה (enum)
בדוגמה הבאה מותאם פלט כללי של enum כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
const enumSchema = Schema.enumString({
enum: ["drama", "comedy", "documentary"],
});
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
responseMimeType: "text/x.enum",
responseSchema: enumSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: enumSchema
}
}
});
// ...