כברירת מחדל, מודלים של Gemini מחזירים תשובות כטקסט לא מובנה. עם זאת, יש תרחישי שימוש שבהם נדרש טקסט מובנה, כמו JSON. לדוגמה, יכול להיות שאתם משתמשים בתשובה למשימות אחרות שדורשות סכימת נתונים מוגדרת.
כדי לוודא שהפלט שנוצר על ידי המודל תמיד תואם לסכימה ספציפית, אתם יכולים להגדיר סכימה, שפועלת כמו תוכנית לתשובות של המודל. לאחר מכן, אפשר לחלץ נתונים ישירות מהפלט של המודל עם פחות עיבוד לאחר מכן.
הנה כמה דוגמאות:
לוודא שהתשובה של המודל היא JSON תקין ותואמת לסכימה שסיפקתם.
לדוגמה, המודל יכול ליצור רשומות מובנות למתכונים שתמיד כוללות את שם המתכון, רשימת המצרכים והשלבים. לאחר מכן, תוכלו לנתח ולהציג את המידע הזה בקלות רבה יותר בממשק המשתמש של האפליקציה.הגבלת האופן שבו מודל יכול להגיב במהלך משימות סיווג.
לדוגמה, אתם יכולים להגדיר שהמודל יוסיף הערות לטקסט עם קבוצה ספציפית של תוויות (למשל, קבוצה ספציפית של סוגי enum כמוpositiveו-negative), במקום תוויות שהמודל יוצר (שיכולות להיות עם מידה מסוימת של שונות כמוgood,positive,negativeאוbad).
בדף הזה מוסבר איך ליצור פלט מובנה (כמו JSON וספירות) בחוויות היברידיות באפליקציות אינטרנט.
לפני שמתחילים
חשוב לוודא שהשלמתם את המדריך למתחילים ליצירת חוויות היברידיות.
הגדרת פלט מובנה
אפשר ליצור פלט מובנה (כמו JSON ו-enums) להסקת מסקנות באמצעות מודלים שמתארחים בענן ומודלים שפועלים במכשיר.
כדי להגדיר את המודל כך שיגיב עם פלט מובנה, צריך להשתמש ב-inCloudParams וב-onDeviceParams. במצבים האחרים,
משתמשים רק בהגדרה הרלוונטית.
בשביל
inCloudParams: מציינים אתresponseMimeTypeהמתאים (לדוגמה,application/json) ואתresponseSchemaשרוצים שהמודל ישתמש בו.בשביל
onDeviceParams: מציינים אתresponseConstraintשרוצים שהמודל ישתמש בו.
פלט JSON
בדוגמאות הבאות מותאמת דוגמת הפלט הכללית ב-JSON כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):
דוגמה 1: שימוש בשיטות העזר של Firebase Schema
בדוגמה הזו נעשה שימוש בשיטות עזר שסופקו על ידי Firebase AI Logic SDK כדי להגדיר את הסכימה בצורה קומפקטית יותר.
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// This schema can also be defined as a plain JSON object.
// See next snippet for an example of a plain JSON schema.
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: {
model: "gemini-3.1-flash-lite",
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const result = await model
.generateContent(
"Create profiles for some characters for a fantasy story.");
console.log(result.response.text());
console.log(JSON.parse(result.response.text()));
// ...
דוגמה 2: שימוש בסכימת JSON רגילה
בדוגמה הזו מוגדרת הסכימה באמצעות JSON בלבד, והתוצאות שמתקבלות זהות.
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// The JSON schema defined as a plain JSON object.
const jsonSchema = {
"type": "object",
"properties": {
"characters": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"nullable": false
},
"accessory": {
"type": "string",
"nullable": false
},
"age": {
"type": "number",
"nullable": false
},
"species": {
"type": "string",
"nullable": false
}
},
"nullable": false,
"required": [
"name",
"age",
"species"
]
},
"nullable": false
}
},
"nullable": false,
"required": [
"characters"
]
};
const model = getGenerativeModel(ai, {
mode: InferenceMode.PREFER_ON_DEVICE,
inCloudParams: {
generationConfig: {
model: "gemini-3.1-flash-lite",
responseMimeType: "application/json",
responseSchema: jsonSchema
},
}
onDeviceParams: {
promptOptions: {
responseConstraint: jsonSchema
}
}
});
const result = await model
.generateContent(
"Create profiles for some characters for a fantasy story.");
console.log(result.response.text());
console.log(JSON.parse(result.response.text()));
פלט של טיפוס בן מנייה (enum)
בדוגמה הבאה מותאמת דוגמת הפלט הכללית של enum כדי להתאים להסקת מסקנות היברידית (בדוגמה הזו, PREFER_ON_DEVICE):
import {
getAI,
getGenerativeModel,
Schema
} from "firebase/ai";
// enumSchema can also be defined as a plain JSON schema instead of
// using the `Schema` helper methods, just as in the JSON output example.
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
}
}
});
// ...