Sortie structurée
La sortie structurée fait renvoyer au modèle des données au format JSON que vous spécifiez, adaptée aux scénarios d'extraction de données, d'annotation de classification, de remplissage de formulaires, etc.
JSON Mode#
La méthode de sortie structurée la plus simple, qui force le modèle à renvoyer du JSON valide :
Python
from openai import OpenAI
client = OpenAI(
base_url="https://as.apinoma.com/v1",
api_key="<votre APINOMA_API_KEY>"
)
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": "Tu es un assistant d'extraction de données. Renvoie le résultat au format JSON."},
{"role": "user", "content": "Extrais le nom, l'entreprise et le poste du texte suivant : Zhang San est ingénieur senior chez Alibaba"}
],
response_format={"type": "json_object"}
)
import json
result = json.loads(response.choices[0].message.content)
print(result)
# {"name": "Zhang San", "company": "Alibaba", "title": "Ingénieur senior"}TypeScript
Lors de l'utilisation de JSON Mode, le system prompt doit contenir le mot-clé « JSON », faute de quoi certains modèles pourraient ignorer l'exigence de format.
Contraintes JSON Schema#
Contrôlez plus précisément la structure de sortie, en garantissant que les noms et types de champs correspondent aux attentes :
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "user", "content": "Analyse le sentiment de cet avis utilisateur : ce produit est génial, très facile à utiliser !"}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "sentiment_analysis",
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "string",
"enum": ["positive", "negative", "neutral"],
"description": "Orientation du sentiment"
},
"confidence": {
"type": "number",
"description": "Niveau de confiance 0-1"
},
"keywords": {
"type": "array",
"items": {"type": "string"},
"description": "Mots-clés de sentiment"
}
},
"required": ["sentiment", "confidence", "keywords"],
"additionalProperties": False
}
}
}
)Sortie :
Cas d'usage réels#
Extraction de données
# Extraire des données structurées d'un texte non structuré
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{
"role": "user",
"content": """Extrais les informations de commande suivantes :
Le client Li Si a passé commande le 15 janvier 2025 pour 3 MacBook Pro,
au prix unitaire de 18999 yuans, adresse de livraison : 123 rue xxx, district de Chaoyang, Pékin"""
}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "order_info",
"schema": {
"type": "object",
"properties": {
"customer": {"type": "string"},
"date": {"type": "string"},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"address": {"type": "string"}
},
"required": ["customer", "date", "items", "address"]
}
}
}
)Annotation de classification
Modèles pris en charge#
Modèle
JSON Mode
JSON Schema
`openai/gpt-4o`
✅
✅
`openai/gpt-4o-mini`
✅
✅
`anthropic/claude-sonnet-4.6`
✅
—
`google/gemini-pro-compatible-flash-lite-preview`
✅
✅
Les modèles ne prenant pas en charge JSON Schema peuvent obtenir un effet similaire en décrivant en détail le format JSON attendu dans le system prompt.
Dernière mise à jour le 23 juin 2026