Les grands modèles linguistiques révolutionnent notre façon d'interagir avec la technologie en tirant parti du traitement avancé du langage naturel pour effectuer des tâches complexes. Ces dernières années, nous avons vu des modèles LLM de pointe permettre un large éventail d'applications innovantes. L'année dernière a marqué un tournant vers la RAG (génération augmentée par récupération), où les utilisateurs ont créé des chatbots IA interactifs en alimentant les LLM avec leurs données organisationnelles (via l'intégration vectorielle).
Mais nous n'en sommes qu'au début. Bien que puissante, la « génération augmentée par récupération » limite notre application à la récupération de connaissances statiques. Imaginez un agent de service client typique qui non seulement répond aux questions à partir de données internes, mais prend également des mesures avec une intervention humaine minimale. Avec les LLM, nous pouvons créer des applications de prise de décision entièrement autonomes qui non seulement répondent, mais agissent également sur les requêtes des utilisateurs. Les possibilités sont infinies - de l'analyse de données internes aux recherches sur le Web et au-delà.
La compréhension sémantique et la capacité linguistique des grands modèles linguistiques nous permettent de créer des applications de prise de décision entièrement autonomes qui peuvent non seulement répondre, mais aussi « agir » en fonction des requêtes des utilisateurs.
Databricks a lancé le framework d'agents Mosaic AI qui permet aux développeurs de créer un framework d'agents à l'échelle de la production via n'importe quel LLM. L'une des capacités principales est de créer des outils sur Databricks conçus pour aider à construire, déployer et évaluer des agents IA de qualité production tels que les applications de génération augmentée par récupération (RAG) et bien plus encore. Les développeurs peuvent créer et enregistrer des agents à l'aide de n'importe quelle bibliothèque et les intégrer à MLFlow. Ils peuvent paramétrer les agents pour expérimenter et itérer rapidement sur le développement. Le traçage d'agents permet aux développeurs d'enregistrer, d'analyser et de comparer les traces pour déboguer et comprendre comment l'agent répond aux requêtes.
Dans cette première partie du blog, nous explorerons les agents, leurs composants principaux et nous construirons un agent IA autonome de service client multi-tours pour une entreprise de vente au détail en ligne avec l'un des modèles fondamentaux Databricks les plus performants (open source) sur la plateforme. Dans la prochaine série de blogs, nous explorerons le framework multi-agents et construirons un agent multi-étapes de raisonnement avancé pour la même application métier.
Les agents LLM sont des systèmes IA avancés de nouvelle génération conçus pour exécuter des tâches complexes nécessitant du raisonnement. Ils peuvent anticiper, se souvenir des conversations passées et utiliser divers outils pour ajuster leurs réponses en fonction de la situation et du style requis.
Progression naturelle de la RAG, les agents LLM sont une approche où les modèles linguistiques de pointe sont dotés de systèmes/outils ou de fonctions externes pour prendre des décisions autonomes. Dans un système IA composé, un agent peut être considéré comme un moteur de décision doté de mémoire, de capacité d'introspection, d'utilisation d'outils et bien plus encore. Pensez-y comme à des moteurs de décision super intelligents capables d'apprendre, de raisonner et d'agir indépendamment - l'objectif ultime de la création d'une application IA véritablement autonome.
Les composants clés d'une application d'agent comprennent :
L'élément principal d'un framework d'agent est un modèle linguistique général pré-entraîné qui peut traiter et comprendre les données. Ce sont généralement des modèles pré-entraînés très performants ; L'interaction avec ces modèles commence par la création de prompts spécifiques qui fournissent un contexte essentiel, le guidant sur la manière de répondre, quels outils utiliser et les objectifs à atteindre pendant l'interaction.
Un framework d'agent permet également la personnalisation, vous permettant d'attribuer une identité distincte au modèle. Cela signifie que vous pouvez adapter ses caractéristiques et son expertise pour mieux répondre aux exigences d'une tâche ou d'une interaction particulière. En fin de compte, un agent LLM combine de manière transparente des capacités avancées de traitement des données avec des fonctionnalités personnalisables, ce qui en fait un outil inestimable pour gérer diverses tâches avec précision et flexibilité.
La mémoire est un composant important de l'architecture d'un agent. C'est un stockage temporaire que l'agent utilise pour stocker les conversations. Il peut s'agir d'une mémoire de travail à court terme où l'agent LLM conserve les informations actuelles avec un contexte immédiat et efface la mémoire une fois la tâche terminée. C'est temporaire.
D'autre part, nous avons la mémoire à long terme (parfois appelée mémoire épisodique) qui conserve les conversations de longue durée et peut aider l'agent à comprendre les modèles, à apprendre des tâches précédentes et à rappeler des informations pour prendre de meilleures décisions dans les interactions futures. Cette conversation est généralement persistante dans une base de données externe. (par exemple, une base de données vectorielle).
La combinaison de ces deux mémoires permet à un agent de fournir des réponses personnalisées et de mieux fonctionner en fonction des préférences de l'utilisateur au fil du temps. N'oubliez pas de ne pas confondre la mémoire de l'agent avec la mémoire conversationnelle de notre LLM. Les deux servent des objectifs différents.
Le composant suivant d'un agent LLM est la capacité de planification, qui aide à décomposer les tâches complexes en tâches gérables et exécute chaque tâche. Lors de la formulation du plan, le composant de planification peut utiliser plusieurs techniques de raisonnement, telles que le raisonnement chaîne de pensée ou le raisonnement hiérarchique, comme les arbres de décision, pour décider du chemin à suivre.
Une fois le plan créé, les agents l'examinent et évaluent son efficacité grâce à divers mécanismes de rétroaction internes. Certaines méthodes courantes incluent ReAct et Reflexion. Ces méthodes aident les LLM à résoudre des tâches complexes en parcourant une séquence de pensées et en observant les résultats. Le processus se répète pour une amélioration itérative.
Dans un chatbot multi-tours typique avec un seul agent LLM, la planification et l'orchestration sont effectuées par un seul modèle linguistique, tandis que dans un framework multi-agents, des agents distincts peuvent effectuer des tâches spécifiques comme le routage, la planification, etc. Nous en discuterons davantage dans la prochaine partie du blog sur le framework multi-agents.
Les outils sont les éléments constitutifs des agents, ils effectuent différentes tâches selon les instructions du noyau central de l'agent. Les outils peuvent être divers exécuteurs de tâches sous n'importe quelle forme (appels API, fonctions Python ou SQL, recherche Web, codage, espace Databricks Genie ou tout autre fonction que vous souhaitez pour l'outil. Avec l'intégration des outils, un agent LLM effectue des tâches spécifiques via des flux de travail, recueillant des observations et collectant les informations nécessaires pour accomplir des sous-tâches.
Lorsque nous construisons ces applications, il faut tenir compte de la durée de l'interaction. Vous pouvez facilement épuiser la limite de contexte des LLM lorsque l'interaction est de longue durée et que le risque d'oublier les conversations précédentes est élevé. Lors d'une longue conversation avec un utilisateur, le flux de contrôle de la décision peut être à fil unique, multi-fils en parallèle ou en boucle. Plus la chaîne de décision devient complexe, plus son implémentation sera complexe.
Dans la figure 1 ci-dessous, un seul LLM performant est la clé de la prise de décision. En fonction de la question de l'utilisateur, il comprend quel chemin il doit emprunter pour acheminer le flux de décision. Il peut utiliser plusieurs outils pour effectuer certaines actions, stocker des résultats intermédiaires en mémoire, effectuer une planification ultérieure et enfin renvoyer le résultat à l'utilisateur.

Pour les besoins de ce billet de blog, nous allons créer un assistant IA autonome de service client pour un détaillant électronique en ligne via le framework d'agents Mosaic AI. Cet assistant interagira avec les clients, répondra à leurs questions et effectuera des actions basées sur les instructions de l'utilisateur. Nous pouvons introduire un contrôle humain pour vérifier la réponse de l'application. Nous utiliserons les fonctionnalités d'outils de Mosaic AI pour créer et enregistrer nos outils dans Unity Catalog. Vous trouverez ci-dessous la relation d'entité (données synthétiques) que nous avons construite pour ce billet de blog.

Vous trouverez ci-dessous le diagramme de flux de processus simple pour notre cas d'utilisation.

Extrait de code : (SQL) Détails de la commande
Le code ci-dessous renvoie les détails de la commande en fonction d'un ID de commande fourni par l'utilisateur. Notez la description du champ d'entrée et du champ comment de la fonction. Ne sautez pas les commentaires de fonction et de paramètre, qui sont essentiels pour que les LLM puissent appeler correctement les fonctions/outils.
Les commentaires sont utilisés comme paramètres de métadonnées par notre LLM central pour décider quelle fonction exécuter étant donné une requête utilisateur. Des commentaires incorrects ou insuffisants peuvent potentiellement exposer le LLM à l'exécution de fonctions/outils incorrects.
Extrait de code : (SQL) Détails de l'expédition
Cette fonction renvoie les détails de l'expédition à partir de la table des expéditions étant donné un ID. Similaire à ce qui précède, les commentaires et les détails des métadonnées sont importants pour que l'agent puisse interagir avec l'outil.
Extrait de code : (Python)
De même, vous pouvez créer n'importe quelle fonction Python et l'utiliser comme outil ou fonction. Elle peut être enregistrée dans Unity Catalog de manière similaire et vous offrir tous les avantages mentionnés ci-dessus. L'exemple ci-dessous concerne l'outil de recherche web que nous avons créé et utilisé comme point d'accès pour notre agent.
Pour notre cas d'utilisation, nous avons créé plusieurs outils effectuant diverses tâches comme ci-dessous :

| return_order_details | Retourne les détails de la commande étant donné un ID de commande |
| return_shipment_details | Retourne les détails de l'expédition étant donné un ID d'expédition |
| return_product_details | Retourne les détails du produit étant donné un ID de produit |
| return_product_review_details | Retourne le résumé des avis à partir de données non structurées |
| search_tool | Recherche sur le web en fonction de mots-clés et renvoie les résultats |
| process_order | Traite une demande de remboursement basée sur une requête utilisateur |

Maintenant que nos outils sont prêts, nous allons les intégrer à un modèle fondamental de grand langage hébergé sur Databricks. Notez que vous pouvez également utiliser votre propre modèle personnalisé ou des modèles externes via AI Gateway. Pour les besoins de ce billet de blog, nous utiliserons databricks-meta-llama-3-1-70b-instruct hébergé sur Databricks.
Il s'agit d'un modèle open-source de Meta et il a été configuré dans Databricks pour utiliser efficacement les outils. Notez que tous les modèles ne sont pas équivalents et que différents modèles auront des capacités d'utilisation d'outils différentes.
Maintenant que notre LLM est prêt, nous utiliserons l'exécuteur d'agent LangChain pour assembler tout cela et construire un agent :
Voyons comment cela se présente en action avec une question d'exemple :
En tant que client, imaginez que je commence à demander à l'agent le prix d'un produit particulier, « Bouilloire électrique Breville », dans leur entreprise et sur le marché pour voir les offres concurrentes.
Sur la base de la question, l'agent a compris qu'il fallait exécuter deux fonctions/outils :
return_product_price_details - Pour le prix interneweb_search_tool – Pour la recherche sur le web.La capture d'écran ci-dessous montre l'exécution séquentielle des différents outils en fonction d'une question utilisateur.
Enfin, avec la réponse de ces deux fonctions/outils, l'agent synthétise la réponse et la fournit ci-dessous. L'agent a compris de manière autonome les fonctions à exécuter et a répondu à la question de l'utilisateur en votre nom. Plutôt sympa !

Vous pouvez également voir la trace de bout en bout de l'exécution de l'agent via MLflow Trace. Cela aide énormément votre processus de débogage et vous donne de la clarté sur la façon dont chaque étape s'exécute.

L'un des facteurs clés pour construire un agent est son état et sa mémoire. Comme mentionné ci-dessus, chaque fonction renvoie une sortie, et idéalement, vous devez vous souvenir de la conversation précédente pour avoir une conversation multi-tours. Ceci peut être réalisé de plusieurs manières via n'importe quel framework d'orchestration. Pour ce cas, nous utiliserions LangChain Agent Memory pour construire un bot conversationnel multi-tours.
Voyons comment nous pouvons y parvenir grâce à l'API LangChain et Databricks FM. Nous utiliserions l'exécuteur d'agent précédent et ajouterions une mémoire supplémentaire avec LangChain ChatMessageHistory etRunnableWithMessageHistory.
Ici, nous utilisons une mémoire de chat en mémoire à des fins de démonstration. Une fois la mémoire instanciée, nous l'ajoutons à notre exécuteur d'agent et créons un agent avec l'historique de chat ci-dessous. Voyons à quoi ressemblent les réponses avec le nouvel agent.
Maintenant que nous avons défini l'exécuteur d'agent, essayons de poser des questions de suivi à l'agent et voyons s'il se souvient de la conversation. Portez une attention particulière au session_id ; c'est le fil de mémoire qui contient la conversation en cours.


Bien ! Il se souvient de toutes les conversations précédentes de l'utilisateur et peut répondre aux questions de suivi très bien ! Maintenant que nous avons compris comment créer un agent et maintenir son historique, voyons à quoi ressemblerait l'agent de chat conversationnel de bout en bout en action.
Nous utiliserions Databricks AI Playground pour voir à quoi il ressemble de bout en bout. Databricks AI Playground est un environnement de type chat où vous pouvez tester, interroger et comparer plusieurs LLM. N'oubliez pas que vous pouvez également servir l'agent que vous venez de construire comme point de terminaison de service et l'utiliser dans le Playground pour tester les performances de votre agent.
Nous avons implémenté l'agent IA en utilisant le framework Databricks Mosaic AI Agent Framework, l'API Databricks Foundational Model et l'orchestrateur LangChain.
La vidéo ci-dessous illustre une conversation entre l'agent multi-tours que nous avons construit en utilisant Meta-llama-3-1-70b-instruct et nos fonctions/outils UC dans Databricks.
Elle montre le flux de conversation entre un client et notre agent qui sélectionne dynamiquement les outils appropriés et les exécute en fonction d'une série de requêtes utilisateur pour fournir un support transparent à notre client.
Voici un flux de conversation d'un client avec notre nouvel agent pour notre magasin de détail en ligne.

De la demande d'état de commande avec le nom du client au passage d'une commande, tout est fait de manière autonome, sans aucune intervention humaine.

Et voilà ! En quelques lignes de code, nous avons libéré la puissance des agents autonomes multi-tours capables de converser, de raisonner et d'agir au nom de vos clients. Le résultat ? Une réduction significative des tâches manuelles et un coup de pouce majeur à l'automatisation. Mais nous ne faisons que commencer ! Le framework Mosaic AI Agent a ouvert les portes à un monde de possibilités dans Databricks.
Restez à l'écoute pour le prochain épisode, où nous passerons au niveau supérieur avec l'IA multi-agents — imaginez plusieurs agents travaillant en harmonie pour s'attaquer aux tâches les plus complexes. Pour couronner le tout, nous vous montrerons comment déployer le tout via MLflow et des points de terminaison de service, ce qui facilitera la création d'applications agentiques à l'échelle de la production sans compromettre la gouvernance des données. L'avenir de l'IA est là, et il est à portée de clic.
Mosaic AI : Construire et déployer des systèmes d'IA composés de qualité production
Annonce du framework d'agents Mosaic AI et de l'évaluation des agents | Blog Databricks
Framework d'agents Mosaic AI | Databricks
React : Synergiser le raisonnement et l'action dans les modèles de langage
Reflexion : Agents de langage avec apprentissage par renforcement verbal
Agents LLM : le guide ultime | SuperAnnotate
Mémoire dans les agents LLM - Communauté DEV
Comment exécuter plusieurs agents sur le même fil
(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original
