Si votre code analyse la réponse du modèle, vous avez besoin d'un JSON analysable à chaque appel. GetVibe API propose trois façons de l'obtenir : le mode json_object, le mode strict json_schema et les appels d'outils forcés. Les modèles ne prennent pas tous en charge les mêmes options. Cet article présente la matrice de notre catalogue et indique quelle approche utiliser selon le cas.
Les trois approches
response_format: {"type": "json_object"}: le modèle renvoie un JSON valide. Vous décrivez les champs dans le prompt.response_format: {"type": "json_schema", ...}avecstrict: true: le modèle remplit exactement le schéma que vous transmettez. Pris en charge par GPT-5.x et les modèles compatibles.- Appel d'outil forcé (
toolsettool_choicedésignant une fonction) : le modèle renvoie les arguments de la fonction sous forme de JSON correspondant au schéma de paramètres de la fonction. Tous les modèles de texte de notre catalogue prennent en charge les appels d'outils ; c'est donc l'option la plus portable.
La matrice
La colonne du mode JSON correspond à caps.jsonMode dans https://getvibeapi.com/api/catalog, relevée le 25 septembre 2026.
| Modèle | Mode JSON | Appels d'outils | Prix |
|---|---|---|---|
| GPT-6 Luna | oui | oui | $0.0055 entrée · $0.0274 sortie par million de tokens |
| GPT-6 Sol | oui | oui | $0.1096 entrée · $0.548 sortie par million de tokens |
| GPT-6 Astra | non | oui | $0.548 entrée · $2.7398 sortie par million de tokens |
| GPT-5.6 Sol (ainsi que Luna et Terra) | oui | oui | $0.0667 entrée · $0.40 sortie par million de tokens |
| Claude Opus 5.5 | oui | oui | $0.1067 entrée · $0.5334 sortie par million de tokens |
| Claude Sonnet 5 | oui | oui | $0.3334 entrée · $1.6667 sortie par million de tokens |
| Gemini 3.1 Pro | oui | oui | $0.2515 entrée · $1.5086 sortie par million de tokens |
| Gemini 3.8 Flash (ainsi que 3.7 Flash) | non | oui | $0.0097 entrée · $0.0483 sortie par million de tokens |
| DeepSeek V4.1 Flash | oui | oui | $0.0112 entrée · $0.0445 sortie par million de tokens |
| Qwen3.8 Max (ainsi que 3.8 Flash) | oui | oui | $0.1543 entrée · $0.4629 sortie par million de tokens |
| Kimi K3 | oui | oui | $0.1715 entrée · $0.8572 sortie par million de tokens |
| MiniMax M3 | oui | oui | $0.0148 entrée · $0.0591 sortie par million de tokens |
| Tencent Hy4 Preview | oui | oui | $0.0334 entrée · $0.1001 sortie par million de tokens |
| GLM-5.3 (ainsi que 5.3 Flash et 5.2) | non | oui | $0.10 entrée · $0.3143 sortie par million de tokens |
Pour les modèles marqués « non », utilisez un appel d'outil forcé, ou décrivez le JSON dans le prompt et validez-le de votre côté.
Fonctionnement du mode strict de notre côté
Avec strict: true dans une requête json_schema, la passerelle achemine la requête uniquement vers des variantes de modèles qui respectent réellement le schéma. Elle effectue cette vérification à chaque tentative, y compris lors du basculement vers un modèle de secours. Si aucune variante adaptée n'est disponible, vous obtenez une erreur explicite structured_output_unsupported au lieu d'un texte brut alors qu'un JSON était attendu. Cette protection repose sur nos mesures et couvre uniquement les variantes que nous avons mesurées.
Un cas connu : l'API de DeepSeek ne propose pas de mode json_schema. Pour les modèles DeepSeek, utilisez json_object, ou un appel d'outil forcé lorsque vous avez besoin d'une structure exactement définie.
Exemples
Schéma strict :
from openai import OpenAI
import json
client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...")
schema = {
"type": "object",
"properties": {"name": {"type": "string"}, "score": {"type": "number"}},
"required": ["name", "score"],
"additionalProperties": False,
}
resp = client.chat.completions.create(
model="gpt-6-luna",
response_format={"type": "json_schema",
"json_schema": {"name": "review", "strict": True, "schema": schema}},
messages=[{"role": "user", "content": "Évaluez ce produit : livraison rapide, emballage soigné"}],
)
print(json.loads(resp.choices[0].message.content))
Appel d'outil forcé, qui fonctionne avec les modèles dépourvus de mode JSON :
resp = client.chat.completions.create(
model="gemini-3.8-flash",
tools=[{"type": "function", "function": {"name": "save_review", "parameters": schema}}],
tool_choice={"type": "function", "function": {"name": "save_review"}},
messages=[{"role": "user", "content": "Évaluez ce produit : livraison rapide, emballage soigné"}],
)
args = json.loads(resp.choices[0].message.tool_calls[0].function.arguments)
Validez toujours
Même lorsque le mode JSON est activé, vérifiez l'objet analysé par rapport à votre schéma avant de l'utiliser, et effectuez une nouvelle tentative en cas d'échec. Cela est particulièrement important pour les sorties longues, lorsqu'une réponse interrompue par max_tokens contient un JSON tronqué. Vérifiez finish_reason : length signifie que la réponse a été interrompue.
Étapes suivantes
Consultez la documentation sur les sorties structurées et le guide des appels d'outils, ou trouvez un modèle compatible JSON à faible coût dans notre liste des API LLM les moins chères.
