Mistral API : guide complet pour l’utiliser dans ses projets (2026)
Mistral AI, la startup française, a rapidement imposé ses modèles comme une alternative sérieuse aux géants américains. Mais au-delà de l’interface web, c’est via l’API que Mistral déploie tout son potentiel : des modèles accessibles, des tarifs compétitifs, et une documentation claire.
Ce guide pratique vous explique comment utiliser la Mistral API dans vos projets, des modèles disponibles aux exemples de code concrets.
Pourquoi utiliser la Mistral API ?
Plusieurs raisons poussent les développeurs vers Mistral plutôt que vers OpenAI ou Anthropic :
- Tarifs compétitifs : souvent 5 à 10x moins cher que GPT-4o pour des performances proches
- Open source : certains modèles (Mistral 7B, Mixtral) peuvent tourner en local via Ollama
- Données en Europe : infrastructure hébergée en UE, point important pour la conformité RGPD
- API compatible OpenAI : la migration depuis l’API OpenAI est simple
- Modèles spécialisés : Codestral pour le code, des modèles d’embedding, etc.
Si vous cherchez à faire tourner des LLM en local sans cloud, consultez aussi notre guide sur Ollama. Pour une comparaison Mistral vs ChatGPT, voir notre article dédié.
Créer son compte et obtenir une clé API
L’accès à la Mistral API se fait via la console La Plateforme (console.mistral.ai).
Étapes :
- Créer un compte sur console.mistral.ai
- Ajouter un moyen de paiement (carte bancaire)
- Aller dans API Keys → créer une nouvelle clé
- Copier la clé (elle ne s’affiche qu’une fois)
Il n’y a pas d’abonnement mensuel obligatoire : vous payez uniquement ce que vous consommez (modèle pay-as-you-go). Un crédit initial de test est parfois proposé pour les nouveaux comptes.
Stocker la clé de façon sécurisée :
# Dans votre fichier .env
MISTRAL_API_KEY=votre_clé_ici
# Ne jamais commiter ce fichier dans Git
echo ".env" >> .gitignore
Les modèles disponibles
Mistral propose plusieurs modèles avec des compromis différents entre performance et coût :
| Modèle | Usage recommandé | Contexte | Prix input (1M tokens) |
|---|---|---|---|
| mistral-large-latest | Tâches complexes, raisonnement | 128K | ~2€ |
| mistral-small-latest | Tâches courantes, équilibre coût/perf | 32K | ~0,20€ |
| mistral-nemo | Modèle léger, très économique | 128K | ~0,10€ |
| codestral-latest | Génération et complétion de code | 256K | ~0,20€ |
| mistral-embed | Embeddings (RAG, recherche sémantique) | 8K | ~0,10€ |
| pixtral-large | Multimodal (texte + images) | 128K | ~2€ |
Les tarifs sont indicatifs et peuvent évoluer. Consultez la page de pricing officielle de Mistral pour les valeurs à jour.
Conseil pratique : Pour la plupart des applications, mistral-small-latest offre le meilleur compromis. Réservez mistral-large-latest pour les tâches qui nécessitent vraiment plus de raisonnement.
Installation et premier appel API
Installation du SDK Python
pip install mistralai
Premier appel basique
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
response = client.chat.complete(
model="mistral-small-latest",
messages=[
{"role": "user", "content": "Explique le concept de RAG en 3 phrases."}
]
)
print(response.choices[0].message.content)
Avec un système de prompts
response = client.chat.complete(
model="mistral-small-latest",
messages=[
{
"role": "system",
"content": "Tu es un assistant technique spécialisé en Python. Réponds en français, de façon concise."
},
{
"role": "user",
"content": "Comment lire un fichier CSV avec pandas ?"
}
]
)
print(response.choices[0].message.content)
Streaming des réponses
Pour les interfaces utilisateur, le streaming évite d’attendre toute la réponse avant de l’afficher :
with client.chat.stream(
model="mistral-small-latest",
messages=[{"role": "user", "content": "Écris un poème sur l'IA"}]
) as stream:
for text in stream.get_text_stream():
print(text, end="", flush=True)
Utiliser Codestral pour la génération de code
Codestral est le modèle de Mistral spécialisé pour le code. Il supporte des contextes longs (256K tokens), ce qui le rend pratique pour analyser de grandes bases de code :
response = client.chat.complete(
model="codestral-latest",
messages=[
{
"role": "user",
"content": """Voici une fonction Python. Optimise-la et explique les changements :
def trouver_doublons(liste):
doublons = []
for i in range(len(liste)):
for j in range(i + 1, len(liste)):
if liste[i] == liste[j] and liste[i] not in doublons:
doublons.append(liste[i])
return doublons"""
}
]
)
print(response.choices[0].message.content)
Embeddings et recherche sémantique
Les embeddings permettent de convertir du texte en vecteurs numériques pour la recherche sémantique (RAG, clustering, etc.) :
texts = [
"L'intelligence artificielle transforme les entreprises",
"Les LLM sont des modèles de langage entraînés sur de grandes quantités de données",
"Le rugby est un sport collectif populaire en France"
]
embeddings_response = client.embeddings.create(
model="mistral-embed",
inputs=texts
)
# Récupérer les vecteurs
vectors = [e.embedding for e in embeddings_response.data]
print(f"Dimension des embeddings : {len(vectors[0])}") # 1024 dimensions
Gérer les erreurs et les limites de taux
En production, il faut gérer les cas d’erreur proprement :
import time
from mistralai import Mistral
from mistralai.models import SDKError
def appel_avec_retry(client, messages, model="mistral-small-latest", max_retries=3):
for tentative in range(max_retries):
try:
response = client.chat.complete(
model=model,
messages=messages
)
return response.choices[0].message.content
except SDKError as e:
if e.status_code == 429: # Rate limit
wait_time = 2 ** tentative # Backoff exponentiel
print(f"Rate limit atteint. Attente {wait_time}s...")
time.sleep(wait_time)
else:
raise e
raise Exception("Nombre maximum de tentatives atteint")
Compatibilité avec l’API OpenAI
Si vous avez déjà du code utilisant le SDK OpenAI, la migration est simple. Mistral propose un endpoint compatible :
from openai import OpenAI
# Utiliser le client OpenAI avec l'endpoint Mistral
client = OpenAI(
api_key=os.environ["MISTRAL_API_KEY"],
base_url="https://api.mistral.ai/v1"
)
response = client.chat.completions.create(
model="mistral-small-latest",
messages=[{"role": "user", "content": "Bonjour !"}]
)
print(response.choices[0].message.content)
Cette compatibilité permet de tester Mistral sans réécrire toute votre base de code.
Exemple concret : un assistant de résumé de documents
Un cas d’usage pratique qui illustre plusieurs fonctionnalités :
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
def resumer_document(texte: str, longueur: str = "courte") -> str:
"""
Résume un document avec Mistral.
longueur: "courte" (3-5 phrases) ou "detaillee" (paragraphe complet)
"""
instructions = {
"courte": "Résume ce texte en 3 à 5 phrases, en gardant les points essentiels.",
"detaillee": "Fais un résumé détaillé de ce texte en un paragraphe structuré."
}
response = client.chat.complete(
model="mistral-small-latest",
messages=[
{"role": "system", "content": "Tu es un assistant spécialisé dans la synthèse de documents. Réponds uniquement en français."},
{"role": "user", "content": f"{instructions[longueur]}\n\nTexte :\n{texte}"}
],
temperature=0.3 # Réponses plus déterministes pour les résumés
)
return response.choices[0].message.content
# Usage
with open("mon_document.txt", "r") as f:
contenu = f.read()
print(resumer_document(contenu, longueur="courte"))
Bonnes pratiques
- Choisir le bon modèle : commencez par
mistral-smallet montez en gamme seulement si nécessaire - Temperature : 0 à 0.3 pour les tâches factuelles, 0.7 à 1.0 pour la créativité
- Monitorer les coûts : la console Mistral affiche votre consommation en temps réel
- Tester en local d’abord : utilisez les modèles Mistral open source via Ollama pour développer sans frais
- Stocker les conversations : conservez l’historique des messages pour les applications conversationnelles
Conclusion
La Mistral API est une option sérieuse pour les développeurs qui cherchent un bon rapport qualité-prix, une infrastructure européenne, et des modèles performants sur un large éventail de tâches.
La compatibilité OpenAI facilite la migration, et les modèles spécialisés (Codestral, Pixtral) couvrent des besoins spécifiques. Pour des projets qui nécessitent de la conformité RGPD ou une maîtrise des coûts à grande échelle, c’est une piste à explorer sérieusement.
Les modèles open source de Mistral restent aussi disponibles pour un déploiement 100% local si vous ne souhaitez pas dépendre d’une API cloud.