Concepts du framework d'agent

Cette page présente une vue d'ensemble conceptuelle du framework d'agent, en expliquant les principaux éléments de base pour développer des agents efficaces.

Qu'est-ce qu'un agent ?

Un agent d'IA générative est comme un programme informatique intelligent qui agit comme un assistant indépendant. Il reçoit un objectif, peut comprendre le monde qui l'entoure (via des données ou des informations) et peut utiliser divers outils pour atteindre cet objectif sans surveillance humaine constante. Il peut même planifier ses prochaines étapes pour se rapprocher de son objectif.

Techniquement, un agent d'IA générative est une abstraction logicielle qui poursuit de manière autonome un objectif défini en observant son environnement, en réfléchissant au meilleur plan d'action et en exécutant des actions à l'aide des outils disponibles. Il fonctionne indépendamment des instructions humaines directes pour chaque étape et peut déterminer de manière proactive les actions ultérieures pour atteindre son objectif ultime. Cela est rendu possible grâce aux modèles d'IA générative, qui alimentent les capacités de raisonnement et de prise de décision de l'agent.

Que ne sont pas les agents ?

Voici les écueils courants qui peuvent sembler être des agents, mais qui ne le sont pas:

Chatbot "Si-Alors" codé en dur (anti-modèle) :

Un chatbot créé avec un LLM dans lequel vous prédéfinissez méticuleusement chaque entrée utilisateur et réponse LLM possible. Même si vous utilisez l'appel de fonction, si la logique est entièrement codée en dur, il ne s'agit pas d'un agent. Il s'agit d'un arbre de décision sophistiqué, et non d'un système de raisonnement.

Exemple: Si l'utilisateur dit "réserver un vol", appelez la fonction book_flight(). Il ne s'agit pas d'un agent, mais d'un système basé sur des règles.

Excès de dépendance à l'invite de réaction (anti-modèle potentiel):

Les requêtes ReAct (Reason + Act) sont une technique qui consiste à structurer des requêtes pour encourager le LLM à réfléchir par étapes, puis à agir. Cela se rapproche du comportement d'un agent, mais cela peut devenir un anti-modèle si: vous, le développeur, créez toujours manuellement les requêtes ReAct pour chaque scénario possible. L'agent doit pouvoir générer son propre raisonnement de type ReAct, et non pas seulement suivre des modèles prédéfinis. La partie agissante est limitée à des appels de fonction simples, et il n'y a pas de planification ni d'adaptation de niveau supérieur.

Chaîne de pensée sans action (antimodèle) :

L'utilisation d'invites CoT pour demander au LLM d'expliquer son raisonnement est utile, mais il ne s'agit pas d'un agent s'il n'agit pas sur ce raisonnement. Il ne s'agit que d'un LLM plus transparent, et non d'une entité autonome.

Agents par rapport aux LLM

Requête unique :

Demander à LLM de rédiger un résumé de l'histoire de l'Empire romain Il s'agit d'une seule interaction. Gemini traite la requête et génère une réponse. Il n'y a pas de mémoire des interactions passées, pas d'objectif à long terme et aucune interaction avec des outils externes. Il s'agit d'un processus purement entrée-sortie.

Chaîne de requêtes:

Vous pouvez ensuite poursuivre en disant : "Maintenant, listez les principales causes du déclin de l'Empire." Il s'agit d'une chaîne d'invites. C'est vous, l'humain, qui fournissez le comportement d'agent en guidant la conversation et en décomposant la tâche. Gemini ne répond toujours qu'à chaque requête individuellement, sans avoir une compréhension plus large de l'objectif global (sauf si vous le précisez explicitement à plusieurs reprises). Vous êtes l'agent, et non Gemini.

Agent :

Un agent utilisant un LLM serait fondamentalement différent.

Imaginez un "agent de recherche sur l'histoire romaine" dont l'objectif est le suivant:

"Rédigez un rapport complet sur l'Empire romain, y compris son histoire, ses principales figures, son impact culturel et les raisons de son déclin. Le rapport doit être mis à jour chaque semaine avec de nouvelles informations provenant de sources scientifiques."

