Gemini models return responses as unstructured text by default. עם זאת, יש תרחישי שימוש שבהם נדרש טקסט מובנה, כמו JSON. לדוגמה, יכול להיות שאתם משתמשים בתשובה למשימות אחרות בהמשך התהליך שדורשות סכימת נתונים מוגדרת.
כדי לוודא שהפלט שנוצר על ידי המודל תמיד תואם לסכימה ספציפית, אתם יכולים להגדיר סכימה, שפועלת כמו תוכנית לשימוש בתשובות של המודל. לאחר מכן, אפשר לחלץ נתונים ישירות מהפלט של המודל עם פחות עיבוד לאחר מכן.
הנה כמה דוגמאות:
חשוב לוודא שהתשובה של המודל היא בפורמט JSON תקין ושהיא תואמת לסכימה שסיפקתם.
לדוגמה, המודל יכול ליצור רשומות מובנות למתכונים שתמיד כוללות את שם המתכון, רשימת המצרכים והשלבים. לאחר מכן, תוכלו לנתח ולהציג את המידע הזה בקלות רבה יותר בממשק המשתמש של האפליקציה.הגבלת האופן שבו מודל יכול להגיב במהלך משימות סיווג.
לדוגמה, אתם יכולים לבקש מהמודל להוסיף הערות לטקסט עם קבוצה ספציפית של תוויות (למשל, קבוצה ספציפית של ספירות כמוpositiveו-negative), במקום תוויות שהמודל יוצר (שיכולות להיות עם מידה מסוימת של שונות כמוgood,positive,negativeאוbad).
בדף הזה מוסבר איך ליצור פלט מובנה (כמו JSON ו-enums) בחוויות היברידיות באפליקציות אינטרנט.
לפני שמתחילים
חשוב לוודא שהשלמתם את המדריך למתחילים ליצירת חוויות היברידיות.
הגדרת פלט מובנה
אפשר ליצור פלט מובנה (כמו 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
}
}
});
// ...