Gemini Modelle geben standardmäßig Antworten als unstrukturierten Text zurück. Einige Anwendungsfälle erfordern jedoch strukturierten Text wie JSON. Möglicherweise verwenden Sie die Antwort beispielsweise für andere nachgelagerte Aufgaben, die ein festgelegtes Datenschema erfordern.
Damit die generierte Ausgabe des Modells immer einem bestimmten Schema entspricht, können Sie ein Schema definieren, das wie eine Blaupause für Modellantworten funktioniert. Anschließend können Sie Daten direkt aus der Ausgabe des Modells extrahieren, ohne dass eine umfangreiche Nachbearbeitung erforderlich ist.
Hier einige Beispiele:
Sorgen Sie dafür, dass die Antwort eines Modells gültiges JSON erzeugt und Ihrem angegebenen Schema entspricht.
Das Modell kann beispielsweise strukturierte Einträge für Rezepte generieren, die immer den Rezeptnamen, eine Liste der Zutaten und die Schritte enthalten. Anschließend können Sie diese Informationen einfacher in der UI Ihrer App parsen und anzeigen.Beschränken Sie die Antwortmöglichkeiten eines Modells bei Klassifizierungsaufgaben.
Sie können beispielsweise festlegen, dass das Modell Text mit einer bestimmten Gruppe von Labels (z. B. einer bestimmten Gruppe von Enums wiepositiveundnegative) anstatt mit Labels annotiert, die das Modell selbst erstellt (die eine gewisse Variabilität aufweisen können, z. B.good,positive,negativeoderbad).
Auf dieser Seite wird beschrieben, wie Sie in Ihren hybriden Webanwendungen strukturierte Ausgaben (z. B. JSON und Enums) generieren.
Hinweis
Achten Sie darauf, dass Sie den Startleitfaden zum Erstellen hybrider Anwendungen durchgearbeitet haben.
Konfiguration für strukturierte Ausgaben festlegen
Das Generieren strukturierter Ausgaben (z. B. JSON und Enums) wird für die Inferenz mit sowohl in der Cloud gehosteten als auch auf dem Gerät ausgeführten Modellen unterstützt.
Verwenden Sie für die hybride Inferenz sowohl
inCloudParams
als auch
onDeviceParams
, um das Modell so zu konfigurieren, dass es mit strukturierter Ausgabe antwortet. Verwenden Sie für die anderen Modi nur die entsprechende Konfiguration.
Für
inCloudParams: Geben Sie den entsprechendenresponseMimeType(z. B.application/json) sowie dasresponseSchemaan, das das Modell verwenden soll.Für
onDeviceParams: Geben Sie dieresponseConstraintan, die das Modell verwenden soll.
JSON-Ausgabe
In den folgenden Beispielen wird das
allgemeine JSON-Ausgabebeispiel
an die hybride Inferenz angepasst (in diesem Beispiel PREFER_ON_DEVICE):
Beispiel 1: Firebase-Hilfsmethoden für Schema verwenden
In diesem Beispiel werden Hilfsmethoden verwendet, die vom Firebase AI Logic SDK bereitgestellt werden, um die Schemadefinition kompakter zu gestalten.
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()));
// ...
Beispiel 2: Einfaches JSON-Schema verwenden
In diesem Beispiel wird das Schema nur mit JSON definiert und es werden dieselben Ergebnisse zurückgegeben.
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-Ausgabe
Im folgenden Beispiel wird das
allgemeine Enum-Ausgabebeispiel
an die hybride Inferenz angepasst (in diesem Beispiel 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
}
}
});
// ...