Le Paramètre prompt_mode
Contrôler le system prompt par défaut
Les modèles Magistral intègrent un system prompt par défaut optimisé pour le raisonnement. Ce prompt guide la manière dont le modèle structure sa réflexion et ses réponses. Le paramètre prompt_mode vous permet de contrôler si ce prompt par défaut est utilisé ou non.
Les deux valeurs de prompt_mode
prompt_mode = “reasoning” (valeur par défaut)
Quand prompt_mode est défini sur "reasoning" (ou quand vous ne le spécifiez pas), le modèle utilise son system prompt interne optimisé. Ce prompt :
- Structure le raisonnement en étapes logiques
- Encourage la vérification des hypothèses
- Sépare clairement la réflexion de la réponse finale
from mistralai import Mistral
client = Mistral(api_key="VOTRE_CLE_API")
# Le system prompt par défaut est appliqué automatiquement
response = client.chat.complete(
model="magistral-medium-latest",
messages=[
{"role": "user", "content": "Démontrez que la somme des n premiers entiers est n(n+1)/2."}
],
prompt_mode="reasoning" # valeur par défaut, peut être omis
)
prompt_mode = null (désactivation)
En passant prompt_mode à null (ou None en Python), vous désactivez le system prompt par défaut. Cela vous donne un contrôle total sur les instructions du modèle :
# Désactiver le system prompt par défaut
response = client.chat.complete(
model="magistral-medium-latest",
messages=[
{"role": "system", "content": "Votre propre system prompt personnalisé ici."},
{"role": "user", "content": "Démontrez que la somme des n premiers entiers est n(n+1)/2."}
],
prompt_mode=None # désactive le prompt par défaut
)
Quand désactiver le prompt par défaut
Scénario 1 : System prompt personnalisé
Si vous avez conçu un system prompt spécifique à votre domaine (comme vu dans la leçon précédente), désactivez le prompt par défaut pour éviter les conflits :
# Votre prompt personnalisé pourrait entrer en conflit avec le prompt par défaut
custom_prompt = """Vous êtes un juriste spécialisé en droit européen du numérique.
MÉTHODE :
- Citez les articles de loi pertinents
- Analysez la jurisprudence applicable
- Distinguez les interprétations doctrinales
RÉFLEXION :
Explorez les différentes interprétations possibles. Évaluez leur solidité juridique.
RÉPONSE :
Avis juridique structuré avec fondements textuels et jurisprudentiels."""
response = client.chat.complete(
model="magistral-medium-latest",
messages=[
{"role": "system", "content": custom_prompt},
{"role": "user", "content": "Le RGPD s'applique-t-il aux données anonymisées ?"}
],
prompt_mode=None # évite le conflit avec votre prompt
)
Scénario 2 : Garder le prompt par défaut
Si vous n’avez pas de system prompt spécialisé, ou si votre prompt est complémentaire (ajoute un rôle sans modifier la méthode de raisonnement), gardez le mode par défaut :
# Ce prompt est complémentaire, pas contradictoire
response = client.chat.complete(
model="magistral-medium-latest",
messages=[
{"role": "system", "content": "Vous êtes un tuteur bienveillant pour étudiants en informatique."},
{"role": "user", "content": "Expliquez-moi les pointeurs en C."}
]
# prompt_mode non spécifié = "reasoning" par défaut
)
Impact sur les tokens de raisonnement
Le paramètre prompt_mode affecte également la manière dont les traces de raisonnement sont générées :
Avec prompt_mode = “reasoning”
Les versions récentes (-2509 / -2507) génèrent les traces de raisonnement via des control tokens. Ces tokens spéciaux sont tokenisés et structurés, ce qui permet un parsing propre et fiable.
Avec prompt_mode = null
Sans le prompt par défaut, le modèle raisonne toujours (c’est sa nature), mais le format des traces peut varier selon vos instructions. Vous prenez la responsabilité de guider la structure du raisonnement.
Relation avec les versions de modèles
Le comportement du prompt_mode peut varier selon la version du modèle :
# Version -2509 : control tokens structurés
response_new = client.chat.complete(
model="magistral-medium-2509",
messages=[{"role": "user", "content": "..."}],
prompt_mode="reasoning"
)
# Si vous utilisez une ancienne version, le format peut différer
# Vérifiez toujours la documentation de la version cible
Pattern de décision
Voici un guide pour choisir votre configuration :
def configure_magistral(custom_system_prompt=None):
"""Configure les paramètres Magistral selon le contexte."""
params = {
"model": "magistral-medium-latest",
}
if custom_system_prompt:
# System prompt personnalisé : désactiver le prompt par défaut
params["prompt_mode"] = None
params["messages"] = [
{"role": "system", "content": custom_system_prompt}
]
else:
# Pas de system prompt spécial : utiliser le défaut
params["prompt_mode"] = "reasoning"
params["messages"] = []
return params
# Utilisation
config = configure_magistral(
custom_system_prompt="Vous êtes un expert en cybersécurité..."
)
config["messages"].append(
{"role": "user", "content": "Analysez cette faille XSS..."}
)
response = client.chat.complete(**config)
Points clés à retenir
prompt_mode="reasoning"(défaut) : utilise le system prompt interne optimisé de Magistralprompt_mode=None: désactive le prompt par défaut pour un contrôle total- Désactivez le prompt par défaut si vous avez un system prompt spécifique à un domaine
- Gardez le défaut si votre system prompt est complémentaire (rôle sans méthode)
- Le modèle Magistral raisonne toujours, même sans le prompt par défaut
- Les versions récentes utilisent des control tokens, indépendamment du
prompt_mode