0Pricing
AI Agents · Leçon

Nœuds, arêtes et état

Définissez un état TypedDict, écrivez des fonctions de nœud qui le modifient et reliez-les par des arêtes orientées.

Nœuds, arêtes et état est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

L’objet d’état

Chaque agent LangGraph possède un état typé, généralement un TypedDict :

from typing import TypedDict
from typing_extensions import Annotated
import operator

class AgentState(TypedDict):
    messages: Annotated[list, operator.add]   # appends instead of replaces
    plan: str
    answer: str

Fonctionnement des mises à jour de l’état

Chaque nœud renvoie un dictionnaire partiel. LangGraph :

  1. Lit l’état actuel
  2. Appelle le nœud avec celui-ci
  3. Réintègre le dictionnaire partiel renvoyé

Pour les champs de type liste avec operator.add, les nouveaux éléments sont ajoutés au lieu de remplacer les anciens.

Defining a Node

def planner(state: AgentState) -> dict:
    prompt = f'User wants: {state["messages"][-1].content}'
    plan = llm.invoke(prompt).content
    return {'plan': plan}

Registering the Node

from langgraph.graph import StateGraph, END

graph = StateGraph(AgentState)
graph.add_node('planner', planner)

Définir les arêtes

Les arêtes statiques s’exécutent sans condition :

graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)

Arêtes conditionnelles

Pour effectuer un branchement, enregistrez une fonction qui choisit le nœud suivant :

def route(state: AgentState) -> str:
    if state['needs_research']:
        return 'researcher'
    return 'writer'

graph.add_conditional_edges(
    'planner',
    route,
    {'researcher': 'researcher', 'writer': 'writer'}
)

END est particulier

END est le nœud terminal. Toute arête vers END termine le graphe et renvoie l’état actuel.

Compiling the Graph

app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])

Diffuser les mises à jour de l’état

Observez les changements d’état en temps réel :

for event in app.stream({'messages': [...]}):
    print(event)
# Each event is the state diff from the just-completed node.

Fonctions de réduction

Pour les fusions d’état complexes, utilisez une fonction de réduction personnalisée :

def merge_facts(old, new):
    return {**old, **new}

class State(TypedDict):
    facts: Annotated[dict, merge_facts]

Sous-graphes

Un nœud peut lui-même être un autre graphe compilé — pratique pour les agents hiérarchiques :

subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)

Nœuds asynchrones

Les nœuds peuvent être des fonctions asynchrones :

async def fetch_node(state):
    data = await fetch_async(state['url'])
    return {'data': data}

result = await app.ainvoke({...})

Erreurs dans les nœuds

Si un nœud lève une exception, LangGraph propage l’erreur et s’arrête. Interceptez-la dans le nœud si vous souhaitez une gestion élégante :

def safe_search(state):
    try:
        return {'results': search(state['query'])}
    except Exception as e:
        return {'error': str(e), 'results': []}

Mises à jour de l’état

Que se passe-t-il lorsqu’un nœud renvoie {'plan': '...'} sous forme de dictionnaire ?

Récapitulatif

Définissez un état TypedDict, écrivez des fonctions qui renvoient des mises à jour partielles, ajoutez des nœuds et des arêtes, compilez, puis exécutez. Voilà LangGraph.

Questions Fréquemment Posées

La leçon « Nœuds, arêtes et état » est-elle gratuite ?

Oui — le texte complet de « Nœuds, arêtes et état » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Nœuds, arêtes et état » ?

Définissez un état TypedDict, écrivez des fonctions de nœud qui le modifient et reliez-les par des arêtes orientées. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer AI Agents ?

Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Nœuds, arêtes et état » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?

Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi les graphes surpassent les chaînes linéaires
  2. Nœuds, arêtes et état
  3. Routage conditionnel et embranchements
  4. Conserver l’état d’un graphe (points de contrôle)
← Retour à AI Agents