Structured Output avec Gemini
Gemini permet de forcer le modèle à produire des réponses dans un format JSON structuré défini par un schéma. Cela garantit des sorties parsables et prévisibles pour vos applications.
Pourquoi le structured output ?
- Parsing fiable : Plus besoin de regex pour extraire des données
- Validation automatique : Le schéma garantit la structure
- Intégration simplifiée : Les réponses s'intègrent directement dans votre code
- Moins d'erreurs : Pas de format inattendu ou de texte parasite
Configuration via l'API
import google.generativeai as genai
import typing_extensions as typing
class Recipe(typing.TypedDict):
name: str
ingredients: list[str]
prep_time_minutes: int
difficulty: str
model = genai.GenerativeModel('gemini-2.5-pro')
result = model.generate_content(
"Donne-moi une recette de quiche lorraine",
generation_config=genai.GenerationConfig(
response_mime_type="application/json",
response_schema=Recipe
)
)
import json
recipe = json.loads(result.text)
print(recipe["name"]) # Quiche LorraineSchémas supportés
Gemini supporte les types JSON Schema suivants :
string,number,integer,booleanarray(avec items typés)object(avec properties typées)enum(valeurs restreintes)- Combinaisons imbriquées
Exemples de schémas courants
Extraction d'entités
class Entity(typing.TypedDict):
name: str
type: str # person, organization, location
confidence: float
class Extraction(typing.TypedDict):
entities: list[Entity]
summary: strClassification
class Classification(typing.TypedDict):
category: str
confidence: float
reasoning: strBonnes pratiques
- Définissez des schémas aussi précis que possible
- Utilisez des enums pour les champs à valeurs limitées
- Ajoutez des descriptions dans votre prompt pour guider le contenu
- Testez avec des cas limites (textes vides, langues différentes)
- Combinez avec un system prompt pour contrôler le style du contenu
Limites
- Le schéma ne peut pas être trop complexe (profondeur limitée)
- Les très longues listes peuvent être tronquées
- Le modèle peut retourner des valeurs par défaut si le contenu est ambigu