Différences principales:

  • Objectif persistant: l'agent a un objectif continu et à long terme, et non une tâche ponctuelle.
  • Planification: l'agent peut la décomposer comme suit :
    • Recherches initiales à l'aide de Gemini (synthétiser l'historique, identifier les chiffres clés)
    • Recherche dans des bases de données académiques (à l'aide d'un outil distinct)
    • Synthétiser les informations provenant de plusieurs sources
    • Génération du rapport.
    • Planifier une tâche hebdomadaire pour répéter les étapes 2 à 4.
  • Utilisation d'outils: l'agent utilise activement des outils en dehors de Gemini (par exemple, une API de recherche, une base de données).
  • Autonomie: l'agent fonctionne de manière indépendante, en prenant des décisions sur les informations à collecter et la manière de les présenter.
  • Mémoire: l'agent conserve une mémoire continue (peut-être dans une base de données) pour organiser les résultats et améliorer ses invites de lui-même.

Le point crucial est que dans les scénarios d'invite unique/en chaîne, vous êtes l'orchestrateur. Dans le scénario de l'agent, l'agent lui-même est l'orchestrateur, qui utilise Gemini comme l'un de ses outils.

Différencier les charges de travail des agents des charges de travail LLM typiques

La différence la plus cruciale entre les agents et les charges de travail LLM typiques est le comportement autonome et axé sur les objectifs, avec un affinement et une planification itératifs. Posez-vous les questions suivantes:

  • Objectif persistant
    • Le système a-t-il un objectif à long terme clairement défini vers lequel il s'efforce d'aller, au-delà de la réponse à des requêtes individuelles ?
  • Action autonome
    • Le système peut-il prendre des mesures (utiliser des outils, prendre des décisions) sans instructions explicites et détaillées d'un humain pour chaque action ?
  • Planification et raisonnement
    • Le système présente-t-il des preuves de planification (décomposer un objectif complexe en étapes plus petites) et de raisonnement (prendre des décisions en fonction de sa compréhension de la situation) ?
  • Amélioration itérée
    • Le système apprend-il et améliore-t-il son approche ? Il ne s'agit pas nécessairement de machine learning. Il peut s'agir d'une amélioration auto-suggérée en fonction des observations.
  • État
    • Le système maintient-il et utilise-t-il des informations d'état pour continuer à progresser vers son objectif ?

Si la réponse à toutes ces questions est "oui", vous travaillez probablement avec un agent d'IA. Si l'une des réponses est "non", vous disposez probablement d'une application LLM plus sophistiquée, mais pas d'un agent à part entière. C'est la combinaison de ces facteurs, et non un seul d'entre eux, qui définit les agents. Un agent ne se contente pas d'effectuer des tâches. Il doit décider de ce qu'il doit faire et pourquoi, et adapter son approche pour atteindre un objectif défini.

Composants essentiels des agents:

Schéma de l'architecture des composants d'exécution de l'agent 

  • Modèle: le modèle de langage (LM) sert de décideur central, en utilisant des frameworks logiques et de raisonnement basés sur les instructions.
  • Outils: les outils comblent l'écart entre les capacités internes de l'agent et le monde extérieur, ce qui ouvre un plus large éventail de possibilités. Ils permettent d'interagir avec des données et des services externes.
  • Couche d'orchestration: cette couche régit la façon dont l'agent recueille les informations, effectue un raisonnement interne et utilise ce raisonnement pour éclairer sa prochaine action ou décision.

Agents par rapport à l'appel de fonction

L'appel de fonction de LLM est une étape efficace vers le comportement de l'agent, mais il n'est pas équivalent à un agent complet.

LLM + Appel de fonction:vous définissez des fonctions que le LLM peut appeler (par exemple, get_weather(location), search_wikipedia(topic)). Lorsqu'une réponse LLM indique qu'elle doit utiliser une fonction, votre code exécute cette fonction et renvoie le résultat au LLM. Cela permet au modèle d'accéder à des données externes ou d'effectuer des actions.

LLM + Agent :

