Créer un agent
Assemblez un graphe cognitif pour la prise de décision et des graphes d’actions pour l'exécution pour créer un agent.
Dans ce tutoriel, nous allons voir comment créer un agent on-chain intelligent basé sur le framework @ai.ntellect/core . L'agent sera capable de prendre des décisions, exécuter des actions sur la blockchain, mémoriser des informations et interagir avec un LLM comme OpenAI.
Prérequis
Avant de commencer, assurez-vous d'avoir installé les dépendances suivantes :
npm install @ai-sdk/openai ai dotenv viem zod @ai.ntellect/coreVariables d'environnement
Vous aurez besoin d'un fichier .env contenant les informations suivantes :
OPENAI_API_KEY=your_openai_api_key
MEILISEARCH_API_KEY=your_meilisearch_api_key
MEILISEARCH_HOST=your_meilisearch_host
PRIVATE_KEY=your_private_keyCes informations sont utilisées pour :
OpenAI : Génération de texte et embeddings pour les décisions de l'agent.
Meilisearch : Stockage des connaissances de l'agent.
Viem : Gestion des transactions blockchain.
Définition du contexte
Nous devons définir les réseaux blockchain et le contexte de notre agent.
Création du contexte de l'agent
Nous utilisons Zod pour définir un schéma de validation.
Définition d'un GraphFlow pour une transaction EVM
Nous créons un GraphFlow permettant de :
Vérifier le solde du compte avant d’envoyer une transaction.
Envoyer une transaction si le solde est suffisant.
Récupération des connaissances en mémoire
L'agent doit être capable de mémoriser des interactions passées pour améliorer ses réponses.
Prise de décision
Un agent intelligent doit connaître les actions disponibles avant de prendre une décision. Dans notre cas, l'agent utilise un LLM pour raisonner et choisir la bonne action.
Mais comment sait-il quelles actions il peut exécuter ? Il ne peut pas les deviner ! Nous devons lui fournir une liste structurée de toutes les actions disponibles.
C'est ici qu'intervient la méthode generateActionSchema.
La méthode generateActionSchema sert à générer dynamiquement une documentation des actions disponibles pour l'agent.
Son rôle :
Extraire les actions disponibles à partir des workflows enregistrés.
Générer une description de chaque action et de ses paramètres.
Construire un prompt structuré que l'IA peut comprendre.
Lorsqu'on initialise l'agent, on lui fournit une liste de workflows (GraphFlow) qui correspondent à des actions possibles.
Lorsqu'il doit prendre une décision, il utilise generateActionSchema pour lister ces actions dans son prompt.
Il peut alors choisir la meilleure action à exécuter en fonction de la requête de l'utilisateur.
L'agent récupère toutes les actions disponibles grâce à generateActionSchema,il les convertit en une liste d'actions claires, il envoie cette liste au LLM sous forme d'un prompt structuré et le LLM analyse la requête utilisateur et choisit quelle action exécuter.
Si nous avons les actions suivantes :
L'agent construira un prompt comme ceci :
Si l'utilisateur demande : "Send 0.5 ETH to 0x123 on Sepolia",
L'agent pourrait produire ce type de réponse :
Grâce à generateActionSchema, notre agent sait exactement ce qu'il peut faire et peut guider le LLM dans sa prise de décision.
Voici un exemple avec GPT-4o pour analyser la situation et choisir la meilleure action.
Exécution des actions
Un problème qu'on peut rencontrer lorsqu'on automatise un agent avec un LLM est qu'il peut réexécuter des actions déjà effectuées. Selon les cas d'utilisation, ce n'est pas forcément un souci, mais dans certains scénarios (comme des transactions blockchain), cela peut poser problème.
Une manière d'éviter ce comportement est d'utiliser un historique des actions passées pour informer l'agent de ce qui a déjà été fait.
Dans cet exemple, on stocke ces actions dans executedGraphs. Cette variable permet à l'agent de garder une trace des workflows déjà exécutés et d'ajuster ses décisions en conséquence.
L'historique des actions intervient à plusieurs moments du processus :
Lors de la prise de décision (
makeDecision)
Avant de proposer une nouvelle action, l'agent regarde ce qu'il a déjà fait. Cela lui permet :
D'éviter de refaire une action identique (exemple : renvoyer une transaction déjà exécutée).
D'adapter sa réponse en fonction des actions passées.
De demander des précisions à l'utilisateur si l'historique ne permet pas encore de conclure.
👉 Extrait du prompt donné au LLM :
Ainsi, lorsqu'on demande à l'agent "Envoie 1 ETH à 0x123", il peut voir s'il a déjà exécuté une transaction similaire et éviter de la refaire.
Lors de l'exécution des actions (
executeActions)
Après qu'une action a été validée et exécutée, on l'ajoute à l'historique :
Cela garantit que lors du prochain cycle, cette action sera prise en compte dans la prise de décision.
Définition de l'agent
Enfin, nous assemblons notre agent intelligent en combinant nos graphes.
Dans cet exemple, notre agent est basé sur deux types de graphes distincts :
Un graphe cognitif (
cognitiveGraph) : Responsable du raisonnement et de la prise de décision.Des graphes d'actions (
actionsGraph) : Contient toutes les actions exécutables par l'agent.
Ces deux niveaux permettent à l'agent de fonctionner en pensant d'abord avant d'exécuter des actions.
Cela s'apparente au mode de raisonnement humain : analyser une situation avant d'agir.
Nous définissons un graph cognitif principal qui :
Récupère des connaissances stockées.
Prend une décision basée sur ces connaissances et les actions disponibles.
Exécute les actions si nécessaire.
Apprend de ses actions pour prendre une nouvelle décision (si nécessaire) et éviter les répétitions.
Chaque action est stockée dans un graphe d'actions, permettant d'exécuter uniquement des tâches validées.
Le graphe cognitif (cognitiveGraph) est le cerveau de l’agent. Il analyse le contexte avant d'exécuter une action.Il peut refuser d'agir s'il détecte qu'une action a déjà été exécutée.
Les graphes d'actions ne sont déclenchés que par une validation. Un graphe d'action ne peut être exécuté que si le graphe cognitif le valide. Cela empêche l'agent d'effectuer des actions non autorisées ou non demandées.
L'agent apprend, donc, en mémorisant ses actions :
Grâce à la variable, executedGraphs, injectée dans son contexte, l’agent sait ce qu'il a déjà fait et évite de répéter des actions inutiles.
Code complet
Nous allons maintenant assembler toutes les pièces du puzzle. Voici le code complet :
Félicitations ! Vous avez créé un agent capable d'interagir et d'exécuter des transactions blockchain !
Tester l'agent
L’agent peut gérer plusieurs workflows en parallèle grâce à availableGraphs.
Ce tableau permet de répertorier toutes les actions possibles que l’agent peut exécuter.
Maintenant que l'agent est défini, nous pouvons l'utiliser pour exécuter une action :
L'agent détecte la demande et choisit le bon graph d’action.
Il évite les actions déjà réalisées grâce à
executedGraphs.Il mémorise l’historique et peut apprendre de ses actions.
Récapitulatif
Nous avons vu comment exploiter la puissance du framework @ai.ntellect/core en combinant :
Un graph cognitif pour structurer le raisonnement.
Des graphes d'actions pour exécuter des tâches spécifiques.
Cette architecture modulaire et évolutive permet d'ajouter de nouvelles actions et d'adapter l’agent à différents cas d’usage.
Ce n’est qu’un exemple parmi d’autres : chacun peut créer son propre graphe cognitif et ses graphes d’actions en fonction de ses besoins spécifiques.
Mis à jour