Aller au contenu principal

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-latest pointe 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 un role (system, user, ou assistant) et un content (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éponse
  • length : la réponse a été coupée car elle a atteint max_tokens
  • model_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.usage vous indique le nombre de tokens consommés (utile pour le suivi des coûts)
  • temperature contrôle la créativité, max_tokens limite la longueur
  • Utilisez mistral-small-latest pour commencer : rapide, économique, et performant