Un agent s'appuie sur l'appel de fonction. L'appel de fonction est un mécanisme que les agents peuvent utiliser, mais l'agent ajoute:

  • Prise de décision stratégique: l'agent décide quand et pourquoi appeler des fonctions, en fonction de son objectif et de son plan globaux. Il ne réagit pas seulement à une seule requête.
  • Raisonnement en plusieurs étapes: un agent peut enchaîner plusieurs appels de fonction et interactions Gemini, en fonction de son processus de raisonnement interne. Il n'est pas limité à un seul appel de fonction par requête.
  • Gestion des erreurs et adaptation: un bon agent gère les cas où un appel de fonction échoue ou renvoie des résultats inattendus. Il peut ajuster son plan en conséquence.
  • Gestion de l'état: l'agent maintient un état interne (mémoire) qui persiste sur plusieurs interactions, ce qui lui permet de suivre la progression et de prendre des décisions plus éclairées.

Considérez l'appel de fonction comme permettant au LLM d'interagir avec le monde. C'est un agent qui donne à l'LLM l'intelligence et l'autonomie nécessaires pour utiliser cette capacité efficacement afin d'atteindre un objectif complexe.

Pipelines et chaînes LLM

Cette sous-section explique comment les LLM peuvent être structurés et organisés dans les agents à l'aide de pipelines et de chaînes. Nous allons examiner différents modèles permettant de connecter les appels LLM, les interactions avec les outils et d'autres composants de l'agent pour effectuer des tâches complexes. Vous trouverez des explications sur les architectures de pipeline et de chaîne courantes pertinentes pour la conception d'agents.

Anti-modèles lors de la création d'agents

Cette section se concentre sur les erreurs et les écueils courants à éviter lors du développement d'agents. Nous identifierons et décrirons les "anti-modèles", c'est-à-dire les choix de conception ou les stratégies d'implémentation susceptibles d'entraver les performances, la maintenabilité ou la scalabilité des agents. Connaître ces anti-modèles aidera les développeurs à créer des agents plus robustes et efficaces.

Agents multi-étapes ou multi-agents : que choisir ?

