Accéder au contenu principal

Mistral Medium 3 Tutoriel : Construire des applications agentiques

Développer une application agent multi-outils en utilisant LangGraph, Python, l'outil Python et l'API Mistral AI dans l'environnement DataLab.
Actualisé 19 mai 2025  · 5 min de lecture

Mistral Medium 3 offre des performances élevées à un prix nettement inférieur à celui de nombreuses autres solutions. Elle est actuellement disponible via l'API Mistral AI, au prix de 0,40 dollar par million de jetons d'entrée et de 2 dollars par million de jetons de sortie. Cette tarification surpasse celle des principaux concurrents tels que DeepSeek v3qu'il s'agisse d'API ou de systèmes auto-déployés. En résumé, vous pouvez atteindre jusqu'à 90% de la performance de Claude Sonnet 3.7 sur différents benchmarks, tout en réalisant des économies considérables.

Dans ce tutoriel, nous allons apprendre à configurer l'API Mistral et à utiliser le client Python pour accéder au modèle. Ensuite, nous utiliserons LangGraph pour construire une application agentique qui utilise la recherche sur le web et l'outil Python REPL pour générer des réponses.

Construire une application agentique avec Mistral Medium 3 feature image

Image par l'auteur

Démarrer avec Mistral Medium 3

Dans cette section, nous allons apprendre à générer la clé API, à l'enregistrer en tant que variable d'environnement, puis à utiliser le client Python pour accéder à Mistral Medium 3 pour la génération de texte et la compréhension d'images.

1. Générer la clé de l'API Mistral AI

Inscrivez-vous à La Plateforme : Mistral AI et allez ensuite dans la rubrique Facturation et chargez le crédit de 5 $ en utilisant la carte de crédit/débit. Vous n'avez besoin que de quelques centimes pour ce projet. Ensuite, allez dans la section Clés API pour générer la nouvelle clé API.

2. Mise en place de l'environnement

La configuration d'une variable d'environnement dans DataLab est simple. Allez simplement dans l'onglet "Environnement", sélectionnez l'option "Variables d'environnement", et ajoutez une nouvelle variable nommée "MISTRAL_API_KEY" avec votre clé API. Après avoir enregistré les modifications, veillez à le connecter.

Mise en place de variables d'environnement dans le Datalab

Dans DataLab, créez la nouvelle cellule Python et installez le paquet python Mistral AI. 

!pip install -U mistralai 

3. Génération de texte

Avant d'écrire le moindre code, il est essentiel de localiser les noms des points de terminaison de la clé API de Mistral Medium 3 en visitant la page Aperçu des modèles. D'après la documentation, le point de terminaison semble s'appeler mistral-medium-latest.

Lecture de la documentation pour obtenir le nom du nouveau modèle.

Source : Aperçu des modèles | Mistral AI Large Language Models

Ensuite, nous allons créer un client Mistral AI à l'aide de la clé API et générer une réponse en continu à une requête de l'utilisateur. 

import osfrom mistralai import Mistralapi_key = os.environ["MISTRAL_API_KEY"]model = "mistral-medium-latest"client = Mistral(api_key=api_key)stream_response = client.chat.stream(    model = model,    messages = [        {            "role": "user",            "content": "What is the best course to take from DataCamp?",        },    ])for chunk in stream_response:    print(chunk.data.choices[0].delta.content, end="" )

La réponse est très précise et ne nous a rien coûté. 

Sortie générée par l'IA du Mistral

4. Compréhension de l'image

Pour tester les capacités multimodales du modèle, nous prendrons une capture d'écran de la page d'accueil du blog de DataCamp et la fournirons au modèle avec une invite de l'utilisateur.

Capture d'écran de la page des blogs de DataCamp

Source : Blog | Articles sur la science des données | DataCamp

Comme le modèle ne peut pas accéder directement au fichier image, nous devons d'abord charger l'image et la convertir en une chaîne encodée en Base64.

import base64import requestsdef encode_image(image_path):    """Encode the image to base64."""    try:        with open(image_path, "rb") as image_file:            return base64.b64encode(image_file.read()).decode('utf-8')    except FileNotFoundError:        print(f"Error: The file {image_path} was not found.")        return None    except Exception as e:  # Added general exception handling        print(f"Error: {e}")        return None# Path to your imageimage_path = "datacamp_fp.png"# Getting the base64 stringbase64_image = encode_image(image_path)

