Dans le cours : LangChain et LangGraph : Niveau avancé

Analyser le graphe d'un agent ReAct

Dans le cours : LangChain et LangGraph : Niveau avancé

Analyser le graphe d'un agent ReAct

Nous allons donc exécuter notre premier petit programme où nous avons défini un agent de type React. Pour l'instant, nous avons fait des choses vraiment très élémentaires, puisque nous avons créé juste un agent en nous basant sur un graphe prédéfini, c'est-à-dire sur un schéma d'exécution prédéfini, et qui est donc de type React. Nous avons pas défini nous-mêmes le schéma d'exécution ou le graphe d'exécution de cet agent. Nous allons utiliser ici un graphe prédéfini, et qui est donc de type React. Alors, qu'est-ce que je vais faire après, ici ? J'applique la méthode get_graph sur mon agent, donc ici, agent.get_graph me permet de récupérer le graphe d'exécution associé à mon agent. Puis, grâce à la méthode draw ici, je vais récupérer les données associées à l'image qui représente ce graphe. L'idée, c'est d'afficher cette image pour que nous puissions visualiser la forme du graphe d'un agent React. Alors, on va exécuter ce programme. Bien sûr, pour pouvoir utiliser ici la méthode Open avec la classe image, ici, j'ai importé la bibliothèque Pillow, et j'ai surtout importé la classe image de la bibliothèque Pillow. Donc, il faut l'installer, et pour cela donc, il faut faire pip install pillow. Donc en faisant ça, vous allez installer cette bibliothèque et vous allez pouvoir récupérer donc l'image qui représente le graphe de notre agent. Donc ici, je vais exécuter ce programme Python, et nous allons pouvoir visualiser le graphe associé à notre agent. Le voici. Alors, qu'est-ce que nous remarquons ? On remarque qu'il y a quatre nœuds. Ici, on a deux nœuds particuliers, c'est le nœud start et le nœud end. Comme leur nom l'indique, en fait, ce graphe, quand il va s'exécuter, le nœud start, ça va être le début de l'exécution, et en fait, ce nœud, il va juste injecter les données s'il y a des données à injecter à ce nœud qui est ici, et qui s'appelle agent. Et en fait, ce nœud, c'est lui le nœud qui va être considéré comme le nœud d'entrée de ce graphe. Donc en fait, l'exécution va réellement commencer au niveau de ce nœud. Et ce nœud, il va recevoir l'entrée à partir de start. Donc l'entrée, ça peut être par exemple le prompt de l'utilisateur. Donc en fait, ce nœud va s'exécuter puisqu'il va recevoir une entrée grâce à cette arête qui est ici, donc il va recevoir une entrée, et du coup, LangGraph, il va activer ce nœud, et il va lui demander de s'exécuter. Ce nœud va s'exécuter, et comme on le voit, en fait, il a deux sorties. Donc, il a une sortie par ici et une sortie par là, et on voit que les flèches, elles sont pointillées. Pourquoi ? Parce qu'en fait, le nœud agent, il a une arête conditionnelle entre lui et les deux nœuds qui sont ici, le nœud end, donc end, c'est vraiment le nœud, quand l'exécution de ce graphe arrive au niveau de ce nœud, l'exécution du graphe va s'arrêter, c'est-à-dire l'exécution de cet agent s'est terminée. Donc en fait, le nœud agent, il a une arête conditionnelle qui est représentée par ces deux arêtes ici. Pourquoi conditionnelle ? Parce que tout simplement, lorsque l'agent ici termine son exécution, lorsqu'il considère que sa tâche est terminée, il va indiquer que sa tâche est terminée et LangGraph en fait, il va comprendre que cet agent n'envoie plus de données vers le nœud tools, et donc en fait, l'exécution du graphe va prendre plutôt une entrée vers l'exécution de cet agent, va déposer de l'information sur cette arête-là qui va le mener vers end. Nous allons voir plus tard le flux d'exécution d'un graphe avec LangGraph, le graphe nous allons voir vraiment les détails, comment s'exécute un graphe dans LangGraph. Mais pour l'instant, il faut juste comprendre qu'un agent de type React est composé de cette manière, et on a donc en résumé un nœud qui s'appelle agent qui, lui, utilise un LLM pour raisonner. Et puis en fait, s'il a besoin d'un tool, si il a besoin d'exécuter une fonction qui est dans la trousse à outils associée au modèle de ce nœud, il va dire moi, j'ai besoin d'exécuter telle ou telle autre fonction, et donc, il va appeler ici ce nœud, et ce nœud, c'est le nœud où les tools vont être exécutés, et ce nœud, une fois qu'il a exécuté une ou plusieurs fonctions, il va renvoyer les résultats à ce nœud, et ainsi de suite, donc l'exécution peut boucler ici autant de fois que nécessaire. Bien sûr, on va voir que le nombre de fois où les nœuds sont exécutés est limité dans LangGraph, il y a un paramètre qui limite le nombre d'étapes qui vont être réutilisées pendant l'exécution d'un seul graphe, et donc ici, on voit que ce nœud peut boucler avec ce nœud, et puis à un moment donné, il va aller vers le nœud end. C'est le modèle de fonctionnement des agents React. Plus tard dans cette formation, dans la prochaine section, quand nous allons définir nous-mêmes nos graphes, on va voir que déjà, on peut définir la forme du graphe que nous souhaitons développer pour notre agent, et surtout, nous allons voir en détail comment fonctionne l'exécution d'un graphe.

Table des matières