?
TemplateintermédiaireVérifié le 2025-05

Structured output avec Gemini

Forcer des sorties JSON structurées avec les schémas de réponse Gemini.

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 Lorraine

Schémas supportés

Gemini supporte les types JSON Schema suivants :

  • string, number, integer, boolean
  • array (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: str

Classification

class Classification(typing.TypedDict):
    category: str
    confidence: float
    reasoning: str

Bonnes 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

Sources

GeministructuredJSON