Nous allons maintenant envoyer l'image codée en Base64, accompagnée d'une requête de l'utilisateur, au client de complétion de chat de Mistral AI.

# Define the messages for the chatmessages = [    {        "role": "user",        "content": [            {                "type": "text",                "text": "Explain the image in a Donald Trump style."            },            {                "type": "image_url",                "image_url": f"data:image/png;base64,{base64_image}"             }        ]    }]stream_response = client.chat.stream(    model = model,    messages = messages)for chunk in stream_response:    print(chunk.data.choices[0].delta.content, end="" )

Le modèle interprète avec succès l'image et génère une réponse dans le style de Donald Trump, démontrant ainsi ses capacités de compréhension multimodale. 

Sortie générée par l'IA du Mistral

Construire une application agentique avec Mistral Medium 3

Dans ce projet, nous utiliserons Mistral Medium 3 avec LangGraph pour construire une application agentique. Cette application utilisera l'API Python pour la recherche sur le web et la REPL Python pour l'exécution du code en fonction des invites de l'utilisateur.

Vous êtes nouveau sur LangGraph ? Pas de problème ! Suivez notre tutoriel LangGraph et apprenez tout ce que vous devez savoir sur le framework.

1. Mise en place de l'API Tavily

Avant de plonger dans l'implémentation, nous devons configurer Tavily AI en créant un compte et en générant une clé API. La procédure est simple et vous n'avez pas besoin de fournir des informations de paiement ou une carte de crédit.

Une fois que vous avez la clé API, enregistrez-la en tant que variable d'environnement nommée TAVILY_API_KEY, soit localement, soit dans votre configuration DataLab, comme indiqué dans la section précédente.

2. Installation des paquets Python

Ensuite, nous installerons les paquets Python nécessaires à la création d'outils et d'agents utilisant l'écosystème LangChain.

%%capture!pip install -U \    mistralai \    langchain langchain-mistralai \    langchain-experimental \    langgraph  \    tavily-python

3. Création d'un client LLM

Nous allons créer le client LangChain ChatMistralAI pour les grands modèles de langage (LLM) en spécifiant le nom du modèle, la température et en activant les réponses en continu.

from langchain_mistralai import ChatMistralAIllm = ChatMistralAI(    model="mistral-medium-latest",       temperature=0.2,                     streaming=True          )

4. Initialisation des outils

Nous allons maintenant mettre en place les outils pour l'agent. Au lieu de créer manuellement des outils, nous pouvons utiliser des outils préconstruits comme Tavily Search et Python REPL de l'écosystème LangChain. 

from langchain_community.tools import TavilySearchResultsfrom langchain_experimental.tools.python.tool import PythonREPLToolsearch_tool = TavilySearchResults(max_results=5, include_answer=True)code_tool   = PythonREPLTool()tools = [search_tool, code_tool]

5. Mise en place d'un agent

Le client et les outils LLM étant prêts, nous pouvons maintenant créer l'agent React à l'aide de LangGraph.

from langgraph.prebuilt import create_react_agentagent = create_react_agent(    model=llm,           tools=tools,      )    ```                 6. Extracting tool namesBefore executing the agent, we will define a Python function to extract the names of the tools used during the agent’s response generation. This function will help us identify which tools were invoked.```pythondef extract_tool_names(conversation: dict) -> list[str]:    """    Given a conversation dict with a 'messages' list (where each message    may be a dict or a Pydantic model), extract all unique tool names    used in any tool call.    """    tool_names = set()    for msg in conversation.get('messages', []):        # 1) Try direct attribute access (for Pydantic models)        calls = []        if hasattr(msg, 'tool_calls'):            calls = getattr(msg, 'tool_calls') or []        # 2) If that fails, the message might be a dict        elif isinstance(msg, dict):            calls = msg.get('tool_calls')            # also check nested in additional_kwargs            if not calls and isinstance(msg.get('additional_kwargs'), dict):                calls = msg['additional_kwargs'].get('tool_calls')        # 3) Finally, check additional_kwargs on objects        else:            ak = getattr(msg, 'additional_kwargs', None)            if isinstance(ak, dict):                calls = ak.get('tool_calls', [])        # Normalize to list        calls = calls or []        # Extract names        for call in calls:            # dict-style tool call            if isinstance(call, dict):                # top-level 'name'                if 'name' in call:                    tool_names.add(call['name'])                # nested under 'function'                elif 'function' in call and isinstance(call['function'], dict):                    fn = call['function']                    if 'name' in fn:                        tool_names.add(fn['name'])    return sorted(tool_names)

