Nous avons comparé 4 frameworks d'agents open-source populaires sur 2 000 exécutions (5 tâches, 100 exécutions chacune par framework), en mesurant la latence de bout en bout, la consommation de jetons et les différences architecturales.
référentiel de cadres d'IA agentique
Nous avons examiné comment les cadres eux-mêmes influencent le comportement des agents et l'impact qui en résulte sur la latence et la consommation de jetons.
LangGraph est le framework le plus rapide avec les valeurs de latence les plus faibles sur l'ensemble des tâches, tandis que LangChain présente la latence et la consommation de jetons les plus élevées.
Sur 5 tâches et 2 000 exécutions, LangChain se distingue comme le framework le plus économe en jetons, tandis qu'AutoGen affiche la meilleure latence ; LangGraph et LangChain suivent de près. CrewAI présente le profil global le plus lourd.
Vous pouvez consulter notre méthodologie en détail ici.
Tâche 1 : Agrégation de base
Nous avons d'abord mesuré la surcharge de chaque framework en appelant simplement un seul outil et en renvoyant le résultat, sans effectuer de raisonnement complexe.
LangChain et LangGraph : pour les tâches simples, leurs performances sont presque aussi rapides que celles du code non-agent, les deux s'exécutant en moins de 5 secondes avec moins de 900 jetons d'invite. L'architecture à états finis de LangGraph n'introduit aucune latence perceptible par rapport à LangChain à ce niveau de simplicité ; la surcharge liée à la gestion d'état ne se manifeste qu'avec l'augmentation de la complexité des tâches.
AutoGen : Se situe légèrement au-dessus de LangChain et LangGraph en termes de latence et d'utilisation des jetons, reflétant le coût de base de sa boucle de conversation multi-agents, deux agents échangeant des messages même pour une tâche en une seule étape.
CrewAI : Même pour un simple appel d’outil, son fonctionnement présente ce que l’on pourrait appeler une « surcharge de gestion », consommant près de trois fois plus de jetons que LangChain et prenant presque trois fois plus de temps. Le processus de vérification en plusieurs étapes entre ses rôles de Planificateur et d’Analyste offre une approche rigoureuse mais gourmande en ressources, privilégiant l’exhaustivité à la rapidité. Ce coût est structurel : il apparaît quelle que soit la complexité de la tâche.
Tâche 2 : Analyse comparative des recettes (gestion étatique)
Dans la tâche 2, nous voulions voir la capacité des frameworks à conserver deux groupes de filtres différents en mémoire (persistance d'état) et à les combiner.
IA d'équipage
Notre analyse des journaux a révélé que CrewAI offre le plus haut niveau de transparence de l'infrastructure parmi les frameworks, mais au prix d'une consommation de ressources plus élevée.
Au lieu de renvoyer immédiatement les données récupérées, CrewAI valide ses processus de manière itérative grâce à un mécanisme d'auto-évaluation. Ce comportement exploratoire a entraîné l'atteinte de la limite configurée max_iter=10, bloquant certaines exécutions dans une boucle de réflexion continue sans produire de sortie JSON.
Ce comportement est dû au fait que CrewAI injecte des instructions complexes dans l'invite système, attribuant à chaque agent un rôle, un objectif et un contexte, tout en imposant une boucle Pensée → Action → Observation de type ReAct à chaque étape. Même pour des tâches simples, le LLM ne peut se dispenser de cette procédure et produit consciencieusement des monologues internes verbeux, ce qui s'aggrave encore dans les scénarios multi-agents.
CrewAI a consommé près de deux fois plus de jetons que les autres frameworks et a mis plus de trois fois plus de temps que LangChain, ce qui le rend mieux adapté aux transitions d'état complexes et à la prise de décision multifactorielle qu'aux tâches simples de récupération de données.
Chaîne de Lang
Le framework le plus rapide et le plus économique. Nos journaux d'activité montrent que LangChain effectue la tâche en 5 à 6 étapes sans détour : Chargement → Filtrage → Calcul → Filtrage → Calcul → Sortie. Grâce à sa gestion d'état très simple, la surcharge est quasi nulle et la latence est la plus faible de tous les frameworks.
AutoGen
Il a fourni des performances très équilibrées. Dans la tâche 2, il a quasiment égalé LangGraph en termes d'utilisation des jetons et de latence, démontrant que la surcharge de la boucle de conversation ne s'accumule pas de manière significative lorsque la chaîne de tâches reste linéaire.
Cependant, il ajoute parfois une étape de vérification supplémentaire pour confirmer les paramètres lors de l'appel d'outils, ce qui le rend légèrement plus lent que LangChain. En cas d'erreur lors d'un appel d'outil ou si les données renvoyées ne sont pas conformes aux attentes, il met immédiatement à jour son raisonnement à l'étape suivante et obtient le JSON correct. Grâce à sa gestion des sorties d'outils sous forme de flux conversationnel, il s'agit de l'un des frameworks les plus robustes face aux erreurs logiques.
LangGraph
Dans cette tâche, LangGraph s'est avéré être le framework le plus stable grâce à son architecture basée sur les graphes. Ses journaux d'exécution ont révélé une excellente conservation de l'état tout au long du processus. Le risque de contamination des données ou d'interférences entre segments est minimal. Sur l'ensemble des 100 exécutions, les résultats ont été obtenus avec un nombre d'étapes et une latence quasi identiques.
Tâche 3 : Analyse syntaxique par seuillage (discipline numérique)
Dans cette tâche, nous voulions voir avec quelle précision les cadres traduisent les conditions numériques en langage naturel, telles que « moins d'un an d'ancienneté » et « plus de 70 $ de frais mensuels », en paramètres d'outils précis comme tenure_max=12 et charges_min=70.0.
Le LLM sait déjà comment effectuer cette conversion ; ce que nous voulions vraiment tester, c’était si le framework pouvait protéger ces paramètres tout au long de ses propres mécanismes de nouvelle tentative, de son contexte de nouvelle invite et de ses cycles de gestion d’état.
LangChain et LangGraph
Les deux frameworks ont transmis directement les paramètres (tenure_max=12, charges_min=70) à l'outil, tels que générés par le LLM, sans modification ni nouvelle saisie. Cette efficacité se traduit par des résultats probants : les deux frameworks ont exécuté la tâche 3 en moins de 9 secondes avec moins de 1 800 jetons d'invite, soit le résultat le plus faible pour cette tâche.
Lorsque nous avons voulu vérifier si les seuils numériques étaient préservés sans que le cadre n'interfère, ces deux éléments ont répondu à nos attentes : quel que soit le paramètre généré, c'est celui qui a été exécuté.
AutoGen
Autogen garantit une exactitude numérique parfaite. Lors de certains essais, il a été observé que le framework ajoutait une étape de vérification avant de transmettre le paramètre généré par LLM à l'outil, ce qui représente une étape supplémentaire pour la préservation du paramètre. Avec 2 480 jetons et 8 secondes de latence, malgré cette étape supplémentaire, il a affiché une latence identique à celle de LangChain, confirmant ainsi que le surcoût lié à la vérification est réel mais faible. L'intégrité du paramètre a répondu à nos attentes : l'étape de confirmation n'a engendré qu'un coût marginal en jetons, sans impact significatif sur la latence.
IA d'équipage
Le comportement le plus remarquable a été observé chez CrewAI, qui a terminé la tâche 3 en 30 secondes avec 4 360 jetons, soit le meilleur score pour cette tâche. L’analyse des journaux a révélé deux types de défaillances distincts.
Dans certains cas, une valeur qui aurait dû être de 68,81 % a été renvoyée comme étant 0,6878 (ratio décimal). Cela indique que la sérialisation de la sortie du framework peut extraire la sortie du LLM de son contexte d'origine.
Les journaux montrent que le LLM a initialement généré les paramètres corrects : tenure_max=12 et charges_min=70. Cependant, lorsque CrewAI est entré dans une boucle « Échec d'analyse », le framework a incité le LLM à réexaminer les données. Dans ce contexte de nouvelle tentative, le LLM a modifié le seuil à tenure_max=14 et a complètement désactivé le filtre charges_min, générant un taux de désabonnement de 46,84 %, soit le taux de désabonnement de tous les clients ayant une ancienneté inférieure à 14. C'était précisément le scénario que nous souhaitions observer : le mécanisme de nouvelle tentative du framework peut corrompre un paramètre que le LLM avait déjà correctement calculé.
Tâche 4 : Résilience aux erreurs et capacité de pivotement
Dans cette tâche, nous souhaitions observer comment chaque framework gère les scénarios perturbateurs et analyser leur impact sur la latence et la consommation de jetons. L'outil génère successivement trois types d'erreurs (réseau, délai d'attente dépassé et limite de débit), mettant l'agent en difficulté. Les deux premières erreurs lui demandent de réessayer. Après ces deux tentatives, l'erreur de limite de débit suivante lui indique d'attendre 10 secondes. Une fois cette attente terminée et après plusieurs nouvelles tentatives, l'outil fonctionne à nouveau normalement.
LangGraph et Autogen
Ces deux frameworks ont trouvé des solutions alternatives de manière autonome face aux défaillances des outils dans cette tâche.
Lorsque l'outil a renvoyé un avertissement de limite de requêtes, au lieu de faire une pause, ces agents ont décidé d'abandonner complètement l'outil défaillant et de trouver une autre solution. Leur approche : « Puisque cet outil ne fonctionne pas, je vais filtrer chaque mode de paiement un par un, calculer le taux de désabonnement pour chacun séparément, puis combiner les résultats moi-même. »
Méthode : Au lieu d'accomplir la tâche avec un seul appel d'outil, ils l'ont décomposée en utilisant deux outils distincts, l'un pour le filtrage et l'autre pour le calcul, traitant chaque méthode de paiement (chèque électronique, chèque postal, etc.) individuellement.
Ces agents fonctionnent selon un raisonnement orienté vers un but plutôt que par dépendance au chemin emprunté. Si le chemin le plus court est indisponible, ils peuvent élaborer un plan d'exécution alternatif en quelques secondes.
LangGraph a atteint 15 010 jetons d'invite lors de la tâche 4, soit le nombre de jetons le plus élevé pour une seule tâche dans l'ensemble du test, grâce à sa machine à états qui accumule l'historique croissant de chaque appel manuel d'outil et le replace dans son contexte à chaque étape. AutoGen a suivi avec 10 750 jetons, un nombre légèrement inférieur grâce à sa gestion conversationnelle des résultats intermédiaires. Malgré cela, les deux programmes ont terminé leur exécution en environ 24 à 27 secondes, confirmant que le coût supplémentaire en jetons n'entraînait pas de latence significative, car le pivot lui-même était rapide.
IA d'équipage
Malgré avoir affiché la consommation de jetons la plus élevée lors des tâches précédentes, CrewAI a présenté la plus faible utilisation de jetons, mais les valeurs de latence les plus élevées dans cette tâche.
Pourquoi le jeton le plus bas ?
Contrairement à ses concurrents, CrewAI n'a pas eu recours à une solution de contournement manuelle en 10 à 15 étapes. Face aux erreurs, au lieu de réinjecter systématiquement l'historique complet et les données intermédiaires complexes dans le LLM à chaque étape, il a mis en place une boucle de raisonnement plus ciblée et modulaire. En évitant toute verbosité inutile, il est devenu le framework le plus rentable pour cette tâche.
Pourquoi une latence élevée ?
La structure de gestion de CrewAI interrompt et réévalue le plan lorsqu'elle rencontre une erreur. Lors de la réception de l'avertissement d'attente de 10 secondes, elle a passé plus de temps en phase de « planification stratégique ». De plus, au lieu de basculer vers un autre outil de filtrage, elle a systématiquement choisi d'attendre la récupération de l'outil principal ou de tenter une nouvelle opération avec l'outil stable, ce qui a prolongé la durée totale.
Chaîne de Lang
LangChain a connu sa transformation la plus significative lors de cette tâche, prouvant ainsi pourquoi la résilience dépend d'une configuration appropriée.
Lors de notre premier test, LangChain a planté à chaque tentative avec une erreur de connexion.
L'AgentExecutor par défaut de LangChain traite les exceptions Python brutes levées par un outil comme des erreurs fatales et interrompt le processus. Contrairement à ses concurrents, il n'adopte pas par défaut une approche consistant à considérer les erreurs comme des observations. L'agent n'étant jamais témoin de l'erreur, il est incapable d'en tirer des conclusions.
Nous avons encapsulé l'appel à l'outil dans le fichier langchain_agent.py à l'aide d'un bloc try-except. Cela a permis de convertir l'erreur en un message lisible que l'agent pouvait traiter.
Comportement après correction : Après l’application de la correction, nous avons constaté dans les journaux de LangChain qu’il présentait exactement le même raisonnement que LangGraph. Il a reçu 3 erreurs de l’outil, a immédiatement changé de stratégie et s’est rabattu sur l’utilisation de deux outils distincts, l’un pour le filtrage et l’autre pour le calcul, a traité chaque mode de paiement individuellement et a combiné les résultats.
LangChain est en réalité tout aussi performant et adaptable que LangGraph, mais la gestion des erreurs étant désactivée par défaut, il n'a pas pu le démontrer. Une fois correctement configuré, il a atteint le résultat escompté en utilisant la même approche de chemin alternatif.
Pourquoi ces différences sont-elles apparues ? (analyse de l’architecture du framework)
Si le comportement des agents dépendait uniquement du LLM (GPT-5.2), tous les frameworks auraient dû se comporter de manière similaire. Cependant, les différences manifestes observées dans ces ratios s'expliquent par les mécanismes de boucle interne propres à chaque framework :
1. LangGraph et AutoGen (pivot à 90 %) :
LangGraph fonctionne selon une architecture de machine à états, tandis qu'AutoGen repose sur un modèle conversationnel. Dans les deux systèmes, les erreurs sont traitées comme une boucle de rétroaction. Dans LangGraph, l'état qui reçoit l'erreur est transmis au nœud suivant ; dans AutoGen, l'agent proxy transmet l'erreur à l'assistant sous forme de message de chat. Ce mécanisme de relance constant incite l'agent à rechercher une solution. Confronté de manière répétée à la question « J'ai reçu une erreur, que dois-je faire ? », la probabilité qu'il opte pour une solution manuelle alternative atteint 90 %.
2. LangChain (65 % Pivot / 35 % Attente) :
LangChain fonctionne selon une architecture AgentExecutor séquentielle. Malgré la gestion des erreurs, sa boucle d'exécution présente une structure linéaire et vise principalement à produire une réponse finale. Si l'outil génère des erreurs pendant 3 à 4 étapes, LangChain préfère parfois attendre la réussite de la prochaine tentative ou l'obtention d'un résultat à partir du contexte existant, plutôt que d'adopter une stratégie alternative. Grâce à une gestion des états plus flexible que celle de LangGraph, le taux d'attente par rapport à la résolution directe est d'environ 35 %.
3. CrewAI (0 % de pivot) :
CrewAI fonctionne selon une architecture de processus de gestion. Ses agents sont définis par des rôles et des tâches. En cas d'erreur, son architecture interne déclenche généralement une logique d'autocorrection ou de nouvelle tentative. Cependant, un changement de stratégie radical, comme « abandonner tout le plan et effectuer un filtrage manuel en 5 étapes », est incompatible avec la structure de planification de CrewAI. Celle-ci privilégie la rigueur du principe « je dois corriger l'outil fourni ou utiliser l'alternative la plus proche » plutôt que d'abandonner purement et simplement son plan. Il s'agit fondamentalement d'une approche centrée sur le plan, par opposition à une approche centrée sur les objectifs.
Tâche 5 : Orchestration des données non structurées (routage des données non structurées)
Dans la tâche 5, nous avons observé le comportement des frameworks face aux colonnes JSON et de texte long (LongText) d'un fichier CSV. Les agents devaient d'abord identifier le type de données de ces colonnes, puis sélectionner les outils de traitement appropriés, soit séquentiellement, soit en parallèle.
Dans la réalité, la gestion des données non structurées exige qu'un agent aille au-delà des données tabulaires standard et travaille avec des objets JSON, des paragraphes de texte libre ou des objets imbriqués.
Pour qu'un framework puisse gérer correctement ce type de données, il doit exceller dans deux domaines :
1- Une intelligence de découverte qui comprend quel outil convient à quel type de données
2- un mécanisme d'orchestration qui coordonne plusieurs appels d'outils indépendants.
Nous avons conçu la tâche 5 spécifiquement pour mesurer ces deux capacités séparément.
AutoGen
AutoGen a réalisé une excellente performance dans cette tâche, terminant avec 8 170 jetons d'invite et une latence médiane de 47 secondes, le résultat le plus rapide et le plus efficace en jetons de la tâche 5.
La boucle de conversation au cœur de son architecture, la messagerie entre AssistantAgent et UserProxyAgent, est généralement perçue comme une structure source de verbosité. Cependant, dans la tâche 5, cette structure s'est révélée être un atout.
En analysant l'historique des conversations, LLM a constaté que les colonnes Metadata et SupportNotes étaient indépendantes. Il a ensuite envoyé une seule réponse TOOL CALLS listant quatre outils simultanément : inspect_column(Metadata), inspect_column(SupportNotes), parse_json_column(…) et summarize_text_column(…), exécutés en parallèle. Cela lui a permis de terminer la tâche en seulement trois itérations LLM, avec un minimum de jetons et d'étapes.
La raison technique de ce comportement est claire : le moteur d’exécution d’outils d’AutoGen traite atomiquement la liste `tool_calls` renvoyée par le LLM et collecte les résultats en une seule étape de conversation. La philosophie du framework, qui consiste à « gérer la conversation », permet naturellement l’ouverture simultanée de plusieurs canaux parallèles, ce que confirment directement les valeurs de jeton et de latence.
LangGraph
LangGraph a terminé avec 9 150 jetons d'invite et une médiane de 70 secondes, proche d'AutoGen en termes de jetons mais plus lent en termes de temps. Son architecture de machine à états a affiché à la fois sa plus grande force et sa plus grande faiblesse simultanément dans la tâche 5.
À chaque exécution, la boucle nœud llm → nœud outils → nœud llm accumule toutes les sorties d'outils précédentes dans l'état et les transmet au LLM. Cette structure garantit que l'agent n'oublie jamais rien, ce qui constitue généralement un avantage considérable.
Cependant, dans la tâche 5, cette force s'est retournée contre lui. LangGraph trouvait les outils adéquats et construisait le segment correct. Mais même après l'analyse, il a détecté des ambiguïtés dans l'état cumulatif, interprétant des étapes déjà terminées comme toujours en attente et déclenchant à plusieurs reprises des appels d'outils supplémentaires. Bien qu'il ait déjà récupéré les données nécessaires et soit sur le point de produire la bonne réponse, le signal « étape manquante » de la machine à états s'est activé et l'agent est entré dans des boucles inutiles. Par conséquent, le nombre d'appels d'outils par exécution a varié entre 6 et 16. La capacité de l'état à « ne rien oublier » a parfois fait apparaître des étapes terminées comme incomplètes, entraînant l'agent dans des cycles redondants et augmentant la latence de 23 secondes par rapport à AutoGen, malgré un nombre de jetons comparable.
IA d'équipage
Les performances de CrewAI à la tâche 5 ont présenté la plus grande variabilité sur l'ensemble du test. Lors de certaines exécutions, le processus s'est déroulé sans accroc, avec seulement 5 appels d'outils, sans interruption, comme un script. Dans ces cas, la structure de gestion des rôles et des tâches de CrewAI a fonctionné parfaitement : lorsque l'agent comprenait clairement son rôle, son comportement était prévisible et rigoureux.
Cependant, lors d'autres exécutions (par exemple, l'exécution 16 : 35 appels d'outils), un chaos total s'est produit. La cause première résidait dans le monologue interne (Pensée) généré par CrewAI à chaque étape. Après avoir correctement construit le segment avec le filtre approprié, le monologue interne de l'agent a commencé à se demander s'il convenait d'appliquer des filtres supplémentaires. Après avoir constaté le résultat, il a douté de la validité du segment actuel et s'est demandé si le précédent ne devait pas prévaloir. Ce doute l'a poussé à recharger les données depuis le début. Il a ensuite filtré à nouveau, est entré dans une nouvelle boucle de vérification, a douté une nouvelle fois, et a répété cette spirale huit fois.
Dans CrewAI, chaque Pensée produit une évaluation indépendante, et ces évaluations peuvent parfois invalider des étapes précédemment validées. Le réflexe de « vérification continue » du processus de gestion a, dans certains cas, poussé l'agent à remettre en question ses propres décisions pourtant correctes.
Chaîne de Lang
La structure AgentExecutor de LangChain est intrinsèquement séquentielle, et c'est lors de la tâche 5 que cette contrainte s'est avérée la plus flagrante. Avec 10 070 jetons d'invite et un temps médian de 86 secondes, il s'agissait du framework le plus lent de cette tâche, malgré un nombre de jetons inférieur au plus élevé.
À chaque étape, un seul appel d'outil est effectué, le résultat est reçu, puis l'exécution se poursuit. Cela signifie que quatre outils indépendants ont nécessité quatre itérations LLM distinctes, chacune avec sa propre période d'attente. La médiane de 47 secondes d'AutoGen, contre 86 secondes pour LangChain, illustre directement le coût d'une exécution séquentielle par rapport à une exécution parallèle.
Dans la tâche 5, le nombre d'outils utilisés par LangChain s'est généralement stabilisé entre 9 et 15. Ces deux groupes correspondent à deux stratégies typiques : lors de certaines exécutions, l'étape d'inspection a été ignorée au profit de l'analyse syntaxique et de la synthèse (9 outils), tandis que lors d'autres, chaque colonne a été inspectée avant le traitement (15 outils). Le caractère linéaire de l'exécuteur LangChain est alors apparu clairement : il ne présentait ni l'efficacité parallèle d'AutoGen, ni le chaos des monologues de CrewAI.
Architecture de gestion et de cadre des données non structurées
Les résultats de cette tâche révèlent que l'efficacité avec laquelle un framework gère les données non structurées (JSON, LongText) est directement liée à son mécanisme de boucle interne :
Les frameworks capables d'effectuer des appels d'outils en parallèle (AutoGen) peuvent traiter des colonnes de données indépendantes en une seule étape. Dans des scénarios concrets impliquant de grands objets JSON et de nombreuses colonnes de texte, cette différence se traduit par un gain considérable en termes de coûts et de rapidité.
Les frameworks avec boucles pilotées par état (LangGraph) excellent en matière de cohérence des données, mais comportent le risque de réévaluer des étapes déjà effectuées et accumulées dans l'historique.
Les frameworks basés sur le monologue (CrewAI) sont capables de comprendre en profondeur le type et la signification des données, mais cette profondeur se transforme parfois en un questionnement et un bouclage excessifs.
Les frameworks d'exécution linéaire (LangChain) traitent séparément différentes branches de données non structurées, produisant un résultat intermédiaire entre les deux mondes.
Croissance fulgurante des frameworks agents sur GitHub
Comparer les cadres d'IA agentielle
Les cadres d'IA agentique varient selon plusieurs dimensions clés, et comprendre ces différences est essentiel pour effectuer des comparaisons pertinentes.
Orchestration multi-agents
L'orchestration multi-agents coordonne plusieurs agents d'IA spécialisés pour gérer des flux de travail complexes qui dépassent les capacités d'un seul agent. Plutôt que de créer un agent monolithique, l'orchestration répartit le travail entre des agents aux rôles, outils et expertises distincts. Chaque framework propose différentes approches de coordination des agents.
LangGraph
LangGraph est un framework relativement connu et se distingue comme une option clé pour les développeurs créant des systèmes d'agents.
Coordination multi-agents explicite : vous pouvez modéliser plusieurs agents comme des nœuds individuels ou des groupes, chacun avec sa propre logique, sa mémoire et son rôle dans le système.
Il crée des flux de travail d'IA à travers les API et les outils. Il est donc parfaitement adapté aux pipelines RAG et personnalisés.
AutoGen
AutoGen permet à plusieurs agents de communiquer en échangeant des messages en boucle. Chaque agent peut répondre, réfléchir ou appeler des outils selon sa logique interne.
Il dispose d'une collaboration asynchrone entre agents, ce qui le rend particulièrement utile pour les scénarios de recherche et de prototypage où le comportement des agents nécessite une expérimentation ou un perfectionnement itératif.
IA d'équipage
CrewAI gère pour vous la majeure partie de la logique de bas niveau et assure l'orchestration multi-agents :
- S'intègre aux outils de surveillance pour le traçage et le débogage
- Contrôle d'exécution intégré via des flux avec logique conditionnelle, boucles et gestion d'état
- Prend en charge la coordination multi-agents hiérarchique (gestionnaire-employé) et structurée
OpenAI Essaim
Swarm est un framework multi-agents léger et expérimental pour le prototypage. Les agents fonctionnent séquentiellement par relais, se transférant les tâches tout en conservant un contexte partagé. Il utilise des routines de traitement du langage naturel et des outils Python pour des flux de travail flexibles.
Chaîne de Lang
LangChain est un framework permettant de créer des applications LLM mono-agent avec des outils RAG. Il fournit des composants modulaires, notamment des chaînes, des outils, de la mémoire et des fonctions de récupération pour les flux de travail de traitement de documents.
LangChain fonctionne principalement selon des modèles d'exécution à agent unique où un seul agent gère le flux de travail.
Définition de l'agent et de la fonction
LangGraph
LangGraph adopte une approche de conception d'agents basée sur les graphes , où chaque agent est représenté par un nœud gérant son propre état. Ces nœuds sont connectés par un graphe orienté, permettant la logique conditionnelle, la coordination multi-équipes et le contrôle hiérarchique. Ceci permet de construire et de visualiser des graphes multi-agents avec des nœuds superviseurs pour une orchestration évolutive.
LangGraph utilise des fonctions annotées et structurées qui associent des outils aux agents. Vous pouvez créer des nœuds, les connecter à différents superviseurs et visualiser les interactions entre les équipes. Imaginez que chaque membre d'une équipe dispose d'une fiche de poste détaillée. Cela facilite la création et le test d'agents collaborant efficacement.
AutoGen
AutoGen définit les agents comme des unités adaptatives capables d'un routage flexible et d'une communication asynchrone. Les agents interagissent entre eux (et éventuellement avec des humains) en échangeant des messages, ce qui permet la résolution collaborative de problèmes. À l'instar de LangGraph, AutoGen utilise des fonctions structurées et annotées .
IA d'équipage
CrewAI adopte une approche de conception basée sur les rôles . Chaque agent se voit attribuer un rôle (par exemple, chercheur, développeur) et un ensemble de compétences, de fonctions ou d'outils auxquels il peut accéder. La définition des fonctions s'effectue par le biais d'annotations structurées .
OpenAI Essaim
Swarm utilise un modèle basé sur des routines où les agents sont définis par des invites et des docstrings de fonction. Il ne dispose pas de modèles d'orchestration ou d'état formels, s'appuyant plutôt sur des flux de travail structurés manuellement. Le comportement des fonctions est déduit par le LLM à partir des docstrings (Swarm identifie le rôle d'une fonction en lisant sa description), ce qui rend cette configuration flexible mais moins précise.
Chaîne de Lang
LangChain utilise une architecture en chaîne où un seul agent orchestrateur gère les appels aux modèles de langage et à divers outils. Il définit les fonctions via des interfaces explicites telles que des boîtes à outils et des modèles d'invites.
Bien que principalement axé sur les flux de travail centralisés, LangChain prend en charge les extensions pour les configurations multi-agents, mais ne dispose pas de communication intégrée entre agents.
Mémoire
Capacités de mémoire :
- Avec état : Indique si le framework prend en charge la mémoire persistante entre les exécutions.
- Contextuel : S'il prend en charge la mémoire à court terme via l'historique des messages ou le passage du contexte.
Les fonctionnalités de mémoire constituent un élément clé de la construction de systèmes multi-agents capables de se souvenir du contexte et de s'adapter au fil du temps :
- Mémoire à court terme : conserve la trace des interactions récentes, permettant aux agents de gérer des conversations à plusieurs tours ou des flux de travail étape par étape.
- Mémoire à long terme : stocke des informations persistantes d’une session à l’autre, telles que les préférences de l’utilisateur ou l’historique des tâches.
- Mémoire d'entités : Permet de suivre et de mettre à jour les connaissances sur des objets, des personnes ou des concepts spécifiques mentionnés lors des interactions (par exemple, se souvenir du nom d'une entreprise ou de l'identifiant d'un projet mentionné précédemment).
LangGraph
LangGraph utilise deux types de mémoire : la mémoire interne , qui stocke les informations pendant une tâche ou une conversation unique, et la mémoire externe , qui sauvegarde les données entre les sessions. Les développeurs peuvent utiliser MemorySaver pour enregistrer le déroulement d'une tâche et le lier à un thread_id spécifique. Pour le stockage à long terme, LangGraph prend en charge des outils comme InMemoryStore ou d'autres bases de données. Ceci offre un contrôle précis sur la gestion et la conservation de la mémoire entre les exécutions.
AutoGen
AutoGen utilise un modèle de mémoire contextuelle . Chaque agent conserve un contexte à court terme via un objet context_variables, qui stocke l'historique des interactions. Il ne dispose pas de mémoire persistante intégrée.
IA d'équipage
IA d'équipage Il offre une gestion de la mémoire par couches prête à l'emploi. La mémoire à court terme est stockée dans un magasin vectoriel ChromaDB, les résultats des tâches récentes dans SQLite et la mémoire à long terme dans une table SQLite distincte (en fonction des descriptions des tâches). De plus, il prend en charge la mémoire des entités grâce à l'utilisation d'embeddings vectoriels. Cette configuration de mémoire est automatiquement mise en place lorsque l'option `memory=True` est activée.
OpenAI Essaim
Swarm est sans état et ne gère pas la mémoire nativement. Les développeurs peuvent transmettre manuellement la mémoire à court terme via context_variables et, s'ils le souhaitent, intégrer des outils externes ou des couches mémoire tierces (par exemple, mem0) pour stocker le contexte à plus long terme.
Chaîne de Lang
LangChain prend en charge la mémoire à court et à long terme grâce à des composants flexibles. La mémoire à court terme est généralement gérée par des tampons en mémoire qui conservent l'historique des conversations au sein d'une session. Pour la mémoire à long terme, LangChain s'intègre à des systèmes de stockage vectoriel ou des bases de données externes afin de stocker les représentations vectorielles et les données de récupération.
Les développeurs peuvent personnaliser les portées et les stratégies de mémoire à l'aide de classes de mémoire intégrées, ce qui permet une gestion efficace de la mémoire contextuelle et spécifique aux entités lors des interactions.
L'humain dans la boucle
LangGraph
LangGraph prend en charge les points d'arrêt personnalisés (interrupt_before) pour mettre le graphique en pause et attendre une entrée utilisateur en cours d'exécution.
AutoGen
AutoGen prend en charge nativement les agents humains via UserProxyAgent, permettant aux humains de revoir, d'approuver ou de modifier les étapes lors de la collaboration entre agents.
IA de l'équipage :
CrewA I active les retours d'information après chaque tâche en configurant human_input=True; l'agent fait une pause pour recueillir les entrées en langage naturel de l'utilisateur.
OpenAI Essaim
OpenAI Swarm n'offre pas de HITL intégré.
Chaîne de Lang
LangChain permet d'insérer des points d'arrêt personnalisés dans les chaînes ou les agents afin de suspendre l'exécution et de demander une intervention humaine. Ceci facilite la révision, le retour d'information ou l'intervention manuelle à des points précis du flux de travail.
Intégration du protocole MCP (Model Context Protocol) dans les frameworks d'IA agentielle
Les agents d'IA doivent interagir avec des outils externes tels que des bases de données, des API, des systèmes de fichiers et des applications métier. En l'absence de standard, chaque framework devait développer des intégrations personnalisées pour chaque outil, créant ainsi un écosystème fragmenté. MCP résout ce problème en fournissant un protocole universel permettant à tout agent de se connecter à n'importe quel outil via une interface unique.
Comment chaque framework s'intègre à MCP
LangGraph
LangGraph se connecte aux serveurs MCP via un adaptateur qui détecte automatiquement les outils disponibles et les convertit au format compatible avec LangChain. Les agents peuvent ensuite utiliser ces outils de manière transparente, en complément de leurs fonctionnalités natives.
AutoGen
AutoGen propose une intégration MCP native via son module d'extension. Les développeurs peuvent se connecter aux serveurs MCP et mettre tous leurs outils à la disposition des agents AutoGen en quelques lignes de code seulement.
IA d'équipage
Les agents CrewAI peuvent référencer directement les serveurs MCP dans leur configuration via des URL simples ou des paramètres structurés. Le framework gère automatiquement le cycle de vie de la connexion et la gestion des erreurs.
OpenAI Essaim
Swarm bénéficie de la prise en charge native de MCP par OpenAI au sein de son écosystème. Grâce à l'intégration de MCP dans ChatGPT et son SDK Agents, Swarm peut exploiter directement cette infrastructure.
Chaîne de Lang
LangChain offre des fonctionnalités d'appel d'outils MCP, où des fonctions Python servent d'interface avec les serveurs MCP. Cela permet d'intégrer des outils provenant de diverses sources dans des chaînes, des agents et d'autres composants LangChain sans avoir besoin de wrappers personnalisés.
Que font concrètement les frameworks d'IA agentielle ?
Les frameworks d'IA agentiques facilitent l'ingénierie des requêtes et la gestion des flux de données vers et depuis les LLM . Concrètement, ils permettent de structurer les requêtes afin que le LLM réponde de manière prévisible et d'acheminer les réponses vers l'outil, l'API ou le document approprié.
Si vous deviez tout créer vous-même, vous définiriez manuellement l'invite, extrairiez l'outil que le LLM souhaite utiliser et déclencheriez l'appel API correspondant. Les frameworks simplifient ce processus en :
- Orchestration des invites : Création, gestion et acheminement d'invites complexes vers les LLM
- Intégration d'outils : Permettre aux agents d'appeler des API externes, des bases de données, des fonctions de code, etc.
- Mémoire : Maintien de l'état entre les tours de parole ou les sessions (à court et à long terme)
- Intégration RAG : Permettre la récupération de connaissances à partir de sources externes
- Coordination multi-agents : structuration de la manière dont les agents collaborent ou délèguent des tâches
Cadres d'IA agentique : cas d'utilisation concrets
LangGraph – Planificateur de voyages multi-agents
Un projet de production construit avec LangGraph démontre un assistant de voyage multi-agents avec état qui extrait des données de vols et d'hôtels (en utilisant les API Google Flights & Hotels) et génère des recommandations de voyage. 4
CrewAI – Créateur de contenu agentique
Le référentiel d'exemples officiels de CrewAI comprend des flux tels que la planification de voyages , la stratégie marketing , l'analyse boursière et les assistants de recrutement , où des agents spécifiques à un rôle (par exemple, « Chercheur », « Rédacteur ») collaborent sur des tâches. 5
CrewAI transforme un brief de contenu de haut niveau en un article complet grâce à Groq.
Caractéristiques principales des cadres d'IA agentielle
Prise en charge des modèles :
- La plupart sont indépendants du modèle , prenant en charge plusieurs fournisseurs LLM (par exemple, OpenAI, Anthropic, modèles open-source).
- Cependant, les structures d'invite système varient selon le framework et peuvent être plus performantes avec certains modèles qu'avec d'autres.
- L'accès aux invites système et leur personnalisation sont souvent essentiels pour obtenir des résultats optimaux.
Outillage :
- Tous les frameworks prennent en charge l'utilisation d'outils , un élément essentiel pour permettre les actions des agents.
- Proposer des abstractions simples pour définir des outils personnalisés.
- La plupart prennent en charge le protocole Model-Context (MCP) , soit nativement, soit via des extensions communautaires.
Mémoire / État :
- Utilisez le suivi d'état pour maintenir la mémoire à court terme entre les étapes ou les appels LLM.
- Certaines permettent aux agents de conserver les interactions ou le contexte antérieurs au sein d'une session.
RAG (Génération augmentée par la récupération) :
- La plupart incluent des options de configuration faciles pour RAG , intégrant des bases de données vectorielles ou des systèmes de stockage de documents.
- Cela permet aux agents de faire référence à des connaissances externes pendant leur exécution.
Autres caractéristiques communes
- Prise en charge de l'exécution asynchrone , permettant des appels simultanés d'agents ou d'outils.
- Gestion intégrée des sorties structurées (par exemple, JSON).
- Prise en charge des sorties en flux continu où le modèle génère des résultats de manière incrémentale.
- Fonctionnalités d'observabilité de base pour la surveillance et le débogage des exécutions d'agents.
Méthodologie de référence
1. Structure de la tâche
Tâche 1 : Vérifie si un appel d’outil unique peut être effectué avec le paramètre correct. Ce scénario simple met en évidence la surcharge de l’infrastructure de base du framework.
Tâche 2 : Nécessite de conserver en mémoire les résultats de deux groupes de filtres distincts et de les combiner en une seule sortie. La gestion d’état et la coordination multi-segments sont testées.
Tâche 3 : Évalue si les conditions numériques en langage naturel sont traduites en paramètres d’outil sans distorsion. Le véritable test consiste à vérifier si les mécanismes de nouvelle tentative et de nouvelle saisie du système permettent de préserver ces paramètres.
Tâche 4 : Un outil génère successivement des erreurs de réseau, de délai d’attente et de limitation de débit. On mesure si le système modifie sa stratégie face à ces erreurs.
Tâche 5 : L’agent doit d’abord identifier les colonnes JSON et LongText, puis appeler les outils appropriés avec les paramètres de portée adéquats. Le comportement du framework (exécution parallèle ou séquentielle des outils indépendants) est observé.
2. Configuration
Tous les frameworks utilisaient le même modèle LLM (openai/gpt-5.2) et la même valeur de température (0,1). Pour toutes les tâches, chaque agent disposait des mêmes outils et des mêmes instructions. Chaque framework était configuré selon sa structure native : LangChain avec AgentExecutor, LangGraph avec StateGraph, AutoGen avec AssistantAgent et UserProxyAgent, et CrewAI avec Agent, Task et Crew.
L'ensemble de données IBM Telco Customer Churn (7 032 clients) a été utilisé. L'état de l'outil a été réinitialisé avant chaque exécution. Cent exécutions indépendantes ont été réalisées pour chaque combinaison de framework et de tâche.
Les limites maximales d'itération ont été fixées en fonction de la complexité de la tâche : 10 pour les tâches 1, 2 et 3 ; 20 pour la tâche 4 en raison de la boucle d'outils instable ; et 20 pour la tâche 5 en raison de la chaîne de découverte en 4 étapes.
Soyez le premier à commenter
Votre adresse courriel ne sera pas publiée. Tous les champs sont obligatoires.