Cette section compare et contraste deux approches différentes de la complexité des agents: les agents à plusieurs étapes (agents qui effectuent des tâches dans une séquence d'étapes) et les systèmes multi-agents (systèmes composés de plusieurs agents qui interagissent). Nous allons discuter des points forts et des points faibles de chaque approche, et vous donner des conseils sur le moment où choisir l'une plutôt que l'autre en fonction du cas d'utilisation et du comportement souhaité de l'agent.

Quand utiliser des flux multi-agents ?

En s'appuyant sur les systèmes multi-agents, cette section explore spécifiquement les scénarios dans lesquels l'utilisation de "flux" multi-agents devient avantageuse. Nous allons examiner les cas d'utilisation qui bénéficient de la collaboration, de la délégation ou de la résolution de problèmes distribuée entre plusieurs agents. L'objectif est d'illustrer les applications pratiques et les avantages des flux multi-agents dans des systèmes d'agents complexes.

Agents avec plusieurs outils ou multi-agents ?

Cette section aborde le choix de conception entre équiper un seul agent de plusieurs outils et créer un système multi-agent. Nous analyserons les situations où il suffit d'augmenter l'ensemble d'outils d'un seul agent, et celles où la distribution des tâches et des fonctionnalités entre plusieurs agents devient une approche plus efficace. Cela aidera les développeurs à choisir l'architecture optimale en fonction de la complexité et des exigences fonctionnelles.

Agent avec des flux prédéfinis ou agents autonomes ?

Ici, nous allons faire la distinction entre les agents avec des workflows structurés et prédéfinis ("flux") et les agents plus autonomes qui font preuve de plus de flexibilité et de prise de décision dans leur fonctionnement. Nous allons discuter des compromis entre le contrôle et l'adaptabilité, et déterminer quand chaque type d'agent est le plus approprié pour différentes applications.

Mémoire à court terme et à long terme

Cette section explique les concepts de mémoire à court et à long terme dans le framework Agent. Nous verrons comment les agents gèrent le contexte de la conversation (mémoire à court terme) et conservent les connaissances ou les données entre les sessions (mémoire à long terme). Comprendre ces mécanismes de mémoire est essentiel pour créer des agents capables de maintenir l'état et d'apprendre au fil du temps.

Planification en une seule étape ou en plusieurs étapes

Nous allons explorer les capacités de planification des agents, en comparant la planification en une seule étape (prise de décisions immédiates) à la planification en plusieurs étapes (stratégie et décomposition des tâches complexes en séquences). Cette section présente les avantages et les complexités de chaque approche de planification, et leur impact sur le comportement des agents et leurs capacités de résolution de problèmes.

Outils uniques, outils multiples et AgentTools

Cette section présente un aperçu comparatif des différentes configurations d'outils pour les agents. Nous allons examiner l'utilisation d'outils uniques, d'agents équipés de plusieurs outils et des "AgentTools" spécialisés (outils qui appellent d'autres agents). L'objectif est de clarifier l'objectif et les scénarios d'utilisation de chaque type et configuration d'outil.

Outils par rapport à la mémoire

Cette section aborde l'interaction et la relation entre les outils et la mémoire dans la conception d'agents. Nous verrons comment les agents utilisent la mémoire pour orienter l'utilisation des outils, stocker les résultats des outils et optimiser la sélection des outils au fil du temps. Comprendre cette interaction est essentiel pour créer des agents qui exploitent efficacement à la fois les outils et la mémoire pour améliorer les performances.

Tests et contrôle qualité des agents

Cette section se concentre sur les aspects cruciaux des tests et du contrôle qualité pour les agents. Nous aborderons les stratégies et les méthodologies permettant de tester rigoureusement le comportement des agents, l'intégration des outils et les performances globales du système. L'objectif est de vous aider à garantir la fiabilité et l'exactitude des agents avant leur déploiement.

Évaluations des agents

S'appuyant sur les tests, cette section traite spécifiquement des évaluations des agents. Nous allons examiner les méthodes permettant de mesurer et d'évaluer systématiquement les performances des agents par rapport aux métriques et aux benchmarks définis. Vous pouvez vous attendre à des discussions sur les frameworks d'évaluation, les métriques telles que la précision et l'efficacité, et comment utiliser les évaluations pour améliorer la conception des agents.

Multi-agent

Cette section fournit une analyse plus approfondie du concept de systèmes multi-agents dans le framework. Il consolidera et développera les mentions précédentes des concepts multi-agents, en offrant une présentation complète de leur architecture, de leurs avantages et de leurs défis. Il servira de ressource centrale pour comprendre et concevoir des applications multi-agents.

Flux

Cette section explique en détail les "flux" dans le framework Agent. Il détaille les différents types de flux prédéfinis (séquentiels, en boucle, automatiques, etc.) et la façon dont ils régissent le comportement des agents et leur interaction avec les agents enfants. Attendez-vous à une explication claire et structurée des mécanismes de flux et des options de personnalisation.

Communication

Cette section explore la communication au sein du framework d'agent, en particulier dans les systèmes multi-agents. Nous verrons comment les agents échangent des informations, coordonnent leurs actions et collaborent pour atteindre des objectifs communs. L'accent sera mis sur les mécanismes et les modèles permettant une communication efficace entre les agents.

Planification

Cette section offre une exploration plus approfondie de la planification au sein des agents. Il présente différents algorithmes de planification, des stratégies pour décomposer des tâches complexes et la façon dont les agents utilisent la planification pour guider leurs actions et leur utilisation des outils. Attendez-vous à une discussion plus technique sur les méthodologies de planification pertinentes pour le développement d'agents.

Session et états

Cette section fournit une explication complète des sessions et de la gestion de l'état dans le framework Agent. Il explique en détail comment les sessions sont créées et gérées, comment les variables d'état sont utilisées pour stocker et accéder aux informations, ainsi que le cycle de vie des données de session. Comprendre les sessions et les états est essentiel pour créer des agents capables de gérer le contexte et de maintenir la continuité entre les interactions.

Rappels

Enfin, cette section propose une explication détaillée et dédiée des rappels dans le framework de l'agent. Il présente les différents types de rappels (avant/après l'agent, le modèle, l'outil), leur objectif et la façon dont les développeurs peuvent les utiliser pour personnaliser et étendre le comportement de l'agent à différentes étapes du traitement. Attendez-vous à un guide détaillé sur l'utilisation des rappels pour la personnalisation avancée des agents.