Sorties structurées
Forcez la sortie JSON avec response_format. Deux modes : json_object (tout JSON valide) et json_schema (conformité stricte au schéma). Exemples en curl et en Python.
Le paramètre response_format force le modèle à renvoyer un JSON valide. Deux modes sont pris en charge.
json_object mode
Le modèle garantit que la sortie est un JSON valide. Vous définissez la structure dans le prompt système.
curl https://getvibeapi.com/v1/chat/completions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"response_format": { "type": "json_object" },
"messages": [
{"role": "system", "content": "Reply with JSON with fields: name (string), score (number)."},
{"role": "user", "content": "Rate this answer: very good"}
]
}'json_schema mode
Conformité stricte au JSON Schema — le modèle renseigne exactement les champs spécifiés. Pris en charge par GPT-5.x et les modèles compatibles.
curl https://getvibeapi.com/v1/chat/completions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "review",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"score": { "type": "number", "minimum": 1, "maximum": 10 },
"summary": { "type": "string" }
},
"required": ["name", "score", "summary"],
"additionalProperties": false
}
}
},
"messages": [
{"role": "user", "content": "Rate this product: fast delivery, careful packaging"}
]
}'Avec
strict: true, la passerelle achemine la requête uniquement vers les variantes de modèle qui respectent effectivement le schéma, et ce à chaque tentative, y compris lors d’un basculement vers un fournisseur de secours. Si aucune variante appropriée n’est disponible pour le moment, vous obtenez une erreur structured_output_unsupported explicite plutôt que du texte brut alors que du JSON était demandé. Cette protection repose sur des mesures et ne couvre que les variantes que nous avons mesurées : sur une variante non mesurée, le fournisseur peut toujours ignorer silencieusement le schéma.Les modèles diffèrent quant à leur capacité à conserver le format JSON — vérifiez le vôtre. Mesuré le 2026-09-12 sur
deepseek-v4-flash-0731, 10 appels par cellule : json_object a été analysé avec succès 10/10 fois sur les variantes :cxa et :cxbc, et 8/10 fois sur :network, tandis qu’un json_schema strict a été analysé avec succès 0/10 fois sur les deux variantes (:cxa renvoie 400, :cxbc renvoie 200 avec du texte brut) et 3/10 fois sur :network. L’API de DeepSeek ne propose aucun mode json_schema : utilisez json_object ; lorsque vous avez besoin d’une forme exactement unique, un appel de fonction forcé (tools + tool_choice) a renvoyé des arguments analysables 10/10 fois sur chaque variante. Les chiffres par variante se trouvent dans le champ structuredOutput de GET /v1/model-capabilities. Chaque valeur est une mesure ponctuelle datée (measurement: "point-in-time"), et non une garantie : le fournisseur à l’origine d’une variante peut changer, et nous ne procédons pas à de nouvelles mesures selon un calendrier fixe.Exemple de réponse
{
"id": "chatcmpl-...",
"choices": [{
"message": {
"role": "assistant",
"content": "{\"name\":\"product X\",\"score\":9,\"summary\":\"Fast and convenient\"}"
},
"finish_reason": "stop"
}],
"usage": { "prompt_tokens": 42, "completion_tokens": 18, "total_tokens": 60 }
}