LangGraph Studio est un environnement de développement visuel pour le cadre LangGraph ; suivez le guide LangGraph Studio à l'adresse: Installation, paramétrage, cas d'utilisation pour en savoir plus.

7. Test de l'agent 

Testons l'agent en lui posant une question sur les dernières nouvelles. 

question = "What are the top 5 breaking news stories?"def run_agent(question):    result = agent.invoke(        {            "messages": [                {"role": "user", "content": question}            ]        }    )    tool_name = extract_tool_names(result)    # The LLM’s final answer is always in the last message    raw_answer = result["messages"][-1].content    clean_text = "".join(part for part in raw_answer if isinstance(part, str))    return tool_name, clean_texttool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agent a utilisé l'outil de recherche Tavily pour générer une réponse sur les dernières nouvelles.

Application agentique Résultats générés

Ensuite, testons l'outil Python REPL en demandant à l'agent de générer et d'exécuter du code Python.

question = "Write a code to display the stars in a triangle. Please execute the code too."tool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agent a utilisé Mistral Medium 3 pour la génération de code et Python REPL pour l'exécution du code.

Application agentique Résultats générés

Enfin, testons une requête qui demande à l'agent d'utiliser les deux outils l'un après l'autre.

question = "Get the latest gold price data for the past 7 days and use it to generate a line plot"tool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agent utilisera Tavily Search pour obtenir des données sur le cours de l'or, Mistral Medium 3 pour générer du code pour la visualisation des données, et Python REPL pour exécuter ce code. Le résultat comprendra un tableau très précis ainsi qu'un résumé des outils utilisés.

Tool used ⫸ ['Python_REPL', 'tavily_search_results_json'] The code generates a line plot showing the gold price per gram in USD over the last 7 days, with the x-axis representing dates and the y-axis representing the gold price. The plot includes markers for each data point, a title, labeled axes, a grid, and rotated x-axis labels for better readability.

L'application agentique a généré des sorties en utilisant la recherche sur le Web et l'outil Python Repl.

Si vous rencontrez des problèmes lors de l'exécution du code, reportez-vous à la section Mistral Medium 3 - DataLab pour obtenir des conseils supplémentaires.

Vous pouvez utiliser l'écosystème Haystack pour créer une application d'agent plus puissante et plus facile à mettre en œuvre. Suivez les tutoriels pour en savoir plus : Tutoriel Haystack AI : Construire des flux de travail agentiques.

Conclusion

Après avoir expérimenté l'API Mistral AI et créé des agents pour tester diverses applications, l'un des aspects les plus remarquables est qu'elle ne m'a pas coûté un seul dollar, même après avoir utilisé 161 075 jetons. Le modèle est abordable, rapide, précis et incroyablement facile à mettre en place. Il s'agit d'une excellente alternative à d'autres API coûteuses, telles que DeepSeek, tout en offrant des fonctionnalités comparables.

Le paysage de l'IA évolue clairement vers des modèles plus petits, plus rapides, plus précis et plus rentables, ce qui constitue une tendance prometteuse, en particulier pour les startups et les petites et moyennes entreprises (PME). Ces organisations dépendent souvent fortement des fournisseurs de LLM et, à mesure que ces modèles deviendront plus abordables, elles bénéficieront de marges bénéficiaires plus importantes.

Prenez le Développer de grands modèles de langage le cursus de compétences pour construire vos propres LLM en utilisant PyTorch et Hugging Face et les dernières techniques d'apprentissage profond et de NLP.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.

Sujets

Les meilleurs cours de DataCamp

Cursus

Developing Large Language Models

16hrs hr
Learn to develop large language models (LLMs) with PyTorch and Hugging Face, using the latest deep learning and NLP techniques.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Architecture de l'entrepôt de données : Tendances, outils et techniques

Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Kurtis Pykes 's photo

Kurtis Pykes

15 min

blog

Les 50 meilleures questions et réponses d'entretien sur AWS pour 2025

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles.
Zoumana Keita 's photo

Zoumana Keita

15 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

Voir plusVoir plus