Guides de migration
Ces guides détaillent les modifications de code nécessaires pour passer d'un autre fournisseur à l'API Mistral. L'API Chat Completions de Mistral suit la même structure de requête qu'OpenAI, de sorte que la plupart des migrations impliquent de changer l'import du client, l'URL de base et le nom du modèle. Choisissez votre plateforme source ci-dessous pour voir les étapes exactes et un exemple de code fonctionnel.
L'API Mistral suit la même structure Chat Completions que l'API OpenAI. Pour la plupart des applications, la migration nécessite de modifier trois éléments : l'import du client, l'appel d'initialisation et le nom du modèle.
Migrer depuis OpenAI
Mettre à jour le client
Avant (OpenAI) :
from openai import OpenAI
client = OpenAI(api_key="sk-...")
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}],
)Après (Mistral) :
from mistralai import Mistral
client = Mistral(api_key="your_mistral_api_key")
response = client.chat.complete(
model="mistral-large-latest",
messages=[{"role": "user", "content": "Hello"}],
)Principales différences
| OpenAI | Mistral | |
|---|---|---|
| Client Python | openai.OpenAI | mistralai.Mistral |
| Méthode Chat | client.chat.completions.create | client.chat.complete |
| Méthode Streaming | client.chat.completions.create(stream=True) | client.chat.stream |
| URL de base | https://api.openai.com/v1 | https://api.mistral.ai/v1 |
Correspondance des noms de modèles
| Modèle OpenAI | Équivalent Mistral |
|---|---|
gpt-4o | mistral-large-latest |
gpt-4o-mini | mistral-small-latest |
text-embedding-3-small | mistral-embed |
Utiliser l'URL de base compatible OpenAI
Si votre application utilise un client compatible OpenAI (LangChain, LlamaIndex ou toute autre bibliothèque tierce), pointez-la vers l'API Mistral en modifiant uniquement l'URL de base et le nom du modèle. Aucun changement de bibliothèque requis.
from openai import OpenAI
client = OpenAI(
api_key="your_mistral_api_key",
base_url="https://api.mistral.ai/v1",
)
response = client.chat.completions.create(
model="mistral-large-latest",
messages=[{"role": "user", "content": "Hello"}],
)Migrer depuis Llama auto-hébergé
Tokenizer
Les modèles Mistral utilisent un tokenizer différent de celui de Llama. Si vous calculez manuellement le nombre de tokens ou gérez la tokenisation brute, mettez à jour vos outils.
Installez le tokenizer officiel Mistral :
pip install mistral-commonUtilisez-le pour tokeniser du texte :
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
tokenizer = MistralTokenizer.v3()
result = tokenizer.encode_chat_completion(
messages=[{"role": "user", "content": "Hello, world!"}]
)
print(result.tokens)Les modèles Mistral sur Hugging Face sont également compatibles avec la bibliothèque transformers. Utilisez apply_chat_template pour gérer automatiquement le formatage.
Format de prompt
Les modèles Mistral n'utilisent pas le format de prompt [INST] / [/INST] de Llama 2. Passer des chaînes brutes au format Llama 2 aux modèles Mistral produit une sortie dégradée. Mettez à jour vos templates de prompt avant de tester.
Utilisez apply_chat_template pour formater correctement les prompts :
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3")
messages = [{"role": "user", "content": "Hello"}]
formatted = tokenizer.apply_chat_template(messages, tokenize=False)Sélection du modèle
| Modèle Llama auto-hébergé | Équivalent Mistral |
|---|---|
| Llama 3 8B Instruct | Mistral 7B Instruct (open-weight) |
| Llama 3 70B Instruct | Mixtral 8x22B Instruct (open-weight) |
| N'importe quel modèle auto-hébergé | API : mistral-large-latest (géré) |
Tous les modèles open-weight Mistral sont disponibles sur Hugging Face sous licence Mistral.
Migrer vers le SDK Python v2
La version 2.0.0 du SDK Python introduit un nombre limité de changements incompatibles. Toutes les autres API (chat, streaming, embeddings, agents, function calling, batch) restent inchangées.
Mettre à jour le package
Le SDK V1 correspond à mistralai<2 et la V2 à mistralai>=2. Exécutez :
pip install "mistralai>=2"Mettre à jour le chemin d'import
Avant (V1) :
from mistralai import MistralAprès (V2) :
from mistralai.client import MistralAzure AI (si applicable)
Avant (V1) :
# pip install mistralai-azure>=1.0.0
from mistralai_azure import MistralAzure
client = MistralAzure(
azure_endpoint=os.environ["AZUREAI_ENDPOINT"],
azure_api_key=os.environ["AZUREAI_API_KEY"],
)Après (V2) :
# pip install mistralai>=2.0.0
from mistralai.azure.client import MistralAzure
client = MistralAzure(
server_url=os.environ["AZUREAI_ENDPOINT"],
api_key=os.environ["AZUREAI_API_KEY"],
)Google Cloud / Vertex AI (si applicable)
Avant (V1) :
# pip install mistralai[gcp]
from mistralai_gcp import MistralGoogleCloud
client = MistralGoogleCloud(
region=os.environ["GOOGLE_CLOUD_REGION"],
project_id=os.environ["GOOGLE_CLOUD_PROJECT_ID"],
)Après (V2) :
# pip install mistralai>=2.0.0 (aucun package séparé nécessaire)
from mistralai.gcp.client import MistralGCP
# L'authentification est gérée automatiquement via google.auth.default()
# La région par défaut est "europe-west4" ; remplacez si nécessaire :
# client = MistralGCP(region="us-central1", project_id="my-project")
client = MistralGCP()Résumé
| Domaine | V1 | V2 |
|---|---|---|
| Package | mistralai<2 | mistralai>=2 |
| Import principal | from mistralai import Mistral | from mistralai.client import Mistral |
| Import Azure | from mistralai_azure import MistralAzure | from mistralai.azure.client import MistralAzure |
| Constructeur Azure | azure_endpoint=, azure_api_key= | server_url=, api_key= |
| Import GCP | from mistralai_gcp import MistralGoogleCloud | from mistralai.gcp.client import MistralGCP |
| Authentification GCP | Variables d'environnement GOOGLE_CLOUD_REGION + GOOGLE_CLOUD_PROJECT_ID | automatique via google.auth.default() |
| Toutes les autres API | — | inchangées |