Cours
Mistral a publié Pixtral 12B, un modèle de langue géant (LLM) open source de 12 milliards de paramètres. Il s’agit du premier modèle multimodal de Mistral, ce qui signifie qu’il peut traiter du texte et des images.
Voici pourquoi Pixtral est un atout de poids dans le paysage des LLM :
- Il traite efficacement des images de toutes tailles, sans prétraitement.
- Une fenêtre de contexte de 128 K permet de gérer des invites complexes et de nombreuses images.
- De solides performances sur des tâches purement texte comme multimodales.
- Gratuit pour les projets non monétisés, idéal pour les chercheurs et les passionnés.
- Open source sous licence Apache 2.0, au service de la démocratisation de l’IA.
Dans ce tutoriel, je vous propose de nombreux exemples et un pas-à-pas pour utiliser Pixtral via l’interface web Le Chat et par programmation via l’API. Mais commençons par les essentiels théoriques de Pixtral.
Qu’est-ce que Pixtral 12B ?
Mistral AI a lancé Pixtral 12B, un modèle conçu pour traiter conjointement images et texte. Avec 12 milliards de paramètres, il sait gérer des tâches mêlant visuel et langage, comme l’interprétation de graphiques, documents ou schémas.
Il est pertinent dans des contextes qui exigent une compréhension poussée des deux formats.
Un point fort de Pixtral 12B est sa capacité à traiter plusieurs images dans une même entrée, à leur résolution native. Le modèle dispose d’une fenêtre de contexte de 128 000 tokens, ce qui autorise l’analyse de documents longs et complexes, d’images ou de multiples sources en parallèle. Cela s’avère utile, par exemple, pour les rapports financiers ou la numérisation documentaire en entreprise.
Benchmarks de Pixtral
Pixtral excelle sur les tâches de connaissances et de raisonnement multimodaux, notamment sur MathVista où il se classe en tête. Sur les tâches de QA multimodales, il est également bien positionné, en particulier sur ChartQA.

Source : Mistral AI
En revanche, pour le suivi d’instructions et les tâches purement textuelles, d’autres modèles comme Claude 3 Haiku ou Gemini Flash-8B affichent des performances comparables, voire meilleures. Il en ressort que Pixtral 12B brille sur le raisonnement visuel et multimodal, mais n’est pas forcément le meilleur sur des tâches 100 % texte.
Architecture de Pixtral
L’architecture de Pixtral 12B est conçue pour traiter simultanément texte et images. Elle comporte deux briques principales : un encodeur de vision et un décodeur transformeur multimodal.
L’encodeur de vision, qui compte 400 millions de paramètres, est spécialement entraîné pour gérer des images de tailles et résolutions variées.

Source : Mistral AI
La seconde brique, le décodeur transformeur multimodal, est un modèle plus vaste de 12 milliards de paramètres. Basé sur l’architecture Mistral Nemo, il prédit le prochain token texte dans des séquences qui mêlent texte et données images.
Ce décodeur gère des contextes très longs (jusqu’à 128 k tokens), ce qui lui permet d’absorber de nombreux tokens image et un volume important de texte dans de gros documents.

Source : Mistral AI
Cette architecture combinée permet à Pixtral de prendre en charge un large éventail de tailles et formats d’images, en les traduisant en tokens cohérents sans perte de contexte.
Comment utiliser Pixtral sur Le Chat
La façon la plus simple d’accéder gratuitement à Pixtral est de passer par Le Chat, leur interface de conversation. Elle ressemble aux autres interfaces de LLM — comme celle de ChatGPT, par exemple.

Pour utiliser Pixtral, ouvrez le sélecteur de modèle situé en bas, à côté du champ d’invite, et choisissez Pixtral dans la liste des modèles disponibles.

Pixtral est un modèle multimodal qui gère à la fois le texte et les images. Via l’icône de trombone en bas, vous pouvez téléverser une ou plusieurs images et les combiner à une invite texte. Par exemple, cette fonction peut nous aider à identifier un fruit présent sur une image.

