Les modèles Gemini renvoient des réponses sous forme de texte non structuré par défaut. Cependant, certains cas d'utilisation nécessitent du texte structuré, comme JSON. Par exemple, vous pouvez utiliser la réponse pour d'autres tâches en aval qui nécessitent un schéma de données établi.
Pour vous assurer que la sortie générée du modèle respecte toujours un schéma spécifique, vous pouvez définir un schéma, qui fonctionne comme un plan pour les réponses du modèle. Vous pouvez ensuite extraire directement les données de la sortie du modèle avec moins de post-traitement.
Voici quelques exemples :
Assurez-vous que la réponse d'un modèle produit du code JSON valide et qu'elle est conforme au schéma que vous avez fourni.
Par exemple, le modèle peut générer des entrées structurées pour les recettes qui incluent toujours le nom de la recette, la liste des ingrédients et les étapes. Vous pouvez ensuite analyser et afficher plus facilement ces informations dans l'interface utilisateur de votre application.Limitez la façon dont un modèle peut répondre lors des tâches de classification.
Par exemple, vous pouvez demander au modèle d'annoter du texte avec un ensemble spécifique d'étiquettes (par exemple, un ensemble spécifique d'enums commepositiveetnegative), plutôt qu'avec des étiquettes que le modèle produit (qui peuvent présenter un certain degré de variabilité commegood,positive,negativeoubad).
Cette page explique comment générer une sortie structurée (comme JSON et les enums) dans vos expériences hybrides pour les applications Web.
Avant de commencer
Assurez-vous d'avoir suivi le guide de démarrage pour créer des expériences hybrides.
Définir la configuration pour une sortie structurée
La génération de sorties structurées (comme JSON et les enums) est compatible avec l'inférence à l'aide de modèles hébergés dans le cloud et sur l'appareil.
Pour l'inférence hybride, utilisez
inCloudParams
et
onDeviceParams
pour configurer le modèle afin qu'il réponde avec une sortie structurée. Pour les autres modes, n'utilisez que la configuration applicable.
Pour
inCloudParams: spécifiez leresponseMimeTypeapproprié (par exemple,application/json) ainsi que leresponseSchemaque vous souhaitez que le modèle utilise.Pour
onDeviceParams: spécifiez leresponseConstraintque vous souhaitez que le modèle utilise.
Sortie JSON
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
}
}
});
// ...
Sortie d'enum
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
}
}
});
// ...