Outil web_search : recherche internet en temps réel
Mis à jour le 28 juillet 2026
Les quatre outils intégrés de Mistral
Cette leçon ouvre la partie consacrée aux outils built-in. Avant de plonger dans le détail du premier d’entre eux, prenez une minute pour situer les quatre outils disponibles dans l’API Agents et les besoins auxquels ils répondent.
| Outil | Type | Description | Cas d'usage |
|---|---|---|---|
| Web Search | web_search | Recherche internet en temps réel | Actualités, veille, fact-checking |
| Code Interpreter | code_interpreter | Exécution de code Python sandboxé | Calculs, data analysis, graphiques |
| Image Generation | image_generation | Création d'images à partir de texte | Illustrations, maquettes, créatif |
| Document Library | document_library | RAG sur documents uploadés | QnA sur fichiers, extraction, résumé |
Ces outils s’exécutent dans l’environnement cloud de Mistral — aucune infrastructure à gérer de votre côté. C’est une différence de nature avec le function calling classique, où l’exécution vous incombe : ici, vous déclarez une capacité, et le fournisseur se charge du sandbox, des dépendances et de la mise à l’échelle.
Web Search en détail
L’outil web_search permet à votre agent de chercher des informations sur Internet en temps réel. C’est l’outil le plus utilisé car il résout le problème fondamental des LLM : le décalage temporel avec la réalité. Un modèle ne sait rien de ce qui s’est produit après son entraînement, et il ne sait pas non plus qu’il l’ignore — d’où des réponses assurées sur un état du monde dépassé.
La configuration d’un agent équipé de cet outil tient en quelques lignes.
from mistralai import Mistral
import os
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
agent = client.beta.agents.create(
model="mistral-medium-latest",
name="Agent Web Search",
instructions="Vous effectuez des recherches web pour répondre aux questions. Citez toujours vos sources.",
tools=[{"type": "web_search"}],
completion_args={"temperature": 0.3, "top_p": 0.95}
)
Lancer une recherche
Vous interrogez cet agent comme n’importe quel autre : la décision de chercher lui appartient.
response = client.beta.conversations.start(
agent_id=agent.id,
inputs="Qui a remporté la dernière Coupe d'Europe de football ?"
)
Derrière cet appel unique se cache tout un enchaînement. L’agent analyse d’abord la question pour déterminer si ses propres connaissances suffisent — ici, le mot « dernière » suppose une information datée, donc non. Il formule ensuite une requête de recherche optimisée, souvent différente de votre phrase, débarrassée de ses tournures conversationnelles. Il exécute la recherche, puis synthétise les résultats obtenus en y attachant des citations. Vous ne pilotez aucune de ces étapes, mais vous les retrouvez toutes dans la réponse.
Anatomie de la réponse
La réponse contient plusieurs entries séquentielles, qu’il faut parcourir dans l’ordre.
for entry in response.outputs:
print(f"--- {entry.type} ---")
if entry.type == "tool.execution":
# Détails de la recherche effectuée
print(f"Outil : {entry.tool_name}")
elif entry.type == "message.output":
# Réponse avec citations
for chunk in entry.content:
if chunk.type == "text":
print(chunk.text)
elif chunk.type == "tool_reference":
print(f"[Source] {chunk.title} — {chunk.url}")
Vous y lirez d’abord une entrée tool.execution, qui porte les métadonnées de l’opération, notamment la requête réellement envoyée au moteur de recherche : c’est l’endroit à regarder quand une réponse vous paraît hors sujet, car vous y verrez souvent que la reformulation a dérivé. L’entrée message.output porte ensuite la réponse synthétisée, découpée en chunks text et tool_reference — d’où la boucle imbriquée du code ci-dessus.
Utiliser en mode direct (sans agent)
L’outil fonctionne aussi sans agent enregistré, ce qui est commode pour un essai rapide.
response = client.beta.conversations.start(
model="mistral-large-latest",
inputs=[{"role": "user", "content": "Dernières actualités sur Mistral AI"}],
tools=[{"type": "web_search"}]
)
Les réflexes qui font la différence
Formulez d’abord des questions précises. L’agent transforme votre question en requête de recherche : « parlez-moi de l’IA » produira des résultats génériques, tandis que « quelles sont les régulations européennes sur l’IA adoptées en 2026 ? » cible immédiatement des pages exploitables. La règle vaut aussi pour les questions que vos utilisateurs formulent : si votre interface laisse passer des demandes vagues, prévoyez dans vos instructions une étape de reformulation ou de question de clarification.
Contrôlez ensuite la température. Pour les tâches factuelles, une valeur basse — entre 0.2 et 0.4 — réduit les hallucinations lors de la synthèse des résultats. La recherche fournit la matière première, mais c’est toujours le modèle qui rédige, et rien ne l’empêche de combler un vide s’il dispose de trop de liberté.
Vérifiez enfin les sources. Les citations sont automatiques, mais leur pertinence varie : un forum et un texte officiel se ressemblent dans une liste de références. Dans un contexte critique, ouvrez les URL retournées avant de reprendre l’information à votre compte — et exposez-les à vos utilisateurs pour qu’ils puissent faire de même.
Points clés à retenir
web_searchdonne à l’agent un accès en temps réel à Internet- Les réponses incluent des citations automatiques (titre + URL)
web_search_premiumajoute des sources de news vérifiées- L’outil fonctionne avec ou sans agent (mode direct possible)
- Température basse recommandée pour les tâches factuelles