Créer un agent autonome à mémoire hybride doté d’une architecture modulaire et d’un mécanisme de répartition des tâches à l’aide d’OpenAI

Le secteur de l’IA vient d’être le théâtre d’un développement notable.

Créer un agent autonome à mémoire hybride doté d’une architecture modulaire et d’un mécanisme de répartition des tâches à l’aide d’OpenAI

Dans ce tutoriel, nous commencerons par examiner l’architecture d’un agent autonome à mémoire hybride. Ce système combine la exploration vectorielle sémantique, la recherche par mots-clés et une boucle modulaire de répartition des tâches afin de créer un agent capable de raisonner, de mémoriser et d’agir de manière autonome. Nous passons en revue chaque couche de la conception, en partant de zéro, depuis les interfaces abstraites qui garantissent une séparation claire des préoccupations jusqu’à un agent actif capable de gérer sa propre mémoire à long terme.

Autre élément, nous commençons par installer toutes les dépendances requises et par configurer notre environnement Python avec les importations nécessaires. Nous récupérons la clé API OpenAI de manière sécurisée à l’aide de getpass, en veillant à ce qu’elle n’apparaisse jamais dans la sortie du terminal ou du notebook. Nous définissons également les deux constantes globales, le modèle d’encodage et le modèle de chat, dont dépendent tous les extraits de code suivants.

Nous définissons les trois classes de base abstraites principales, MemoryBackend, LLMProvider et Tool, qui constituent les contrats d’interface que chaque composant concret doit respecter. Nous implémentons ensuite HybridMemory, qui stocke les représentations vectorielles pour la exploration vectorielle et gère un index BM25 dynamique pour la correspondance de mots-clés, en fusionnant les deux ensembles de résultats à l’aide de la méthode Reciprocal Rank Fusion. Nous terminons cet extrait avec OpenAIProvider, une implémentation concrète de LLMProvider qui convertit la réponse d’OpenAI en un dictionnaire indépendant du fournisseur, que l’agent peut exploiter sans savoir quel modèle se cache derrière.

De plus, nous mettons en œuvre quatre outils : MemoryStoreTool, MemorySearchTool, CalculatorTool et WebSnippetTool. Chacun d’entre eux implémente l’interface Tool et expose un schéma JSON compatible avec OpenAI pour l’appel automatique de fonctions. Nous présentons ensuite AgentPersona, une classe de données qui compile les traits de caractère, les objectifs et les phrases interdites en une invite système entièrement déterministe au moment de l’exécution. Nous instancions notre personnage de démonstration, Aria, dont l’invite compilée est insérée au début de chaque tour de conversation afin de garantir une identité cohérente tout au long des interactions.

Nous créons la classe `AutonomousAgent`, qui gère la boucle d’agent : elle envoie des messages de manière répétée au LLM, détecte les appels d’outils, les transmet à l’outil approprié et renvoie les résultats jusqu’à ce qu’une réponse en texte brut soit générée. Nous intégrons tous les composants précédents — HybridMemory, OpenAIProvider, les quatre outils et le persona Aria — au sein d’une seule instance d’agent initialisée, prête à recevoir les messages de l’utilisateur. Nous mettons également à disposition des méthodes utilitaires, telles que `register_tool` pour le remplacement à chaud en cours d’exécution et `memory_dump` pour inspecter l’état complet de la mémoire à long terme.

Nous proposons quatre scénarios de démonstration progressifs qui mettent à l’épreuve chaque couche de l’architecture que nous avons mise au point : alimenter la mémoire à long terme avec des faits structurés, exécuter des requêtes de recherche hybrides directes pour observer comment les scores vectoriels et BM25 se combinent, mener une conversation autonome en plusieurs tours au cours de laquelle l’agent se souvient, calcule et stocke des informations de manière autonome, et enfin remplacer un outil à la volée pendant l’exécution pour illustrer le modèle vtable en action. Nous terminons en effectuant un vidage complet de la mémoire afin de vérifier que toutes les décisions stockées de manière autonome ont bien été enregistrées. Nous concluons par un tableau récapitulatif de l’architecture qui met en correspondance chaque composant avec le modèle qu’il met en œuvre.

Les aspects saillants :

  • Nous mettons en œuvre quatre outils : MemoryStoreTool, MemorySearchTool, CalculatorTool et WebSnippetTool.
  • Nous concluons par un tableau récapitulatif de l’architecture qui met en correspondance chaque composant avec le modèle qu’il met en œuvre.

Reste à voir comment l’industrie va réagir à cette annonce.

Sur le même sujet :


Lire l’article original sur MarkTechPost : MarkTechPost