Explorons un autre exemple : demandons à Pixtral de convertir une image contenant un diagramme en secteurs en un tableau en Markdown :

Comment se connecter à l’API de Pixtral sur La Plateforme
Même si l’interface web de Pixtral est agréable et simple, elle ne convient pas à l’intégration dans nos projets. Dans cette section, nous verrons comment interagir avec Pixtral via leur API en Python, au travers de La Plateforme.
Configuration du profil
Pour commencer, créez un compte. Cela peut se faire en un clic avec un compte Google, ou via un compte classique avec identifiant et mot de passe.
Après la création, on vous invite à configurer un espace de travail. Choisissez le nom de votre choix et sélectionnez l’option « I’m a solo creator ».

Ensuite, rendez-vous sur la page des offres. Vous pouvez y créer une offre expérimentale pour tester gratuitement l’API, ou opter pour une offre payante. Notez que l’offre expérimentale gratuite nécessite l’association d’un numéro de téléphone valide.

Votre profil est désormais prêt pour créer une clé d’API. Elle est indispensable pour adresser des requêtes à l’API de Mistral et interagir avec Pixtral en Python.
Génération de la clé API
Pour générer la clé API, allez sur la page des clés API. En haut de page, un bouton permet de créer une nouvelle clé :

Lors de la création, on peut donner un nom à la clé et définir une date d’expiration. Ces champs sont facultatifs : vous pouvez les laisser vides.

De manière générale, il est prudent de définir une date d’expiration. Les clés créées pour tester une API sont souvent oubliées et restent actives indéfiniment. Une expiration garantit qu’en cas de fuite, la clé ne pourra pas être exploitée sans limite, réduisant ainsi les risques.

Une fois la clé générée, elle s’affiche. C’est la seule occasion de la consulter : pensez à la copier. Si vous la perdez, il faudra la supprimer de la liste puis en créer une nouvelle.
Je vous conseille de créer un fichier .env dans le même répertoire que le script Python pour y stocker la clé au format suivant (en remplaçant <key_value> par la valeur réelle) :
# contents of the .env fileAPI_KEY=<key_value>Sauter cette étape et coder en dur la clé API dans le script est déconseillé. Vous ne pourriez plus partager le code sans exposer la clé. Pour aller plus loin, consultez ce tutoriel sur les variables d’environnement en Python.
Installer les dépendances
Commencez par installer les dépendances nécessaires :
mistralai, la bibliothèque cliente fournie par Mistral pour interagir avec l’API.python-dotenv, un module pour charger les variables d’environnement depuis un fichier.env.
pip install python-dotenv mistralaiUne fois les dépendances installées, passons au script. Créez un fichier mistral_example.py dans le même dossier que le fichier .env. La première étape consiste à importer les modules et à charger la clé API dans une variable.
# Create a mistral_example.py file in the same folder as the .env fileimport osfrom mistralai import Mistralfrom dotenv import load_dotenvload_dotenv()api_key = os.getenv("API_KEY")Ensuite, nous pouvons initialiser le client.
Initialiser le client
La documentation Mistral liste tous les modèles disponibles. Celui qui nous intéresse ici est le dernier Pixtral, accessible via l’endpoint API pixtral-12b-2409.

