Activer le JSON Mode
Principe du JSON Mode
Le JSON Mode est le mécanisme le plus simple pour obtenir une sortie structurée de Mistral. En activant un seul paramètre, vous garantissez que la réponse du modèle sera un JSON valide. Pas de schéma à définir, pas de modèle de données — juste du JSON.
Activation en Python
L’activation se fait via le paramètre response_format de la méthode client.chat.complete() :
from mistralai import Mistral
client = Mistral(api_key="votre-clé-api")
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "user",
"content": "Décris les 3 principaux avantages du cloud computing. Retourne le résultat en JSON avec une clé 'advantages' contenant une liste d'objets avec 'title' et 'description'."
}
],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
La sortie sera un JSON valide :
{
"advantages": [
{
"title": "Scalabilité",
"description": "Ajustement dynamique des ressources selon la demande."
},
{
"title": "Réduction des coûts",
"description": "Pas d'investissement en infrastructure physique."
},
{
"title": "Accessibilité",
"description": "Accès aux services depuis n'importe où."
}
]
}
Activation en TypeScript
L’équivalent en TypeScript avec le SDK Mistral :
import Mistral from "@mistralai/mistralai";
const client = new Mistral({ apiKey: "votre-clé-api" });
const response = await client.chat.complete({
model: "mistral-large-latest",
messages: [
{
role: "user",
content: "Liste 3 frameworks JavaScript populaires en JSON avec 'name' et 'useCase'."
}
],
responseFormat: { type: "json_object" },
});
const data = JSON.parse(response.choices[0].message.content);
console.log(data);
L’importance de l’instruction explicite
Un point critique que beaucoup de développeurs négligent : activer le JSON Mode ne suffit pas. Vous devez également instruire explicitement le modèle dans votre prompt de produire du JSON et de suivre la structure souhaitée.
Ce qu’il ne faut PAS faire
# Mauvaise pratique — pas d'instruction JSON dans le prompt
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{"role": "user", "content": "Quels sont les avantages du cloud ?"}
],
response_format={"type": "json_object"}
)
# Le modèle produira du JSON, mais la structure sera imprévisible
Ce qu’il faut faire
# Bonne pratique — instruction claire dans le prompt
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "user",
"content": """Quels sont les avantages du cloud computing ?
Retourne ta réponse en JSON avec la structure suivante :
{
"topic": "string",
"advantages": [
{"title": "string", "description": "string"}
]
}"""
}
],
response_format={"type": "json_object"}
)
En incluant un exemple de structure dans votre prompt, vous guidez le modèle vers le format souhaité. Ce n’est pas une garantie absolue (contrairement aux Custom Structured Outputs), mais c’est largement suffisant dans la majorité des cas.
Utiliser un system prompt
Pour les pipelines répétitifs, placez les instructions de format dans le system prompt :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "system",
"content": "Tu es un assistant d'extraction de données. Tu retournes TOUJOURS tes réponses en JSON avec les clés 'entities', 'confidence' et 'source'."
},
{
"role": "user",
"content": "Extrais les informations de ce texte : 'La société Acme Corp, fondée en 2019 à Lyon, emploie 250 personnes.'"
}
],
response_format={"type": "json_object"}
)
Cette approche sépare les instructions de format (system) du contenu à traiter (user), ce qui rend votre code plus maintenable.
Parsing de la réponse
La réponse du JSON Mode est toujours une string JSON dans message.content. Vous devez la parser vous-même :
import json
raw = response.choices[0].message.content
data = json.loads(raw)
# Accéder aux données
for advantage in data["advantages"]:
print(f"- {advantage['title']}: {advantage['description']}")
const raw = response.choices[0].message.content;
const data = JSON.parse(raw);
data.advantages.forEach((adv: any) => {
console.log(`- ${adv.title}: ${adv.description}`);
});
Points clés à retenir
- Le JSON Mode s’active avec
response_format: {"type": "json_object"} - Utilisez
client.chat.complete()(pasparse()) - Instruisez toujours le modèle dans le prompt sur la structure JSON attendue
- La réponse est une string JSON — parsez-la avec
json.loads()ouJSON.parse() - Placez les instructions de format dans le system prompt pour les pipelines répétitifs