Aller au contenu principal

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_search donne à l’agent un accès en temps réel à Internet
  • Les réponses incluent des citations automatiques (titre + URL)
  • web_search_premium ajoute 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