Premier Appel API en Python
Votre premier échange avec un modèle Mistral
Vous avez installé le SDK et configuré votre clé API. Il est temps d’envoyer votre première requête à un modèle Mistral et d’interpréter sa réponse. Cette leçon vous guide pas à pas, du code minimal jusqu’à la compréhension complète de l’objet retourné.
Initialiser le client
Le client est le point d’entrée de toutes vos interactions avec l’API :
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
Le client gère automatiquement les connexions HTTP, les retries en cas d’erreur réseau, et la sérialisation des requêtes. Vous n’avez qu’à l’instancier une seule fois dans votre application.
Envoyer une requête chat.complete()
La méthode chat.complete() est la plus utilisée. Elle envoie un message et attend la réponse complète du modèle :
response = client.chat.complete(
model="mistral-small-latest",
messages=[
{
"role": "user",
"content": "Expliquez-moi le concept de tokenisation en trois phrases."
}
]
)
print(response.choices[0].message.content)
Décortiquer les paramètres
model: l’identifiant du modèle à utiliser.mistral-small-latestpointe toujours vers la dernière version de Mistral Small — idéal pour commencer, rapide et économique.messages: une liste de messages structurés. Chaque message a unrole(system,user, ouassistant) et uncontent(le texte).
Comprendre la réponse
L’objet response contient bien plus que le texte généré. Voici sa structure :
# Le texte de la réponse
texte = response.choices[0].message.content
# Le rôle (toujours "assistant" pour une réponse)
role = response.choices[0].message.role
# La raison d'arrêt
fin = response.choices[0].finish_reason # "stop", "length", etc.
# Les statistiques de tokens
tokens_entree = response.usage.prompt_tokens
tokens_sortie = response.usage.completion_tokens
tokens_total = response.usage.total_tokens
print(f"Réponse ({tokens_sortie} tokens) : {texte}")
print(f"Tokens totaux consommés : {tokens_total}")
Les raisons d’arrêt (finish_reason)
stop: le modèle a terminé naturellement sa réponselength: la réponse a été coupée car elle a atteintmax_tokensmodel_length: le contexte total (entrée + sortie) a atteint la limite du modèle
Paramètres avancés
Vous pouvez ajuster le comportement du modèle avec des paramètres supplémentaires :
response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "user",
"content": "Proposez trois noms pour une startup d'IA éducative."
}
],
temperature=0.7,
max_tokens=500,
top_p=0.95,
)
Temperature
- 0.0 : réponses déterministes, toujours les mêmes pour un prompt identique
- 0.3-0.5 : bon équilibre pour des tâches factuelles
- 0.7-1.0 : réponses plus créatives et variées
- > 1.0 : réponses très aléatoires (rarement utile)
max_tokens
Limite le nombre de tokens dans la réponse. Utile pour contrôler les coûts et la longueur. Si le modèle est coupé, finish_reason sera "length".
top_p
Contrôle la diversité en filtrant les tokens les moins probables. Une valeur de 0.95 signifie que le modèle considère les tokens représentant 95 % de la probabilité cumulée.
Exemple complet avec gestion d’erreurs
En production, gérez toujours les erreurs possibles :
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
try:
response = client.chat.complete(
model="mistral-small-latest",
messages=[
{"role": "user", "content": "Quelle est la capitale de la France ?"}
],
max_tokens=100,
)
texte = response.choices[0].message.content
print(f"Réponse : {texte}")
print(f"Tokens utilisés : {response.usage.total_tokens}")
except Exception as e:
print(f"Erreur lors de l'appel API : {e}")
Points clés à retenir
client.chat.complete()est la méthode principale pour interagir avec les modèles- La réponse se trouve dans
response.choices[0].message.content response.usagevous indique le nombre de tokens consommés (utile pour le suivi des coûts)temperaturecontrôle la créativité,max_tokenslimite la longueur- Utilisez
mistral-small-latestpour commencer : rapide, économique, et performant