```html
L'Intelligence Artificielle (IA) dépasse rapidement la simple génération de texte ou la reconnaissance d'images. La prochaine frontière concerne l'IA capable d'agir, de résoudre des problèmes et d'interagir avec le monde de manière significative. Mistral AI, un nom de premier plan dans ce domaine, a franchi une étape importante dans cette direction avec son Mistral Agents API. Cette boîte à outils puissante permet aux développeurs de créer des agents d'IA sophistiqués qui peuvent faire bien plus que les modèles de langage traditionnels.
À la base, l'API Agents est conçue pour surmonter les limites des modèles d'IA standard, qui excellent souvent dans la compréhension et la génération de langage, mais ont du mal à effectuer des actions, à se souvenir des interactions passées de manière cohérente ou à utiliser efficacement des outils externes. Le Mistral Agents API relève ces défis en équipant ses puissants modèles de langage de fonctionnalités telles que des connecteurs intégrés à divers outils, une mémoire persistante sur les conversations et la capacité de coordonner des tâches complexes.
Pensez à cela comme une mise à niveau d'un bibliothécaire très compétent qui ne peut que parler de livres vers une équipe de chercheurs experts qui peuvent non seulement accéder à l'information, mais aussi mener des expériences, rédiger des rapports et collaborer entre eux. Cette nouvelle API sert de base à la création d'applications d'IA de qualité entreprise qui peuvent automatiser les flux de travail, aider à la prise de décision complexe et offrir des expériences véritablement interactives.
Vous voulez une plateforme intégrée, tout-en-un, pour que votre équipe de développeurs travaille ensemble avec une productivité maximale ?
Apidog répond à toutes vos demandes et remplace Postman à un prix beaucoup plus abordable !
Qu'est-ce qui rend les agents Mistral si performants ?

Les modèles de langage traditionnels, bien qu'efficaces pour la génération de texte, sont souvent insuffisants lorsqu'il s'agit d'exécuter des actions ou de se souvenir d'informations lors d'interactions prolongées. Le Mistral Agents API répond directement à ces limites en synergie les modèles de langage de pointe de Mistral avec une suite de fonctionnalités puissantes conçues pour les flux de travail agentiques.
Fonctionnalités principales :
Au cœur de l'API Agents, on trouve :
- Connecteurs intégrés : Ce sont des outils pré-déployés que les agents peuvent appeler à la demande. Ils comprennent :
- Exécution de code : Permet aux agents d'exécuter du code Python dans un bac à sable sécurisé, utile pour les calculs, l'analyse de données et l'informatique scientifique.
- Recherche Web : Permet aux agents d'accéder à des informations à jour provenant d'Internet, améliorant considérablement la précision et la pertinence des réponses. Par exemple, dans le benchmark SimpleQA, Mistral Large avec recherche Web a obtenu un score de 75 %, une amélioration massive par rapport aux 23 % sans elle.
- Génération d'images : En tirant parti de modèles comme Black Forest Lab FLUX1.1 [pro] Ultra, les agents peuvent créer diverses images pour des applications allant des aides pédagogiques aux graphiques marketing.
- Bibliothèque de documents : Permet aux agents d'accéder et d'utiliser des documents de Mistral Cloud, alimentant la génération augmentée de récupération (RAG) intégrée pour améliorer leur base de connaissances.
- Outils MCP : Facilite l'intégration transparente avec des systèmes externes via le Model Context Protocol, que nous explorerons en profondeur dans la partie 3.
- Mémoire persistante : Les agents peuvent maintenir le contexte sur les conversations, ce qui conduit à des interactions à long terme plus cohérentes et significatives.
- Orchestration agentique : L'API permet la coordination de plusieurs agents, chacun pouvant se spécialiser dans différentes tâches, pour résoudre en collaboration des problèmes complexes.
Cette API n'est pas simplement une extension de leur API de complétion de chat ; c'est un cadre dédié spécialement conçu pour simplifier la mise en œuvre des cas d'utilisation agentiques. Elle est conçue pour être l'épine dorsale des plateformes agentiques de qualité entreprise, permettant aux entreprises de déployer l'IA de manière plus pratique, percutante et axée sur l'action.
Mistral Agents en action : applications concrètes
La polyvalence de l'API Agents est mise en évidence à travers diverses applications innovantes :
- Assistant de codage avec GitHub : Un flux de travail agentique où un agent supervise un agent développeur (alimenté par DevStral) qui interagit avec GitHub, automatisant les tâches de développement logiciel avec une autorité complète sur le référentiel.
- Assistant de tickets Linear : Un assistant intelligent utilisant une architecture MCP multi-serveurs pour transformer les transcriptions d'appels en documents d'exigences produit (PRD), puis en problèmes Linear exploitables, et suivre par la suite les livrables du projet.
- Analyste financier : Un agent consultatif orchestrant plusieurs serveurs MCP pour obtenir des indicateurs financiers, compiler des informations et archiver en toute sécurité les résultats, démontrant une agrégation et une analyse de données complexes.
- Assistant de voyage : Un outil d'IA complet pour aider les utilisateurs à planifier des voyages, à réserver des hébergements et à gérer divers besoins liés aux voyages.
- Assistant nutritionnel : Un compagnon de régime alimenté par l'IA qui aide les utilisateurs à fixer des objectifs, à enregistrer les repas, à recevoir des suggestions de repas personnalisées, à suivre les progrès quotidiens et à trouver des restaurants correspondant à leurs objectifs nutritionnels.
Mémoire, contexte et conversations avec état
Une pierre angulaire de l'API Agents est son système robuste de gestion des conversations. Il garantit que les interactions sont avec état, ce qui signifie que le contexte est conservé au fil du temps. Les développeurs peuvent initier des conversations de deux manières principales :
- Avec un agent : En spécifiant un
agent_id
, vous tirez parti des capacités, des outils et des instructions préconfigurés d'un agent spécifique. - Accès direct : Vous pouvez démarrer une conversation en spécifiant directement le modèle et les paramètres de complétion, ce qui permet un accès rapide aux connecteurs intégrés sans agent prédéfini.
Chaque conversation conserve un historique structuré grâce à des "entrées de conversation", garantissant que le contexte est méticuleusement préservé. Cet état permet aux développeurs de consulter les conversations passées, de poursuivre toute interaction de manière transparente, ou même de se séparer pour initier de nouveaux chemins conversationnels à partir de n'importe quel point de l'historique. De plus, l'API prend en charge les sorties en streaming, permettant des mises à jour en temps réel et des interactions dynamiques.
Orchestration d'agents : la puissance de la collaboration
La véritable puissance de différenciation de l'API Agents apparaît dans sa capacité à orchestrer plusieurs agents. Il ne s'agit pas d'une seule IA monolithique ; il s'agit d'une symphonie d'agents spécialisés travaillant de concert. Grâce à l'orchestration dynamique, des agents peuvent être ajoutés ou supprimés d'une conversation selon les besoins, chacun contribuant à ses compétences uniques pour s'attaquer à différentes facettes d'un problème complexe.
Pour créer un flux de travail agentique avec des transferts :
- Créer des agents : Définissez et créez tous les agents nécessaires, chacun étant équipé d'outils, de modèles et d'instructions spécifiques adaptés à son rôle.
- Définir les transferts : Spécifiez quels agents peuvent déléguer des tâches à d'autres. Par exemple, un agent de service client principal peut transférer une requête technique à un agent de dépannage spécialisé ou une demande de facturation à un agent financier.
Ces transferts permettent une chaîne d'actions transparente. Une seule demande utilisateur peut déclencher une cascade de tâches sur plusieurs agents, chacun gérant de manière autonome sa partie désignée. Cette approche collaborative débloque une efficacité et une efficacité sans précédent dans la résolution de problèmes pour des applications réelles sophistiquées.
Utilisation de base de l'API Mistral Agents
Après avoir compris les capacités de l'API Mistral Agents, explorons comment interagir avec elle. L'API introduit trois nouveaux objets principaux :
- Agents : Ce sont des configurations qui augmentent les capacités d'un modèle. Une définition d'agent comprend des valeurs présélectionnées comme le modèle à utiliser, les outils auxquels il peut accéder, les instructions système (invites) et les paramètres de complétion par défaut.
- Conversation : Cet objet représente l'historique des interactions et des événements passés avec un assistant. Il comprend les messages de l'utilisateur, les réponses de l'assistant et les enregistrements des exécutions d'outils.
- Entrée : Une entrée est une action ou un événement individuel au sein d'une conversation, créé par l'utilisateur ou un assistant. Elle offre un moyen flexible et expressif de représenter les interactions, permettant un contrôle plus fin sur la description des événements.
Notamment, vous pouvez tirer parti de nombreuses fonctionnalités, telles que les conversations avec état et les connecteurs intégrés, sans créer et référencer explicitement un objet "Agent" formel en premier. Cela offre une flexibilité pour les cas d'utilisation plus simples.
Création d'un agent
Pour définir un agent spécialisé, vous faites une requête à l'API en spécifiant plusieurs paramètres :
model
: Le modèle Mistral sous-jacent (par exemple,mistral-medium-latest
).name
: Un nom descriptif pour votre agent.description
: Une brève explication de l'objectif de l'agent ou de la tâche qu'il est conçu pour accomplir.instructions
(facultatif) : L'invite système qui guide le comportement et les réponses de l'agent.tools
(facultatif) : Une liste des outils que l'agent peut utiliser. Les types d'outils incluent :function
: Outils définis par l'utilisateur, similaires à l'appel de fonction standard dans les complétions de chat.web_search
/web_search_premium
: Outils de recherche Web intégrés.code_interpreter
: L'outil intégré pour l'exécution de code.image_generation
: L'outil intégré pour la génération d'images.completion_args
(facultatif) : Arguments d'échantillonneur de complétion de chat standard comme la température, top_p, etc.
Voici un exemple de requête cURL pour créer un agent simple :
curl --location "https://api.mistral.ai/v1/agents" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"model": "mistral-medium-latest",
"name": "Simple Agent",
"description": "A simple Agent with persistent state."
}'
Mise à jour d'un agent
Les agents peuvent être mis à jour après la création. Les arguments sont les mêmes que ceux de la création. Cette opération se traduit par un nouvel objet agent avec les paramètres mis à jour, ce qui permet effectivement le versionnement de vos agents.
curl --location "https://api.mistral.ai/v1/agents/<agent_id>" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"completion_args": {
"temperature": 0.3,
"top_p": 0.95
},
"description": "An edited simple agent."
}'
Gestion des conversations
Une fois qu'un agent est créé (ou si vous utilisez un accès direct), vous pouvez initier des conversations.
Démarrage d'une conversation :
Vous devez fournir :
agent_id
: L'ID de l'agent (si vous utilisez un agent prédéfini).inputs
: Le message initial, qui peut être une simple chaîne de caractères ou une liste d'objets de message.
Cette requête renvoie unconversation_id
.
Exemple (entrée de chaîne simple) :
curl --location "https://api.mistral.ai/v1/conversations" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"inputs": "Who is Albert Einstein?",
"stream": false,
"agent_id": "<agent_id>"
}'
Poursuite d'une conversation :
Pour ajouter à une conversation existante :
conversation_id
: L'ID de la conversation à poursuivre.inputs
: Le message ou la réponse suivant(e) (chaîne ou liste de messages).
Chaque continuation fournit un nouveauconversation_id
si l'état est stocké. Vous pouvez désactiver le stockage cloud en définissantstore=False
. Le paramètrehandoff_execution
contrôle la manière dont les transferts d'agents sont gérés :server
(par défaut, géré par le cloud de Mistral) ouclient
(la réponse est renvoyée à l'utilisateur pour gérer le transfert).
Exemple :
curl --location "https://api.mistral.ai/v1/conversations/<conv_id>" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"inputs": "Translate to French.",
"stream": false,
"store": true,
"handoff_execution": "server"
}'
Sortie en streaming
Pour les interactions en temps réel, le démarrage et la poursuite des conversations peuvent être diffusés en continu en définissant stream: true
et en s'assurant que l'en-tête Accept
est text/event-stream
.
curl --location "https://api.mistral.ai/v1/conversations" \
--header 'Content-Type: application/json' \
--header 'Accept: text/event-stream' \
--header "Authorization: Bearer $MISTRAL_API_KEY" \
--data '{
"inputs": "Who is Albert Einstein?",
"stream": true,
"agent_id": "ag_06811008e6e07cb48000fd3f133e1771"
}'
Lors du streaming, vous recevrez différents types d'événements indiquant la progression et le contenu de la réponse, tels que :
conversation.response.started
: Marque le début de la réponse de la conversation.message.output.delta
: Un morceau de contenu (jetons) pour la réponse du modèle.tool.execution.started
/tool.execution.done
: Indique le cycle de vie d'une exécution d'outil.agent.handoff.started
/agent.handoff.done
: Signale le début et la fin d'un transfert d'agent.
Ces opérations de base constituent le fondement de la création d'applications dynamiques et interactives avec les agents Mistral.
Intégration de l'API Mistral Agents avec le Model Context Protocol (MCP)
Bien que les connecteurs intégrés offrent une puissance significative, la véritable extensibilité de Mistral Agents brille lorsqu'elle est combinée avec le Model Context Protocol (MCP).
Qu'est-ce que le MCP ?
Le Model Context Protocol (MCP) est une norme ouverte conçue pour rationaliser l'intégration des modèles d'IA avec diverses sources de données, outils et API externes. Il fournit une interface standardisée et sécurisée qui permet aux systèmes d'IA d'accéder et d'utiliser efficacement des informations contextuelles du monde réel. Au lieu de construire et de maintenir de nombreuses intégrations sur mesure, le MCP offre un moyen unifié pour les modèles d'IA de se connecter à des données et des systèmes en direct, ce qui conduit à des réponses plus pertinentes, précises et puissantes. Pour des informations détaillées, consultez la documentation officielle du Model Context Protocol.
Le SDK Python de Mistral fournit des mécanismes d'intégration transparente pour connecter les agents aux clients MCP. Cela permet à vos agents d'interagir avec tout service ou source de données qui expose une interface MCP, qu'il s'agisse d'un outil local, d'une API tierce ou d'un système d'entreprise propriétaire.

Nous allons explorer trois scénarios courants pour l'utilisation du MCP avec Mistral Agents : un serveur MCP local, un serveur MCP distant sans authentification et un serveur MCP distant avec authentification. Tous les exemples utiliseront du code Python asynchrone.
Scénario 1 : Utilisation d'un serveur MCP local
Imaginez que vous disposez d'un script ou d'un service local (par exemple, un fournisseur d'informations météorologiques personnalisé) avec lequel vous souhaitez que votre agent Mistral interagisse.
Étape 1 : Initialiser le client Mistral et la configuration
Importez les modules nécessaires de mistralai
et mcp
. Cela inclut Mistral
, RunContext
, StdioServerParameters
(pour les serveurs MCP locaux basés sur les processus) et MCPClientSTDIO
.
import asyncio
import os
from pathlib import Path
from mistralai import Mistral
from mistralai.extra.run.context import RunContext
from mcp import StdioServerParameters
from mistralai.extra.mcp.stdio import MCPClientSTDIO
from mistralai.types import BaseModel
cwd = Path(__file__).parent
MODEL = "mistral-medium-latest" # Or your preferred model
async def main_local_mcp():
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
# Define parameters for the local MCP server (e.g., running a Python script)
server_params = StdioServerParameters(
command="python",
args=[str((cwd / "mcp_servers/stdio_server.py").resolve())], # Path to your MCP server script
env=None,
)
# Create an agent
weather_agent = client.beta.agents.create(
model=MODEL,
name="Local Weather Teller",
instructions="You can tell the weather using a local MCP tool.",
description="Fetches weather from a local source.",
)
# Define expected output format (optional, but good for structured data)
class WeatherResult(BaseModel):
user: str
location: str
temperature: float
# Create a Run Context
async with RunContext(
agent_id=weather_agent.id,
output_format=WeatherResult, # Optional: For structured output
continue_on_fn_error=True,
) as run_ctx:
# Create and register MCP client
mcp_client = MCPClientSTDIO(stdio_params=server_params)
await run_ctx.register_mcp_client(mcp_client=mcp_client)
# Example of registering a local Python function as a tool
import random
@run_ctx.register_func
def get_location(name: str) -> str:
"""Function to get a random location for a user."""
return random.choice(["New York", "London", "Paris"])
# Run the agent
run_result = await client.beta.conversations.run_async(
run_ctx=run_ctx,
inputs="Tell me the weather in John's location currently.",
)
print("Local MCP - All run entries:")
for entry in run_result.output_entries:
print(f"{entry}\n")
if run_result.output_as_model:
print(f"Local MCP - Final model output: {run_result.output_as_model}")
else:
print(f"Local MCP - Final text output: {run_result.output_as_text}")
# if __name__ == "__main__":
# asyncio.run(main_local_mcp())
Dans cette configuration, stdio_server.py
serait votre script mettant en œuvre la logique du serveur MCP, communiquant via stdin/stdout. Le RunContext
gère l'interaction, et register_mcp_client
rend le serveur MCP local disponible en tant qu'outil pour l'agent. Vous pouvez également enregistrer des fonctions Python locales directement en utilisant @run_ctx.register_func
.
Streaming avec un serveur MCP local :
Pour diffuser en continu, utilisez client.beta.conversations.run_stream_async
et traitez les événements au fur et à mesure qu'ils arrivent :
# Inside RunContext, after MCP client registration
# events = await client.beta.conversations.run_stream_async(
# run_ctx=run_ctx,
# inputs="Tell me the weather in John's location currently, stream style.",
# )
# streamed_run_result = None
# async for event in events:
# if isinstance(event, RunResult): # Assuming RunResult is defined or imported
# streamed_run_result = event
# else:
# print(f"Stream event: {event}")
# if streamed_run_result:
# # Process streamed_run_result
# pass
Scénario 2 : Utilisation d'un serveur MCP distant sans authentification
De nombreux services publics ou internes peuvent exposer une interface MCP via HTTP/SSE sans nécessiter d'authentification.
from mistralai.extra.mcp.sse import MCPClientSSE, SSEServerParams
async def main_remote_no_auth_mcp():
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
# Define the URL for the remote MCP server (e.g., Semgrep's public MCP)
server_url = "https://mcp.semgrep.ai/sse"
mcp_client = MCPClientSSE(sse_params=SSEServerParams(url=server_url, timeout=100))
async with RunContext(
model=MODEL, # Can use agent_id too if an agent is pre-created
) as run_ctx:
await run_ctx.register_mcp_client(mcp_client=mcp_client)
run_result = await client.beta.conversations.run_async(
run_ctx=run_ctx,
inputs="Can you write a hello_world.py file and then check it for security vulnerabilities using available tools?",
)
print("Remote No-Auth MCP - All run entries:")
for entry in run_result.output_entries:
print(f"{entry}\n")
print(f"Remote No-Auth MCP - Final Response: {run_result.output_as_text}")
# if __name__ == "__main__":
# asyncio.run(main_remote_no_auth_mcp())
Ici, MCPClientSSE
est utilisé avec SSEServerParams
pointant vers l'URL distante. L'agent peut ensuite exploiter les outils fournis par ce serveur MCP distant. Le streaming suit le même modèle que l'exemple MCP local, en utilisant run_stream_async
.
Scénario 3 : Utilisation d'un serveur MCP distant avec authentification (OAuth)
Pour les services nécessitant une authentification OAuth2 (comme Linear, Jira, etc.), le processus implique quelques étapes supplémentaires pour gérer le flux d'autorisation.
from http.server import BaseHTTPRequestHandler, HTTPServer
import threading
import webbrowser
from mistralai.extra.mcp.auth import build_oauth_params
CALLBACK_PORT = 16010 # Ensure this port is free
# Callback server setup (simplified from source)
def run_callback_server_util(callback_func, auth_response_dict):
class OAuthCallbackHandler(BaseHTTPRequestHandler):
def do_GET(self):
if "/callback" in self.path or "/oauth/callback" in self.path: # More robust check
auth_response_dict["url"] = self.path
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
self.wfile.write(b"<html><body>Authentication successful. You may close this window.</body></html>")
callback_func() # Signal completion
threading.Thread(target=self.server.shutdown).start()
else:
self.send_response(404)
self.end_headers()
server_address = ("localhost", CALLBACK_PORT)
httpd = HTTPServer(server_address, OAuthCallbackHandler)
threading.Thread(target=httpd.serve_forever, daemon=True).start() # Use daemon thread
redirect_url = f"http://localhost:{CALLBACK_PORT}/oauth/callback"
return httpd, redirect_url
async def main_remote_auth_mcp():
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
server_url = "https://mcp.linear.app/sse" # Example: Linear MCP
mcp_client_auth = MCPClientSSE(sse_params=SSEServerParams(url=server_url))
callback_event = asyncio.Event()
event_loop = asyncio.get_event_loop()
auth_response_holder = {"url": ""}
if await mcp_client_auth.requires_auth():
httpd, redirect_url = run_callback_server_util(
lambda: event_loop.call_soon_threadsafe(callback_event.set),
auth_response_holder
)
try:
oauth_params = await build_oauth_params(mcp_client_auth.base_url, redirect_url=redirect_url)
mcp_client_auth.set_oauth_params(oauth_params=oauth_params)
login_url, state = await mcp_client_auth.get_auth_url_and_state(redirect_url)
print(f"Please go to this URL and authorize: {login_url}")
webbrowser.open(login_url, new=2)
await callback_event.wait() # Wait for OAuth callback
token = await mcp_client_auth.get_token_from_auth_response(
auth_response_holder["url"], redirect_url=redirect_url, state=state
)
mcp_client_auth.set_auth_token(token)
print("Authentication successful.")
except Exception as e:
print(f"Error during authentication: {e}")
return # Exit if auth fails
finally:
if 'httpd' in locals() and httpd:
httpd.shutdown()
httpd.server_close()
async with RunContext(model=MODEL) as run_ctx: # Or agent_id
await run_ctx.register_mcp_client(mcp_client=mcp_client_auth)
run_result = await client.beta.conversations.run_async(
run_ctx=run_ctx,
inputs="Tell me which projects do I have in my Linear workspace?",
)
print(f"Remote Auth MCP - Final Response: {run_result.output_as_text}")
# if __name__ == "__main__":
# asyncio.run(main_remote_auth_mcp())
Cela implique de configurer un serveur HTTP local pour intercepter la redirection OAuth, de guider l'utilisateur à travers la page d'autorisation du fournisseur, d'échanger le code reçu contre un jeton d'accès, puis de configurer le MCPClientSSE
avec ce jeton. Une fois authentifié, l'agent peut interagir avec le service MCP protégé. Le streaming suit à nouveau le modèle établi.
Conclusion : L'avenir est agentique et interconnecté
L'API Mistral Agents, en particulier lorsqu'elle est augmentée par le Model Context Protocol, offre une plateforme robuste et flexible pour la création d'applications d'IA de nouvelle génération. En permettant aux agents non seulement de raisonner et de communiquer, mais aussi d'interagir avec un vaste écosystème d'outils, de sources de données et de services, les développeurs peuvent créer des systèmes véritablement intelligents capables de s'attaquer à des problèmes complexes du monde réel. Que vous automatisiez des flux de travail complexes, que vous fournissiez une assistance profondément contextualisée ou que vous soyez pionnier de nouvelles formes de collaboration homme-IA, la combinaison de Mistral Agents et de MCP fournit la boîte à outils fondamentale pour cet avenir passionnant. Au fur et à mesure que la norme MCP gagnera en adoption, le potentiel de création d'agents d'IA interconnectés et très performants ne fera que croître.
Vous voulez une plateforme intégrée, tout-en-un, pour que votre équipe de développeurs travaille ensemble avec une productivité maximale ?
Apidog répond à toutes vos demandes et remplace Postman à un prix beaucoup plus abordable !
```