Migrer depuis Magistral
Sur cette page
Leçon réécrite le 2 novembre 2026. Elle décrivait le raisonnement « toujours actif » de Magistral. Tous les modèles Magistral étant retirés depuis le 31 juillet 2026, elle déroule désormais la migration vers
reasoning_effort. Sources : Models — modèles dépréciés et retirés · Reasoning · Native reasoning (deprecated).
Où en est votre code ?
Les dernières versions de Magistral, Small 1.2 et Medium 1.2 (-2509), ont été dépréciées au printemps 2026 et retirées le 31 juillet 2026 ; les versions 1.0 et 1.1 l’étaient depuis le 30 novembre 2025. Un code qui appelle encore magistral-small-latest, magistral-medium-latest ou un identifiant daté de la gamme vise donc un modèle qui n’est plus disponible. La migration n’est plus à planifier : elle est à faire.
La table de correspondance
| Vous utilisiez | Remplaçant désigné par Mistral | Ce que nous conseillons aujourd’hui |
|---|---|---|
| Magistral Small (1.0, 1.1, 1.2) | Mistral Small 4 | mistral-small-2603 avec reasoning_effort="high" |
| Magistral Medium (1.0, 1.1, 1.2) | Mistral Medium 3.5 | Small 4 si la qualité suffit, sinon mistral-large-4-0 avec reasoning_effort="high" |
Pourquoi ne pas suivre à la lettre le remplaçant désigné de Magistral Medium ? Parce que Mistral Medium 3.5 est lui-même déprécié depuis le 31 octobre 2026, avec un retrait le 30 avril 2027 et Large 4 pour successeur. Migrer vers lui, c’est s’engager dans une seconde migration six mois plus tard. Large 4 est en Public Preview : si cette maturité ne convient pas à votre production, Medium 3.5 reste une étape possible, à condition de dater dès maintenant la bascule suivante.
Ce qui change dans le code
Magistral raisonnait toujours ; les modèles actuels raisonnent quand vous le leur demandez. La correspondance naturelle de « toujours actif » est donc reasoning_effort="high".
# Avant : Magistral (retiré)
response = client.chat.complete(
model="magistral-medium-latest",
messages=[
{"role": "system", "content": "Tu es un analyste rigoureux."},
{"role": "user", "content": question},
],
prompt_mode=None, # désactivait le prompt système par défaut de Magistral
)
# Après : Mistral Large 4 avec raisonnement explicite
response = client.chat.complete(
model="mistral-large-4-0",
messages=[
{"role": "system", "content": "Tu es un analyste rigoureux."},
{"role": "user", "content": question},
],
reasoning_effort="high",
)
Quatre points à reprendre au passage :
- Les identifiants de modèle : cherchez
magistraldans le code, les fichiers de configuration et les variables d’environnement. prompt_mode: la documentation du raisonnement ne le mentionne plus ; retirez-le de vos appels.- Les prompts système : supprimez le gabarit de réflexion propre à Magistral (le fragment
thinkingplacé dans le message système) et gardez les consignes de méthode et de format (leçon 6). - La lecture des réponses : la structure de Magistral 25.07 et 25.09 (
ThinkChunkpuisTextChunk) est celle des modèles actuels, votre code de lecture reste valable. Ajoutez seulement le cas de la chaîne simple, que renvoient Small 4 et Medium 3.5 avecreasoning_effort="none". Si votre code venait de Magistral 25.06 et cherchait des balises<think>dans le texte, remplacez-le par la fonctionseparerde la leçon 3.
Valider la migration
Ne basculez pas à l’aveugle. Rejouez un échantillon de vos cas réels, avec leurs réponses de référence, et comparez trois mesures : la qualité (exactitude, respect du format), les tokens consommés (usage.completion_tokens) et la latence. Un script suffit :
import time
def comparer(client, cas, configs):
"""cas : liste de (question, verifier) ; configs : liste de (modèle, niveau)."""
for model, niveau in configs:
justes = tokens = 0
debut = time.perf_counter()
for question, verifier in cas:
r = client.chat.complete(
model=model,
messages=[{"role": "user", "content": question}],
reasoning_effort=niveau,
)
_, reponse = separer(r.choices[0].message.content)
justes += bool(verifier(reponse))
tokens += r.usage.completion_tokens
duree = time.perf_counter() - debut
print(f"{model} ({niveau}) : {justes}/{len(cas)} justes, {tokens} tokens, {duree:.0f} s")
comparer(client, mes_cas, [
("mistral-small-2603", "high"),
("mistral-large-4-0", "medium"),
("mistral-large-4-0", "high"),
])
La fonction verifier dépend de votre domaine : comparaison à une valeur attendue, présence d’éléments obligatoires, validation d’un JSON. C’est elle qui transforme une impression en décision.
Profiter de la migration
Vous touchez de toute façon à chaque appel de modèle : profitez-en pour épingler des identifiants datés en production (mistral-small-2603 plutôt que mistral-small-latest) et pour centraliser le choix du modèle et du niveau de raisonnement dans une configuration unique. La prochaine dépréciation, et il y en aura, se traitera alors en une ligne.
Points clés à retenir
- Magistral est retiré depuis le 31 juillet 2026 : tout appel restant vise un modèle indisponible
- Magistral Small → Small 4 ; Magistral Medium → Small 4 ou Large 4 plutôt que Medium 3.5, lui-même déprécié
- « Toujours actif » se traduit par
reasoning_effort="high" - Retirez
prompt_modeet le gabarit de réflexion des prompts système - Validez sur vos cas réels (qualité, tokens, latence), puis épinglez des identifiants datés