Gemini génère du texte non structuré par défaut, mais certaines applications nécessitent du texte structuré. Pour ces cas d'utilisation, vous pouvez contraindre Gemini à répondre avec du JSON, un format de données structurées adapté au traitement automatisé. Vous pouvez également contraindre le modèle à répondre avec l'une des options spécifiées dans un énumérateur.
Voici quelques cas d'utilisation qui peuvent nécessiter une sortie structurée du modèle:
- Créez une base de données d'entreprises en extrayant des informations sur les entreprises à partir d'articles de journaux.
- Extraire des informations standardisées des CV
- Extrayez les ingrédients des recettes et affichez un lien vers un site Web d'épicerie pour chaque ingrédient.
Dans votre requête, vous pouvez demander à Gemini de générer une sortie au format JSON, mais notez qu'il n'est pas garanti que le modèle génère uniquement du JSON.
Pour obtenir une réponse plus déterministe, vous pouvez transmettre un schéma JSON spécifique dans un champ responseSchema
afin que Gemini réponde toujours avec une structure attendue.
Ce guide vous explique comment générer du code JSON à l'aide de la méthode generateContent
via le SDK de votre choix ou directement à l'aide de l'API REST. Les exemples montrent une entrée textuelle uniquement, bien que Gemini puisse également produire des réponses JSON aux requêtes multimodales qui incluent des images, des vidéos et des contenus audio.
Avant de commencer: configurez votre projet et votre clé API
Avant d'appeler l'API Gemini, vous devez configurer votre projet et votre clé API.
Générer le fichier JSON
Lorsque le modèle est configuré pour générer du code JSON, il répond à toute invite avec une sortie au format JSON.
Vous pouvez contrôler la structure de la réponse JSON en fournissant un schéma. Vous pouvez fournir un schéma au modèle de deux façons:
- Sous forme de texte dans l'invite
- En tant que schéma structuré fourni via la configuration du modèle
Les deux approches fonctionnent à la fois dans Gemini 1.5 Flash et Gemini 1.5 Pro.
Fournir un schéma sous forme de texte dans l'invite
L'exemple suivant invite le modèle à renvoyer des recettes de biscuits dans un format JSON spécifique.
Étant donné que le modèle obtient la spécification de format à partir du texte de l'invite, vous pouvez avoir une certaine flexibilité dans la façon de représenter la spécification. Tout format raisonnable pour représenter un schéma JSON peut fonctionner.
// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
model: "gemini-1.5-flash",
});
const prompt = `List a few popular cookie recipes using this JSON schema:
Recipe = {'recipeName': string}
Return: Array<Recipe>`;
const result = await model.generateContent(prompt);
console.log(result.response.text());
Le résultat peut ressembler à ceci:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]
Fournir un schéma via la configuration du modèle
L'exemple suivant effectue les opérations suivantes:
- Instantie un modèle configuré via un schéma pour répondre avec du JSON.
- Demande au modèle de renvoyer des recettes de cookies.
// Make sure to include these imports:
// import { GoogleGenerativeAI, SchemaType } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const schema = {
description: "List of recipes",
type: SchemaType.ARRAY,
items: {
type: SchemaType.OBJECT,
properties: {
recipeName: {
type: SchemaType.STRING,
description: "Name of the recipe",
nullable: false,
},
},
required: ["recipeName"],
},
};
const model = genAI.getGenerativeModel({
model: "gemini-1.5-pro",
generationConfig: {
responseMimeType: "application/json",
responseSchema: schema,
},
});
const result = await model.generateContent(
"List a few popular cookie recipes.",
);
console.log(result.response.text());
Le résultat peut ressembler à ceci:
[{"recipeName": "Chocolate Chip Cookies"}, {"recipeName": "Oatmeal Raisin Cookies"}, {"recipeName": "Snickerdoodles"}, {"recipeName": "Sugar Cookies"}, {"recipeName": "Peanut Butter Cookies"}]