Avancé
🧠 Fondamentaux
40 XP
0 personnes ont réussi
Agent LangGraph avec historique
Dans un vrai agent, on veut souvent accumuler des informations au fil des étapes : un historique de messages, une liste de documents trouves, des logs d'actions. LangGraph gere ca avec les Annotated types et l'operateur add.
Quand tu declares un champ du State avec Annotated[list, operator.add], LangGraph ne remplace plus la valeur mais AJOUTE les nouveaux éléments a la liste existante.
from typing import TypedDict, Annotated import operator
class State(TypedDict): messages: Annotated[list, operator.add] count: int
def noeud(state): return { "messages": ["nouveau message"], # s'ajoute a la liste "count": state["count"] + 1, # remplace la valeur }
C'est tres utile pour tracer ce que fait l'agent et garder un historique de conversation.
Écris une fonction build_rag_agent() qui crée un graphe avec :
State : - query : str (la question de l'utilisateur) - logs : Annotated[list, operator.add] (l'historique des actions) - documents : Annotated[list, operator.add] (les documents trouves) - answer : str (la réponse finale)
Noeuds : - "reformuler" : ajoute au log "Requête reformulee" et ne change rien d'autre - "chercher" : ajoute au log "Recherche effectuee" et ajoute 2 documents fictifs : "Doc pertinent 1" et "Doc pertinent 2" - "repondre" : ajoute au log "Réponse générée" et met dans answer le texte "Réponse basee sur X documents" ou X est le nombre de documents