# Add this code in mistral_example.py after initializing the API keymodel = "pixtral-12b-2409"client = Mistral(api_key=api_key)Effectuer une requête API
Nous sommes prêts à envoyer une requête à l’API Mistral et à interagir avec Pixtral par programmation. Voici un exemple d’envoi d’une invite texte :
# Add this code in mistral_example.py after initializing the clientchat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "What is 1 + 1?" } ] }, ])print(chat_response.choices[0].message.content)Lancez ce script dans le terminal pour afficher la réponse de Pixtral à notre invite :
$ python mistral_example.py The sum of 1 + 1 is 2. So,1 + 1 = 2Utiliser l’API en multimodalité
Dans l’exemple précédent, l’invite texte est transmise via le champ content, avec type réglé sur "text".
{ "type": "text", "text": "What is 1 + 1?"}Le champ content est un tableau qui permet d’envoyer plusieurs éléments. En tant que modèle multimodal, Pixtral accepte aussi des images. Pour utiliser une image accessible via une URL, ajoutez-la au champ content en spécifiant le type "image_url" :
{ "type": "image_url", "Image_url": "<image_url>” }Remplacez <image_url> par l’URL réelle de l’image. Par exemple, nous pouvons demander à Pixtral d’analyser les graphiques de performances ci-dessous :

Source : Mistral AI
chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "According to the chart, how does Pixtral 12B performs compared to other models?" }, { "type": "image_url", "image_url": "https://mistral.ai/images/news/pixtral-12b/pixtral-benchmarks.png" } ] }, ])print(chat_response.choices[0].message.content)Lors de l’envoi, Pixtral reçoit à la fois l’invite texte et l’image contenant les graphiques à analyser, puis renvoie une réponse détaillée. Nous ne l’affichons pas ici car elle est assez volumineuse.
Charger des images locales
Dans l’exemple précédent, nous avons utilisé une image accessible par URL. On peut aussi utiliser une image stockée en local en l’encodant en base 64. Pour charger et encoder une image en base 64, utilisez le module standard base64 :
def encode_image_base64(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8")Avec des images encodées en base 64, on utilise toujours le type image_url pour fournir l’image encodée, mais en la préfixant par data:image/jpeg;base64, :
{ "type": "image_url", "image_url": f"data:image/jpeg;base64,{base_64_image}"}base_64_image est le résultat de l’appel à encode_image_base64() pour charger l’image. Utilisons cela pour demander à Pixtral de générer un site web de liste de tâches à deux pages à partir des deux croquis suivants :

Nous fournissons les deux images séparément, ainsi qu’une invite demandant de créer un site HTML basé sur ces images :
list_image = encode_image_base64("./todo-list.jpeg")new_item_image = encode_image_base64("./new-item-form.jpeg")chat_response = client.chat.complete( model=model, messages = [ { "role": "user", "content": [ { "type": "text", "text": "Create a HTML website with two pages like in the images" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{list_image}" }, { "type": "image_url", "image_url": f"data:image/jpeg;base64,{new_item_image}" }, ] }, ])print(chat_response.choices[0].message.content)Pixtral renvoie deux blocs de code correspondant au contenu des deux pages. Nous avons enregistré ce code dans deux fichiers nommés index.html et add.html, puis les avons ouverts dans le navigateur. Voici le résultat :

Ce n’est pas encore une application complète, mais elle fonctionne et constitue une excellente base pour aller plus loin.
Conclusion
Pixtral 12B est le premier modèle multimodal de Mistral. Il gère des images de toute taille sans prétraitement, dispose d’une fenêtre de contexte de 128 K pour des invites complexes et affiche de bonnes performances en texte seul comme en multimodal.
Disponible gratuitement pour les projets non monétisés et open source sous licence Apache 2.0, Pixtral est précieux autant pour les chercheurs que pour les passionnés.
Dans ce tutoriel, je vous ai proposé une prise en main concrète de Pixtral, en mettant en avant ses capacités au travers d’exemples et d’instructions pas à pas.
FAQs
Is Pixtral free to use, and under what conditions?
Pixtral est gratuit sur Le Chat et via l’API pour les projets non monétisés.
Is Pixtral open source?
Oui. Il est open source sous licence Apache 2.0.
What kind of input data does Pixtral support?
Pixtral est le premier LLM multimodal de Mistral AI. Il prend en charge le texte et les images.
What kind of images does Pixtral support?
Pixtral accepte des images de toute taille, sans aucun prétraitement.
What makes Pixtral important?
Pixtral offre d’excellentes performances pour un modèle de seulement 12 milliards de paramètres. En prime, il est gratuit d’usage et open source.
