Aller au contenu

Recherche web

En plus des bases de connaissance, le modèle peut disposer d’outils web : il décide lui-même de chercher sur le web et de lire des pages, enchaîne plusieurs appels si besoin, puis répond — exactement comme le mode agentique du RAG.

Activez-les avec le paramètre tools_enabled :

Fenêtre de terminal
curl https://api.miraca.fr/v1/chat/completions \
-H "Authorization: Bearer $MIRACA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-large",
"messages": [{ "role": "user", "content": "Quelle est la dernière version stable de Next.js ? Cite une source." }],
"tools_enabled": ["web_search", "web_fetch"],
"tools_max_steps": 4
}'
ParamètreTypeDescription
tools_enabledstring[]Outils à activer : "web_search" (recherche) et/ou "web_fetch" (lecture de page). Vide ou absent = aucun outil web.
tools_max_stepsnumber(optionnel, défaut 8, max 99) Nombre maximum de tours d’outils autorisés (borne le coût).
miraca_planboolean(optionnel, défaut false) Checklist agentique — commun à tous les outils (web, KB, connecteurs, code). Si true, le modèle planifie ses étapes au 1ᵉʳ tour, coche sa liste au fil de l’eau et la revoit à chaque tour : il oublie moins d’étapes sur une tâche longue. Ajoute un tour de planification (à réserver aux requêtes à plusieurs étapes).
  • web_search — recherche web (type moteur de recherche). Le modèle fournit une requête (query) et reçoit une liste de résultats (titre, url, extrait). Option : top_k (1–10).

    Pas de filtre de fraîcheur : l’index européen n’en propose pas, et nous préférons ne pas exposer un paramètre qui serait ignoré. Pour restreindre à une période, écrivez-la dans la requête (« … juillet 2026 »), ou lisez directement la page d’actualité de la source avec web_fetch.

    Opérateur site: — il fonctionne sur un domaine, jamais sur un chemin : site:exemple.com annonce modèle renvoie des résultats, site:exemple.com/actualites annonce modèle n’en renvoie aucun, même avec des mots-clés. La plateforme corrige automatiquement cette forme (le chemin devient des mots-clés : site:exemple.com/a/bsite:exemple.com a b) et le signale dans le résultat de l’outil, pour que l’agent n’interprète pas une requête morte comme une absence d’actualité. Quand vous connaissez déjà l’URL d’une page, web_fetch reste plus direct et plus fiable qu’une recherche.

    Opérateurs de date (after:, before:, daterange:) — ils n’existent pas. L’index ne les rejette pas : il les traite comme des mots ordinaires et renvoie des résultats non filtrés, ce qui est plus trompeur qu’une erreur. Ils sont donc retirés de la requête, et le résultat de l’outil précise qu’aucun filtre de date n’a été appliqué.

  • web_fetch — lit le contenu texte d’une page (URL http/https) trouvée via web_search. Lecture statique (pas d’exécution JavaScript) ; les pages privées/locales sont bloquées.

Une page web peut peser des dizaines de milliers de caractères. Tout ce que l’agent charge reste dans son contexte jusqu’à la fin de sa réflexion : une page entière chargée au deuxième tour est relue à chaque tour suivant, ce qui ralentit la réponse et dilue la question.

web_fetch renvoie donc, par défaut, une portion d’une page longue (environ 10 000 caractères), accompagnée de ce qu’il faut pour aller plus loin :

Champ renvoyéSens
total_charsTaille réelle de la page, même si elle n’est pas montrée en entier.
next_offsetPosition de reprise, ou null si la fin est atteinte.
modefull (page entière), excerpts (passages ciblés) ou window (lecture séquentielle).

L’agent pilote lui-même sa lecture avec trois paramètres :

  • query — ce qu’il cherche dans la page. Il reçoit alors les passages pertinents plutôt que le début, même si l’information se trouve en bas de page. C’est le mode à privilégier.
  • offset — reprend la lecture où elle s’est arrêtée (le next_offset précédent).
  • full: true — force la page entière, dans la limite de 50 000 caractères.

Aucun réglage n’est nécessaire de votre côté : le comportement est automatique, et les consignes données au modèle l’orientent vers query. Une page courte est toujours renvoyée en entier, sans découpage.

tools_enabled et knowledge_base_mode: "agentic" coexistent : dans la même réflexion, l’agent peut interroger vos bases et le web, et choisir lui-même quel outil utiliser pour quelle sous-question.

Fenêtre de terminal
curl https://api.miraca.fr/v1/chat/completions \
-H "Authorization: Bearer $MIRACA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "mistral-large",
"messages": [{ "role": "user", "content": "Combien de dossiers en alerte dans notre base, et une actu récente sur notre secteur ?" }],
"knowledge_base": "suivi-clients",
"knowledge_base_mode": "agentic",
"tools_enabled": ["web_search", "web_fetch"]
}'
  • Non-streaming : comme le mode agentique, la réponse arrive en une fois (stream: true est ignoré). Idéal pour les automatisations (Make/n8n).

  • Coût : deux composantes. (1) Les tokens des appels modèle (un par tour + la réponse) → tools_max_steps borne le nombre de tours. (2) Un forfait de 1,25 € pour 1 000 recherches (web_search) exécutées, soit 0,00125 € l’unité ; web_fetch (lecture de page) est inclus, sans supplément. Le forfait apparaît dans le coût de la requête au playground et est décompté de vos crédits comme le reste. Une recherche qui échoue n’est pas facturée.

  • Réflexion : les appels d’outils de l’agent sont renvoyés dans miraca_steps (outil, requête, et le tour qui les a demandés) et les tours de modèle dans miraca_rounds (contexte, cache, durée, coût, empreinte carbone). Le portail les affiche ensemble, dans l’ordre réel. Les URL sources sont citées directement dans la réponse.

  • Souveraineté : la recherche est servie par Staan, l’API de recherche de European Search Perspective (coentreprise Qwant et Ecosia). L’index est européen, les données restent sous juridiction UE, dans des centres de données UE, hors portée du CLOUD Act américain. Le badge cloud du modèle s’applique comme d’habitude si vous routez vers un modèle cloud.

    Une recherche web sort nécessairement de notre infrastructure : la requête est transmise au moteur qui détient l’index. Ce qui change avec Staan, c’est chez qui elle va — un acteur européen sous contrat, nommable dans votre registre de sous-traitants.

  • Sécurité : le contenu web est traité comme une donnée, jamais comme une instruction — les éventuelles consignes cachées dans une page ne sont pas exécutées.

  • Couverture réelle : dès qu’un outil web a servi, l’agent reçoit à chaque tour la liste des pages qu’il a effectivement ouvertes, avec la consigne de ne présenter comme « consultée » ou « vérifiée » aucune source absente de cette liste. Un extrait de résultat de recherche n’est pas une page consultée. Sans ce rappel, un agent chargé d’une veille reconstruit sa couverture de mémoire et affirme avoir vérifié des sources qu’il n’a jamais ouvertes.