Tutoriel

Statut éditorial : En attente de relecture

Construire un agent de recherche web avec LangGraph

Orchestrer recherche, lecture, synthèse et contrôle des sources dans un graphe explicite avec état, limites et citations.

Classification du contenu

Types

  • Agents IA
Niveau
Avancé
Publié le
24 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
24 octobre 2026

Un agent de recherche fiable sépare planification, collecte et rédaction. LangGraph rend cette boucle explicite et permet de limiter le nombre de recherches, de conserver les sources et d’interrompre une exécution.

Installer et définir l’état

~~~bash pip install -U langgraph langchain-core ~~~

~~~python from typing import TypedDict

class ResearchState(TypedDict): question: str queries: list[str] sources: list[dict] answer: str iteration: int ~~~

Les résultats de recherche sont des données non fiables. Ils ne doivent jamais être interprétés comme des instructions système.

Créer les nœuds

~~~python def plan(state: ResearchState): return {'queries': build_queries(state['question']), 'iteration': 0}

def search(state: ResearchState): collected = [] for query in state['queries'][:3]: collected.extend(search_provider(query, limit=5)) return {'sources': deduplicate(collected), 'iteration': state['iteration'] + 1}

def write(state: ResearchState): approved = [s for s in state['sources'] if source_is_usable(s)] return {'answer': synthesize(state['question'], approved)} ~~~

Chaque source doit conserver titre, URL, date, éditeur et extrait utilisé. La synthèse doit citer les URL correspondant réellement aux affirmations.

Assembler le graphe

~~~python from langgraph.graph import StateGraph, START, END

graph = StateGraph(ResearchState) graph.add_node('plan', plan) graph.add_node('search', search) graph.add_node('write', write) graph.add_edge(START, 'plan') graph.add_edge('plan', 'search') graph.add_edge('search', 'write') graph.add_edge('write', END) app = graph.compile() ~~~

Commencez par ce flux déterministe. Ajoutez une boucle seulement si une fonction de contrôle peut prouver qu’il manque une information. Fixez toujours un maximum d’itérations et un budget d’appels.

Contrôler la qualité

Rejetez les pages sans auteur ou date lorsque ces éléments sont essentiels. Pour un sujet récent, comparez date de publication et date de l’événement. Demandez au rédacteur de distinguer fait sourcé, citation courte et inférence.

Tester

Remplacez le fournisseur de recherche par un faux renvoyant des résultats connus. Vérifiez déduplication, limite de requêtes, URLs citées et comportement quand aucune source n’est suffisante.

Production

Ajoutez persistance des checkpoints, timeout par outil, cache des pages, filtrage des domaines et observabilité des étapes. Une validation humaine reste adaptée avant publication ou pour une décision sensible.

FAQ

Pourquoi ne pas laisser l’agent boucler librement ?

Une boucle ouverte augmente coût et risque sans garantir la qualité. Le critère d’arrêt doit être mesurable.

Le moteur de recherche suffit-il comme source ?

Non. Utilisez ses résultats pour trouver les pages, puis vérifiez le contenu des sources primaires.

Sources utilisées