Devstral en Pratique
Mis à jour le 29 juillet 2026
Trois façons d’utiliser Devstral
Un modèle agentique ne vaut que par la manière dont on le branche sur du travail réel. Devstral s’utilise de trois façons — l’API Mistral, le CLI Mistral Vibe, et Le Chat — et le choix n’a rien d’anecdotique : chacune correspond à un moment différent de la journée d’un développeur, entre construire une automatisation, coder au quotidien et poser une question rapide. Nous les parcourons dans cet ordre, de la plus programmable à la plus immédiate.
Via l’API Mistral
L’API est l’interface la plus flexible : c’est elle qui vous laisse construire vos propres workflows agentiques, avec vos outils et votre logique de contrôle. Commençons par le cas le plus simple, un appel de chat sans outil. On soumet ici à Devstral une fonction d’authentification vulnérable et on lui demande un diagnostic. Le temperature=0 n’est pas décoratif : sur une analyse de sécurité, vous voulez un résultat reproductible, pas une variation d’une exécution à l’autre.
from mistralai import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="devstral-small-latest",
messages=[
{
"role": "system",
"content": "Vous êtes un agent de développement expert. Analysez le code fourni et proposez des améliorations."
},
{
"role": "user",
"content": """Voici un fichier Python qui gère l'authentification.
Identifiez les problèmes de sécurité et proposez des corrections :
def login(username, password):
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
user = db.execute(query).fetchone()
if user:
session['user_id'] = user['id']
return True
return False
"""
}
],
temperature=0,
max_tokens=2000,
)
print(response.choices[0].message.content)
Le mode agentique change la nature de l’échange. Au lieu de recevoir un texte, vous déclarez des outils que le modèle peut demander à appeler, et Devstral vous renvoie des tool_calls — un nom d’outil et ses arguments. Les trois outils ci-dessous forment le socle minimal d’un agent de code : lire un fichier, en écrire un, lancer une commande. Avec eux, la consigne « ajoute des type hints à tous les fichiers de src/utils/ » devient exécutable, alors qu’elle serait restée une suggestion en mode chat.
tools = [
{
"type": "function",
"function": {
"name": "lire_fichier",
"description": "Lire le contenu d'un fichier source",
"parameters": {
"type": "object",
"properties": {
"chemin": {
"type": "string",
"description": "Chemin relatif du fichier"
}
},
"required": ["chemin"]
}
}
},
{
"type": "function",
"function": {
"name": "ecrire_fichier",
"description": "Écrire du contenu dans un fichier",
"parameters": {
"type": "object",
"properties": {
"chemin": {"type": "string"},
"contenu": {"type": "string"}
},
"required": ["chemin", "contenu"]
}
}
},
{
"type": "function",
"function": {
"name": "executer_commande",
"description": "Exécuter une commande shell",
"parameters": {
"type": "object",
"properties": {
"commande": {"type": "string"}
},
"required": ["commande"]
}
}
}
]
response = client.chat.complete(
model="devstral-small-latest",
messages=[
{
"role": "user",
"content": "Explore le projet et ajoute des type hints Python à tous les fichiers du dossier src/utils/"
}
],
tools=tools,
tool_choice="auto",
)
# Traiter les tool_calls retournées par Devstral
for tool_call in response.choices[0].message.tool_calls:
print(f"Outil : {tool_call.function.name}")
print(f"Arguments : {tool_call.function.arguments}")
Notez que rien ne s’exécute tout seul : la boucle — appeler l’outil, renvoyer la sortie au modèle, redemander la suite — reste entièrement à votre charge. C’est le prix de la flexibilité, et c’est exactement ce que le CLI Vibe prend en charge à votre place.
Via Mistral Vibe CLI
Vibe est l’assistant de code en ligne de commande de Mistral AI, et la voie la plus directe pour utiliser Devstral en mode agentique. L’installation passe par npm ou par pip, selon l’écosystème dans lequel vous êtes déjà installé.
# Installer Vibe via npm
npm install -g @mistralai/vibe
# Ou via pip
pip install mistral-vibe
Ensuite, vous vous placez dans votre projet, vous lancez vibe, et vous parlez à l’agent comme vous parleriez à un collègue qui a les mains sur le clavier.
# Lancer Vibe dans votre projet
cd mon-projet
vibe
# Vibe ouvre une session interactive
> Explique-moi l'architecture de ce projet
> Ajoute une route API /health qui retourne le statut du serveur
> Corrige le bug #42 décrit dans les issues GitHub
Vibe utilise Devstral comme modèle par défaut et lui fournit automatiquement les outils nécessaires — lecture et écriture de fichiers, exécution de commandes. La boucle agentique que vous deviez écrire à la main dans la section précédente, vous ne l’écrivez plus. La commande /config, tapée dans la session, affiche et modifie le modèle et les paramètres.
Modèle : devstral-small-latest (par défaut)
API Key : configurée via MISTRAL_API_KEY
Mode : agentique (tool use activé)
Via Le Chat
Le Chat (chat.mistral.ai) est l’interface web de Mistral AI, où Devstral figure parmi les modèles proposés pour les conversations de code. C’est le bon réflexe quand la question est courte et sans enjeu d’intégration : comprendre un extrait qu’un collègue vous a transmis, prototyper une idée sans rien configurer, partager une conversation avec l’équipe, ou comparer côte à côte la réponse de Devstral et celle d’un autre modèle Mistral.
Ses limites découlent directement de ce qu’il est — une interface de conversation, et rien d’autre. Pas d’accès au filesystem : vous copiez-collez le code, dans les deux sens. Pas de tool use natif : aucune commande n’est exécutée. Et pas de boucle agentique : chaque réponse est indépendante, sans enchaînement exploration, modification, vérification. Dès que l’usage devient agentique, l’API ou Vibe reprennent l’avantage.
Comparaison des trois interfaces
| Critère | API Python | Vibe CLI | Le Chat |
|---|---|---|---|
| Tool use | Oui (vous gérez) | Oui (automatique) | Non |
| Accès filesystem | Via vos outils | Natif | Non |
| Boucle agentique | Vous implémentez | Intégrée | Non |
| Configuration | Totale | Modérée | Minimale |
| Cas d’usage | Pipelines, CI/CD | Développement quotidien | Exploration rapide |
Lu de droite à gauche, ce tableau décrit un gradient de contrôle : plus vous allez vers l’API, plus vous décidez de tout — y compris de ce qui peut casser.
Ce qui fait la différence à l’usage
La qualité du résultat dépend moins du modèle que de la formulation. « Ajoute de la validation » laisse Devstral inventer l’emplacement, le style et les règles ; « Ajoute la validation d’email dans src/auth/validators.py en utilisant le pattern existant » lui donne le fichier, la convention et la frontière. Dans le même esprit, citez explicitement les fichiers pertinents et les contraintes du projet plutôt que d’espérer qu’il les devine.
Reste la vérification, qui n’est jamais optionnelle : un agent compétent peut malgré tout introduire une régression, en particulier lorsqu’il touche plusieurs fichiers d’un coup. Prenez l’habitude de relire le diff avant de le valider, comme vous le feriez pour la pull request d’un nouvel arrivant. Et gardez en tête le dernier réglage, celui du bon outil — Vibe pour le développement quotidien, l’API pour l’automatisation, Le Chat pour l’exploration.
Points clés à retenir
- L’API Python offre un contrôle total sur le workflow agentique avec les outils
- Vibe CLI est la manière la plus simple d’utiliser Devstral en mode agent
- Le Chat est adapté aux questions rapides mais ne supporte pas le mode agentique
- Chaque interface a ses forces : API pour l’automatisation, Vibe pour le quotidien, Le Chat pour l’exploration
- La précision des instructions et la vérification des résultats restent essentielles