Module 6 sur 10, leçon 2 sur 5
Aller plus loin
Choisir un framework
Ce que vous achetez vraiment
La boucle est facile à écrire. Ce qui prend des mois, c’est tout ce qui l’entoure : jugez donc un framework là-dessus.
- État durable : reprendre après une panne ou une longue attente.
- Interruptions : attendre une personne, puis continuer.
- Traces : voir chaque étape d’une exécution ratée.
- Streaming : montrer l’avancement d’une longue tâche.
Si vous n’avez besoin de rien de tout ça, le SDK d’un fournisseur et une boucle suffisent, et vous aurez moins à déboguer.
Les reducers
Dans un graphe, les nœuds renvoient des mises à jour partielles. Si deux branches écrivent la même clé à la même étape, quelque chose doit trancher. LangGraph appelle cette fonction un reducer, et son absence explique bien des messages « perdus ».
const reducers = { messages: (old, next) => [...old, ...next] };
// Two branches finish at the same step:
// { messages: ['A'] } and { messages: ['B'] }
// Without a reducer, one overwrites the other.
// With it: ['A', 'B'].
Les checkpoints ont leurs règles
Un checkpointer sauvegarde l’état après chaque étape, sous un identifiant d’exécution (LangGraph l’appelle thread_id). Trois conséquences surprennent souvent :
- Un nœud repris repart de son début. Un effet de bord survenu avant la panne peut se produire deux fois : écrivez des nœuds idempotents.
- Un checkpointer en mémoire ne survit à aucun redémarrage. Il sert aux tests.
- Les états sauvegardés survivent à votre code. Si la forme de l’état change, les anciennes exécutions doivent encore se charger.
Tracez avant d’en avoir besoin
Une panne sur plusieurs étapes ne se lit pas dans la sortie finale. Une trace utile relie chaque exécution à ses appels au modèle, ses appels d’outils, leurs arguments, leurs résultats, les tokens et la durée. OpenTelemetry propose des conventions pour l’IA générative, ce qui garde vos données portables. Des outils comme LangSmith ou Langfuse offrent des vues toutes prêtes. Décidez tôt de ce qui ne doit pas être journalisé : les traces accumulent très facilement des données personnelles.
Gardez la sortie ouverte
Le framework doit entourer votre logique, pas s’y installer. Gardez les outils en fonctions simples, les prompts dans des fichiers, et les évaluations indépendantes de l’environnement d’exécution. Une migration consiste alors à refaire le câblage, pas le produit. L’exercice sur le graphe montre le peu qui est en jeu : un moteur fonctionnel tient en une vingtaine de lignes.