Gemini-Modelle geben standardmäßig Antworten als unstrukturierten Text zurück. Für einige Anwendungsfälle ist jedoch strukturierter Text wie JSON erforderlich. Möglicherweise verwenden Sie die Antwort beispielsweise für andere nachgelagerte Aufgaben, für die ein etabliertes Datenschema erforderlich ist.
Damit die vom Modell generierte Ausgabe immer einem bestimmten Schema entspricht, können Sie ein Schema definieren, das als Vorlage für Modellantworten dient. Sie können dann 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 enthält und Ihrem bereitgestellten Schema entspricht.
Das Modell kann beispielsweise strukturierte Einträge für Rezepte generieren, die immer den Rezeptnamen, die Zutatenliste und die Zubereitungsschritte enthalten. Sie können diese Informationen dann einfacher in der Benutzeroberfläche Ihrer App parsen und anzeigen.Einschränken, wie ein Modell bei Klassifizierungsaufgaben reagieren kann
Sie können beispielsweise festlegen, dass das Modell Text mit einer bestimmten Gruppe von Labels (z. B. einer bestimmten Gruppe von Enums wiepositiveundnegative) anstelle von 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 strukturierte Ausgaben (z. B. JSON und Enums) in Ihren hybriden Benutzeroberflächen für Web-Apps generieren.
Hinweis
Achten Sie darauf, dass Sie den Startleitfaden für die Entwicklung hybrider Erlebnisse durchgearbeitet haben.
Konfiguration für strukturierte Ausgabe festlegen
Die Generierung strukturierter Ausgaben (wie JSON und Enums) wird für die Inferenz sowohl mit cloudbasierten als auch mit On-Device-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 die entsprechenderesponseMimeType(z. B.application/json) sowie dieresponseSchemaan, die das Modell verwenden soll.Für
onDeviceParams: Geben Sie dieresponseConstraintan, die das Modell verwenden soll.
JSON-Ausgabe
Im folgenden Beispiel wird die allgemeine JSON-Ausgabe für die hybride Inferenz (in diesem Beispiel PREFER_ON_DEVICE) angepasst:
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-Ausgabe
Im folgenden Beispiel wird das allgemeine Beispiel für die Enum-Ausgabe an die hybride Inferenz (in diesem Beispiel PREFER_ON_DEVICE) angepasst:
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
}
}
});
// ...