@ai.ntellect/core 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.nvmrc +1 -0
  2. package/README.FR.md +242 -247
  3. package/README.md +249 -246
  4. package/agent/index.ts +199 -215
  5. package/agent/tools/get-rss.ts +64 -0
  6. package/bull.ts +5 -0
  7. package/dist/agent/index.d.ts +29 -26
  8. package/dist/agent/index.js +123 -112
  9. package/dist/agent/tools/get-rss.d.ts +16 -0
  10. package/dist/agent/tools/get-rss.js +62 -0
  11. package/dist/bull.d.ts +1 -0
  12. package/dist/bull.js +9 -0
  13. package/dist/examples/index.d.ts +2 -0
  14. package/dist/examples/index.js +89 -0
  15. package/dist/llm/interpreter/context.d.ts +5 -22
  16. package/dist/llm/interpreter/context.js +8 -9
  17. package/dist/llm/interpreter/index.d.ts +9 -5
  18. package/dist/llm/interpreter/index.js +55 -48
  19. package/dist/llm/memory-manager/context.d.ts +2 -0
  20. package/dist/llm/memory-manager/context.js +22 -0
  21. package/dist/llm/memory-manager/index.d.ts +17 -0
  22. package/dist/llm/memory-manager/index.js +107 -0
  23. package/dist/llm/orchestrator/context.d.ts +2 -10
  24. package/dist/llm/orchestrator/context.js +19 -14
  25. package/dist/llm/orchestrator/index.d.ts +36 -21
  26. package/dist/llm/orchestrator/index.js +122 -88
  27. package/dist/llm/orchestrator/types.d.ts +12 -0
  28. package/dist/llm/orchestrator/types.js +2 -0
  29. package/dist/memory/cache.d.ts +6 -5
  30. package/dist/memory/cache.js +31 -21
  31. package/dist/memory/persistent.d.ts +5 -3
  32. package/dist/memory/persistent.js +89 -73
  33. package/dist/services/redis-cache.d.ts +37 -0
  34. package/dist/services/redis-cache.js +93 -0
  35. package/dist/services/scheduler.d.ts +39 -16
  36. package/dist/services/scheduler.js +81 -103
  37. package/dist/services/telegram-monitor.d.ts +0 -15
  38. package/dist/services/telegram-monitor.js +117 -101
  39. package/dist/test.js +106 -172
  40. package/dist/types.d.ts +38 -7
  41. package/dist/utils/generate-object.d.ts +12 -0
  42. package/dist/utils/generate-object.js +90 -0
  43. package/dist/utils/header-builder.d.ts +11 -0
  44. package/dist/utils/header-builder.js +34 -0
  45. package/dist/utils/inject-actions.js +2 -2
  46. package/dist/utils/queue-item-transformer.d.ts +2 -2
  47. package/dist/utils/schema-generator.d.ts +16 -0
  48. package/dist/utils/schema-generator.js +46 -0
  49. package/examples/index.ts +103 -0
  50. package/llm/interpreter/context.ts +20 -8
  51. package/llm/interpreter/index.ts +81 -54
  52. package/llm/memory-manager/context.ts +21 -0
  53. package/llm/memory-manager/index.ts +163 -0
  54. package/llm/orchestrator/context.ts +20 -13
  55. package/llm/orchestrator/index.ts +210 -130
  56. package/llm/orchestrator/types.ts +14 -0
  57. package/memory/cache.ts +37 -31
  58. package/memory/persistent.ts +121 -99
  59. package/package.json +11 -2
  60. package/services/redis-cache.ts +128 -0
  61. package/services/scheduler.ts +102 -141
  62. package/services/telegram-monitor.ts +138 -138
  63. package/t.py +79 -0
  64. package/t.spec +38 -0
  65. package/types.ts +40 -7
  66. package/utils/generate-object.ts +105 -0
  67. package/utils/header-builder.ts +40 -0
  68. package/utils/inject-actions.ts +4 -6
  69. package/utils/queue-item-transformer.ts +2 -1
  70. package/utils/schema-generator.ts +73 -0
  71. package/agent/handlers/ActionHandler.ts +0 -48
  72. package/agent/handlers/ConfirmationHandler.ts +0 -37
  73. package/agent/handlers/EventHandler.ts +0 -35
  74. package/dist/agent/handlers/ActionHandler.d.ts +0 -8
  75. package/dist/agent/handlers/ActionHandler.js +0 -36
  76. package/dist/agent/handlers/ConfirmationHandler.d.ts +0 -7
  77. package/dist/agent/handlers/ConfirmationHandler.js +0 -31
  78. package/dist/agent/handlers/EventHandler.d.ts +0 -10
  79. package/dist/agent/handlers/EventHandler.js +0 -34
  80. package/dist/llm/evaluator/context.d.ts +0 -10
  81. package/dist/llm/evaluator/context.js +0 -24
  82. package/dist/llm/evaluator/index.d.ts +0 -16
  83. package/dist/llm/evaluator/index.js +0 -150
  84. package/llm/evaluator/context.ts +0 -21
  85. package/llm/evaluator/index.ts +0 -193
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ v22.0.0
package/README.FR.md CHANGED
@@ -1,370 +1,365 @@
1
1
  # AI.ntellect Core Framework
2
2
 
3
+ ## Vue d'ensemble
4
+
5
+ Ce framework est conçu pour exécuter des workflows complexes à l'aide d'une orchestration avancée, de la gestion de mémoire et d'une intelligence exploitable. Il intègre des outils, des interpréteurs et des systèmes de mémoire pour :
6
+
7
+ - Analyser les entrées utilisateur dans leur contexte.
8
+ - Exécuter des workflows prédéfinis et des actions dynamiques.
9
+ - Gérer efficacement la mémoire à court et à long terme.
10
+ - Permettre une intégration fluide avec des API et outils externes.
11
+
12
+ ---
13
+
3
14
  ## Table des matières
4
15
 
5
- 1. [Composants principaux](#composants-principaux)
6
- - [Orchestrator](#orchestrator)
7
- - [Queue Manager](#queue-manager)
8
- - [Évaluateur](#évaluateur)
9
- - [Interpreter](#interpreter)
10
- - [Mémoire](#architecture-mémoire)
11
- 2. [Création et gestion des actions](#création-et-gestion-des-actions)
12
- 3. [Exécution du Workflow](#exécution-du-workflow)
13
- 4. [Appels API et côté client](#appels-api-et-côté-client)
14
- 5. [WIP (Work in Progress)](#wip-work-in-progress)
16
+ 1. [Composants d'architecture](#composants-darchitecture)
17
+ - [Runtime de l'agent](#runtime-de-lagent)
18
+ - [Orchestrateur](#orchestrateur)
19
+ - [Gestionnaire de file d'attente](#gestionnaire-de-file-dattente)
20
+ - [Interpréteur](#interpréteur)
21
+ - [Système de mémoire](#système-de-mémoire)
22
+ - [Listeners](#listeners)
23
+ - [Schedulers](#schedulers)
24
+ 2. [Définir et exécuter des actions](#définir-et-exécuter-des-actions)
25
+ 3. [Gestion de l'état et récursivité](#gestion-de-letat-et-recursivité)
26
+ 4. [Installation et configuration](#installation-et-configuration)
27
+ 5. [Exemple d'utilisation](#exemple-dutilisation)
28
+ 6. [Travaux en cours (WIP)](#travaux-en-cours-wip)
15
29
 
16
30
  ---
17
31
 
18
- ## 1. Composants principaux
32
+ ## Composants d'architecture
19
33
 
20
- Le système repose sur plusieurs composants clés qui assurent une gestion fluide et efficace des actions et du processus global de workflow.
34
+ ### Runtime de l'agent
21
35
 
22
- ### Orchestrator
36
+ Le `AgentRuntime` est le moteur principal qui coordonne le workflow global. Il connecte tous les composants et garantit que les tâches sont exécutées efficacement.
23
37
 
24
- L'orchestrateur est responsable de la gestion de l'exécution des actions dans un workflow. Il analyse les besoins en fonction des entrées (comme le prompt utilisateur) et décide de l'ordre des actions à effectuer. Il interagit avec les autres composants comme la mémoire cache et les événements pour organiser l'exécution des tâches.
38
+ **Responsabilités :**
25
39
 
26
- - **Rôle principal** : Organiser et diriger l'exécution des actions.
27
- - **Interactions** :
28
- - Demande des actions à exécuter.
29
- - Utilise la mémoire cache pour éviter la redondance.
30
- - Émet des événements pour informer les autres composants de l'état du workflow.
40
+ - Construire un contexte pour l'état actuel à l'aide des systèmes de mémoire (RAG et CAG).
41
+ - Orchestrer les actions à l'aide du gestionnaire de file d'attente.
42
+ - Exploiter les interpréteurs pour analyser les résultats et générer des réponses.
31
43
 
32
- ### Queue Manager
44
+ #### Construction du contexte
33
45
 
34
- Le gestionnaire de la file d'attente (Queue Manager) organise les actions à exécuter et gère leur ordre d'exécution. Il permet de maintenir un flux fluide d'exécution, en ajoutant les actions à la file d'attente selon les priorités définies par l'orchestrateur.
46
+ La méthode `buildContext` crée un contexte complet en :
35
47
 
36
- - **Rôle principal** : Gérer la file d'attente des actions et s'assurer qu'elles sont exécutées dans le bon ordre.
37
- - **Fonctions principales** :
38
- - Ajouter de nouvelles actions à la file d'attente.
39
- - Gérer les priorités des actions.
40
- - Assurer une exécution correcte et en temps voulu des actions.
48
+ 1. Ajoutant les outils et les demandes utilisateur.
49
+ 2. Récupérant les actions récentes via la mémoire cache (CAG).
50
+ 3. Cherchant les connaissances pertinentes dans la mémoire persistante (RAG).
51
+ 4. Incluant les interpréteurs disponibles pour la demande.
41
52
 
42
- ### Évaluateur
53
+ #### Traitement des workflows
43
54
 
44
- L'évaluateur collabore maintenant avec les Interpreters :
55
+ La méthode `process` :
45
56
 
46
- - Analyse les résultats des actions exécutées
47
- - Détermine si des actions supplémentaires sont nécessaires et renvoie à la Queue Manager
48
- - Sinon, il sélectionne l'Interpreter approprié selon le type de demande
57
+ 1. Génère des réponses basées sur le contexte à l'aide d'un modèle de langage.
58
+ 2. Gère les workflows récursifs pour l'exécution des actions.
59
+ 3. Sélectionne les interpréteurs appropriés pour analyser les résultats.
49
60
 
50
- ### Interpreter
61
+ ---
51
62
 
52
- L'Interpreter est le composant spécialisé dans l'interprétation des résultats d'actions et la génération de réponses adaptées. Chaque Interpreter est configuré avec un contexte spécifique et produit des réponses dans un format adapté à son domaine d'expertise.
63
+ ### Orchestrateur
53
64
 
54
- **Caractéristiques principales** :
65
+ L'**orchestrateur** dirige les workflows en analysant les entrées utilisateur et en planifiant les actions. Il interagit avec les outils, les systèmes de mémoire et les interpréteurs pour garantir une exécution logique.
55
66
 
56
- - Configuration avec un contexte métier spécifique
57
- - Format de réponse adapté au domaine
58
- - Traitement spécialisé des données selon le contexte
67
+ **Caractéristiques clés :**
59
68
 
60
- **Fonctionnement** :
69
+ - Sélection dynamique des actions en fonction du contexte.
70
+ - Gestion des interactions mémoire pour les opérations RAG et CAG.
71
+ - Gestion des workflows multi-étapes avec affinage itératif.
61
72
 
62
- - Reçoit les résultats des actions via l'Evaluator
63
- - Analyse les données selon son contexte spécifique
64
- - Produit une réponse formatée selon les règles de son domaine
73
+ ---
65
74
 
66
- Voici quelques exemples d'Interpreters qui peuvent être implémentés :
75
+ ### Gestionnaire de file d'attente
67
76
 
68
- 1. **MarketInterpreter**
77
+ Le **gestionnaire de file d'attente** est chargé d'organiser et d'exécuter les actions dans le bon ordre, qu'elles soient séquentielles ou parallèles. Il agit comme le mécanisme central pour gérer les workflows, en s'assurant que chaque action est correctement mise en file d'attente, validée et exécutée.
69
78
 
70
- - Spécialisé dans l'analyse des données de marché
71
- - Format adapté aux analyses financières
79
+ **Responsabilités principales :**
72
80
 
73
- 2. **SecurityInterpreter**
81
+ 1. **Mise en file d'attente des actions :**
74
82
 
75
- - Dédié aux vérifications de sécurité
76
- - Format optimisé pour les rapports de sécurité
83
+ - Les actions sont ajoutées à une file pour exécution, individuellement ou en lot.
84
+ - Prise en charge des journaux pour le débogage et la traçabilité.
77
85
 
78
- 3. **GeneralInterpreter**
79
- - Traitement des requêtes générales
80
- - Format flexible selon le contexte
86
+ 2. **Traitement des actions :**
81
87
 
82
- Ces exemples illustrent la flexibilité du système, qui peut être étendu avec d'autres types d'Interpreters selon les besoins.
88
+ - Exécute les actions en maintenant le bon ordre.
89
+ - Respecte les dépendances entre les actions.
90
+ - Gère les erreurs ou confirmations via des rappels.
83
91
 
84
- [![Sans-titre-2024-11-08-0220.png](https://i.postimg.cc/nryjsx5y/Sans-titre-2024-11-08-0220.png)](https://postimg.cc/rR9FbBqj)
92
+ 3. **Gestion des confirmations :**
93
+ - Prend en charge les invites de confirmation pour les actions critiques.
94
+ - S'appuie sur des rappels pour décider de poursuivre des actions spécifiques.
85
95
 
86
- ### Mémoire
96
+ **Exemple :**
87
97
 
88
- Le système implémente une architecture de mémoire qui combine différentes solutions de stockage :
98
+ ```typescript
99
+ import { ActionQueueManager } from "@ai-ntellect/core";
100
+ import { actions, callbacks } from "@ai-ntellect/core/examples";
89
101
 
90
- #### Installation et configuration
102
+ const queueManager = new ActionQueueManager(actions, callbacks);
103
+ queueManager.addToQueue([{ name: "fetch-data", parameters: [...] }]);
104
+ const results = await queueManager.processQueue();
105
+ console.log("Résultats :", results);
106
+ ```
91
107
 
92
- ##### Meilisearch (Mémoire à long terme)
108
+ ---
93
109
 
94
- Meilisearch peut être auto-hébergé pour un contrôle total sur la mémoire à long terme de l'agent :
110
+ ### Interpréteur
95
111
 
96
- ```bash
97
- # Installation de Meilisearch
98
- curl -L https://install.meilisearch.com | sh
112
+ L'**interpréteur** se spécialise dans l'analyse des résultats et la génération d'informations spécifiques à un domaine. Chaque interpréteur est adapté à un cas d'utilisation particulier et utilise sa propre configuration de caractère.
99
113
 
100
- # Lancement de Meilisearch avec une clé maître
101
- ./meilisearch --master-key="VOTRE_CLE_MAITRE"
102
- ```
114
+ **Exemples :**
103
115
 
104
- ##### Redis (Mémoire à court terme)
116
+ 1. **MarketInterpreter** : Analyse des données financières de marché.
117
+ 2. **SecurityInterpreter** : Vérification de la sécurité.
118
+ 3. **GeneralInterpreter** : Traitement des demandes générales.
105
119
 
106
- Redis gère les composants de mémoire à court terme :
120
+ #### Workflow d'interprétation
107
121
 
108
- ```bash
109
- # Utilisation de Docker
110
- docker run --name redis -d -p 6379:6379 redis
122
+ 1. Construit un contexte avec l'état actuel, y compris les résultats et les demandes utilisateur.
123
+ 2. Utilise le modèle de langage pour générer des informations exploitables.
124
+ 3. Fournit des réponses détaillées pour l'utilisateur final.
111
125
 
112
- # Ou installation locale
113
- sudo apt-get install redis-server
114
- ```
126
+ ---
115
127
 
116
- 2. **Configuration** :
117
- - Port par défaut : 6379
118
- - Configuration des limites de mémoire
119
- - Activation de la persistance si nécessaire
128
+ ### Système de mémoire
129
+
130
+ L'architecture mémoire combine une mémoire à court terme et une mémoire à long terme pour fournir un traitement contextuel.
120
131
 
121
132
  #### Types de mémoire
122
133
 
123
- ##### Mémoire à court terme (Redis)
134
+ 1. **Mémoire cache (Redis) :**
135
+ - Stocke des données temporaires pour un accès rapide.
136
+ - Exemples : Actions récentes, données de session.
137
+ 2. **Mémoire persistante (Meilisearch) :**
138
+ - Stocke des données à long terme comme les interactions historiques et les connaissances.
139
+ - Permet des recherches sémantiques et des récupérations basées sur des vecteurs.
124
140
 
125
- 1. **Mémoire procédurale** :
141
+ ---
126
142
 
127
- - Stockée dans Redis pour un accès rapide
128
- - Contient les séquences d'actions et workflows réutilisables
129
- - Optimise les performances via le cache
130
- - Exemple : "Séquence commune d'approbation + échange de tokens"
143
+ ### Listeners
131
144
 
132
- 2. **Mémoire épisodique court terme** :
133
- - Messages et interactions récents
134
- - Contexte temporaire des conversations en cours
135
- - Stockée dans Redis pour une récupération rapide
136
- - Exemple : "10 derniers messages de la conversation actuelle"
145
+ Les **listeners** permettent de se connecter à des événements externes via WebSocket. Ils écoutent les mises à jour en temps réel et déclenchent des actions ou des callbacks spécifiques en réponse aux événements.
137
146
 
138
- ##### Mémoire à long terme (Meilisearch)
147
+ **Caractéristiques principales :**
139
148
 
140
- 1. **Mémoire sémantique** :
149
+ - Connexion à des WebSockets pour écouter les événements.
150
+ - Gestion des abonnements avec des messages personnalisés.
151
+ - Déclenchement de callbacks pour traiter les données reçues.
141
152
 
142
- - Stockage permanent des faits et connaissances
143
- - Indexée pour une récupération efficace
144
- - Stocke les relations entre concepts
145
- - Exemple : "Le token X a l'adresse de contrat Y sur le réseau Z"
153
+ **Exemple d'utilisation :**
146
154
 
147
- 2. **Mémoire épisodique long terme** :
148
- - Interactions et expériences historiques
149
- - Contexte persistant entre les sessions
150
- - Recherchable par similarité vectorielle
151
- - Exemple : "Transactions réussies passées de l'utilisateur X"
155
+ ```typescript
156
+ agent.addListener(
157
+ "listener-id",
158
+ "wss://example.com/socket",
159
+ () => JSON.stringify({ action: "subscribe" }),
160
+ async (data) => {
161
+ console.log("Data reçue :", data);
162
+ }
163
+ );
164
+ ```
152
165
 
153
- ### Cache Augmented Generation (CAG)
166
+ ---
154
167
 
155
- Le CAG optimise l'exécution des workflows via le cache Redis :
168
+ ### Schedulers
156
169
 
157
- - **Rôle principal** : Mettre en cache les modèles procéduraux fréquemment utilisés
158
- - **Implémentation** :
170
+ Les **schedulers** permettent de planifier des tâches ou actions pour une exécution ultérieure. Ils utilisent des expressions cron pour définir les intervalles de planification.
159
171
 
160
- - Utilise Redis pour un stockage haute performance
161
- - Stocke les séquences d'actions et leurs résultats
162
- - Permet une récupération rapide des modèles communs
172
+ **Caractéristiques principales :**
163
173
 
164
- - **Bénéfices** :
165
- - Réduit la charge de calcul
166
- - Accélère les opérations répétitives
167
- - Optimise l'utilisation des ressources
174
+ - Planification basée sur des expressions cron.
175
+ - Support des tâches récurrentes et non récurrentes.
176
+ - Gestion et annulation des tâches planifiées.
168
177
 
169
- ### Retrieval Augmented Generation (RAG)
178
+ **Exemple d'utilisation :**
170
179
 
171
- Le système RAG améliore l'accès à la mémoire à long terme via Meilisearch :
180
+ ```typescript
181
+ const scheduler = new TaskScheduler(agentRuntime, redisCache);
172
182
 
173
- - **Implémentation** :
183
+ const taskId = await scheduler.scheduleRequest({
184
+ originalRequest: "Analyse de marché",
185
+ cronExpression: "0 9 * * *", // Tous les jours à 9h
186
+ });
174
187
 
175
- - Recherche vectorielle pour la similarité sémantique
176
- - Double indexation (globale et spécifique à l'utilisateur)
177
- - Combine avec la recherche textuelle traditionnelle
188
+ console.log(`Tâche planifiée avec ID : ${taskId}`);
178
189
 
179
- - **Fonctionnalités** :
180
- - Récupération de mémoire sémantique et épisodique
181
- - Capacités de recherche contextuelle
182
- - Classement des résultats basé sur la pertinence
190
+ // Annuler la tâche si nécessaire
191
+ scheduler.cancelScheduledRequest(taskId);
192
+ ```
183
193
 
184
194
  ---
185
195
 
186
- ## 2. Création et gestion des actions
196
+ ## Définir et exécuter des actions
197
+
198
+ ### Qu'est-ce qu'une action ?
187
199
 
188
- Les actions sont des tâches spécifiques à réaliser dans le cadre du workflow. Elles peuvent être des interactions avec des APIs, des transactions blockchain, ou toute autre opération nécessaire.
200
+ Les actions sont les tâches fondamentales exécutées par le framework. Chaque action comprend :
189
201
 
190
- Chaque action est définie comme un objet contenant un nom, une description, des paramètres, et une fonction d'exécution.
202
+ - Un nom et une description uniques.
203
+ - Des paramètres d'entrée validés à l'aide de schémas.
204
+ - Une logique d'exécution encapsulée dans la méthode `execute`.
191
205
 
192
206
  ### Exemple d'action
193
207
 
194
208
  ```typescript
195
- import { networkConfigs } from "@config/network";
196
- import { parseEther } from "ethers";
197
209
  import { z } from "zod";
210
+ import { parseEther } from "ethers";
198
211
 
199
212
  export const prepareTransaction = {
200
213
  name: "prepare-transaction",
201
- description: "Préparer un transfert pour que l'utilisateur la signe.",
214
+ description: "Prépare un transfert de token pour approbation utilisateur.",
202
215
  parameters: z.object({
203
216
  walletAddress: z.string(),
204
- amount: z.string().describe("Montant à envoyer"),
205
- networkId: z
206
- .string()
207
- .describe("Réseau cible (par exemple, ethereum, arbitrum)"),
217
+ amount: z.string(),
218
+ networkId: z.string(),
208
219
  }),
209
- execute: async ({
210
- walletAddress,
211
- amount,
212
- network,
213
- }: {
214
- walletAddress: string;
215
- amount: string;
216
- networkId: string;
217
- }) => {
218
- try {
219
- const networkConfig = networkConfigs[networkId];
220
- if (!networkConfig) {
221
- throw new Error(`Réseau ${network} non trouvé`);
222
- }
223
-
224
- return {
225
- to: walletAddress,
226
- value: parseEther(amount).toString(),
227
- chain: {
228
- id: networkConfig.id,
229
- rpc: networkConfig.rpc,
230
- },
231
- type: "transfer",
232
- };
233
- } catch (error) {
234
- return "Erreur lors de la préparation de la transaction";
235
- }
220
+ execute: async ({ walletAddress, amount, networkId }) => {
221
+ return {
222
+ to: walletAddress,
223
+ value: parseEther(amount).toString(),
224
+ network: networkId,
225
+ };
236
226
  },
237
227
  };
238
228
  ```
239
229
 
240
- ### Comment définir une action :
241
-
242
- 1. **Nom** : Identifiant unique pour l'action.
243
- 2. **Description** : Brève description de ce que fait l'action.
244
- 3. **Paramètres** : Les paramètres nécessaires pour l'exécution de l'action, validés par `zod`.
245
- 4. **Exécution** : Fonction `execute` qui effectue l'action.
246
-
247
230
  ---
248
231
 
249
- ## 3. Exécution du workflow
232
+ ## Gestion de l'état et récursivité
250
233
 
251
- L'agent gère l'ensemble du processus de compréhension des requêtes utilisateur et de coordination des réponses. Voici un exemple d'utilisation de l'agent :
234
+ L'agent gère l'état et les workflows récursifs pour s'assurer que les actions sont exécutées de manière ordonnée et jusqu'à leur achèvement, tout en respectant un maximum d'itérations pour éviter les boucles infinies.
252
235
 
253
- ```typescript
254
- const memory = new PersistentMemory({
255
- host: "http://localhost:7700",
256
- apiKey: "VOTRE_CLE_API",
257
- });
236
+ ### Gestion de l'état
258
237
 
259
- const orchestrator = new Orchestrator(
260
- [
261
- getChainsTVL,
262
- getRssNews,
263
- // autres outils...
264
- ],
265
- memory
266
- );
238
+ L'état (`State`) contient :
267
239
 
268
- const agent = new Agent({
269
- user: { id: "user_id" },
270
- orchestrator,
271
- persistentMemory: memory,
272
- stream: false,
273
- maxEvaluatorIteration: 1,
274
- });
240
+ - `currentContext` : Contexte actuel de la requête utilisateur.
241
+ - `previousActions` : Liste des actions exécutées précédemment.
275
242
 
276
- // Traitement d'une requête utilisateur
277
- const result = await agent.process(prompt, context, {
278
- onMessage: (message) => {
279
- console.log({ message });
280
- },
281
- });
282
- ```
243
+ Lorsqu'une action est terminée, l'état est mis à jour pour inclure :
283
244
 
284
- ### Flux de traitement de l'agent :
245
+ - Les résultats des actions précédentes.
246
+ - Le contexte restant à traiter.
285
247
 
286
- 1. L'utilisateur envoie un prompt
287
- 2. L'agent analyse le prompt et le contexte
288
- 3. L'orchestrateur exécute les outils/actions nécessaires
289
- 4. L'évaluateur évalue les résultats
290
- 5. L'agent génère la réponse finale
248
+ ### Récursivité contrôlée
291
249
 
292
- ---
250
+ Pour éviter les boucles infinies, le système limite le nombre d'itérations via la configuration `maxIterations`.
293
251
 
294
- ## 4. WIP (Work in Progress)
252
+ **Fonctionnement :**
295
253
 
296
- Voici les éléments actuellement en développement ou à améliorer :
254
+ 1. **Initialisation :** À chaque itération, l'agent :
297
255
 
298
- ---
256
+ - Exécute les actions dans la file d'attente.
257
+ - Met à jour l'état avec les nouveaux résultats.
299
258
 
300
- ## Collaboration multi-agent
259
+ 2. **Validation des limites :**
301
260
 
302
- **Objectif** : Permettre à plusieurs agents de collaborer sur des tâches complexes avec spécialisation et coordination.
261
+ - Si le nombre d'itérations dépasse `maxIterations`, le traitement est interrompu avec un message "Max iterations reached".
303
262
 
304
- **Intérêt** : La collaboration entre agents permet de diviser les tâches complexes en sous-tâches spécialisées, améliorant ainsi l'efficacité et la qualité des résultats. Elle permet également une meilleure gestion des ressources et une adaptation plus rapide aux changements.
263
+ 3. **Récursivité :**
264
+ - Si des actions restent à exécuter, l'agent appelle récursivement la méthode `process` avec le nouvel état.
305
265
 
306
- **Étapes à réaliser** :
266
+ **Exemple de gestion d'état et récursivité :**
307
267
 
308
- - [ ] Mise en place d'un cadre de délégation des tâches.
309
- - [ ] Gestion partagée du contexte.
310
- - [ ] Établissement de protocoles de résolution des conflits.
268
+ ```typescript
269
+ const updatedNextState: State = {
270
+ ...state,
271
+ currentContext: state.currentContext,
272
+ previousActions: [...(state.previousActions || []), ...(results || [])],
273
+ };
311
274
 
312
- **Statut** : Phase de recherche, planification architecturale en cours.
275
+ if (countIterations < this.config.maxIterations) {
276
+ return this.process(updatedNextState);
277
+ } else {
278
+ console.log("Max iterations reached");
279
+ response.shouldContinue = false;
280
+ }
281
+ ```
313
282
 
314
283
  ---
315
284
 
316
- ## Gestion des interactions complexes on-chain
317
-
318
- **Objectif** : Créer un modèle pour la reconnaissance des interactions on-chain et la création de workflows pour des interactions complexes.
285
+ ## Installation et configuration
319
286
 
320
- **Intérêt** : Cette fonctionnalité permet à l'agent de comprendre et d'interagir avec des contrats intelligents de manière plus intuitive, facilitant ainsi l'exécution d'actions complexes sur la blockchain. Cela améliore l'accessibilité et l'efficacité des interactions avec les contrats intelligents.
287
+ ### Installer les dépendances
321
288
 
322
- **Étapes à réaliser** :
323
-
324
- - [ ] Extraction et traitement des ABI des contrats pertinents.
325
- - [ ] Filtrage des fonctions pertinentes.
326
- - [ ] Génération de requêtes hypothétiques en langage naturel.
327
- - [ ] Conversion des requêtes en embeddings vectoriels.
328
- - [ ] Stockage des embeddings et des requêtes associées.
329
- - [ ] Recherche de similarité basée sur le cosine.
330
- - [ ] Classement des résultats en fonction de la pertinence.
289
+ ```bash
290
+ npm install
291
+ ```
331
292
 
332
- **Statut** : Étude en cours pour déterminer la meilleure approche et les technologies à utiliser.
293
+ ### Configurer les services externes
333
294
 
334
- ---
295
+ #### Redis (Mémoire cache)
335
296
 
336
- ## Implémentation du Lit Protocol
337
-
338
- **Objectif** : Ajouter la possibilité d'exécuter des actions Lit, permettant de déployer et d'exécuter des calculs décentralisés et sécurisés sur le réseau Lit.
297
+ ```bash
298
+ docker run --name redis -d -p 6379:6379 redis
299
+ ```
339
300
 
340
- **Intérêt** : L'intégration du Lit Protocol permet d'exécuter des actions Lit de manière décentralisée, en utilisant des clés cryptographiques pour valider les opérations. Ces actions peuvent être utilisées pour exécuter des scripts JavaScript dans un environnement décentralisé, ce qui permet une grande transparence, car toutes les interactions sont enregistrées sur la blockchain. L'un des principaux avantages réside dans l'automatisation et la sécurité des processus tout en préservant la confidentialité des utilisateurs, ce qui renforce la confiance dans les interactions on-chain.
301
+ #### Meilisearch (Mémoire persistante)
341
302
 
342
- **Étapes à réaliser** :
303
+ ```bash
304
+ curl -L https://install.meilisearch.com | sh
305
+ ./meilisearch --master-key="VOTRE_CLÉ_MAÎTRE"
306
+ ```
343
307
 
344
- - [x] Étudier la documentation du Lit Protocol, en particulier la section sur les actions Lit et leur mise en œuvre.
345
- - [ ] Intégrer le protocole dans l'architecture existante pour permettre l'exécution des actions Lit.
346
- - [ ] Développer des modules pour l'exécution des actions Lit, incluant la gestion des signatures et l'exécution des scripts dans un environnement sécurisé.
347
- - [ ] Tester l'intégration, la sécurité et la transparence des actions Lit pour garantir leur bon fonctionnement.
308
+ ---
348
309
 
349
- **Statut** : En cours d'étude pour déterminer la faisabilité et les implications techniques, notamment en ce qui concerne l'intégration de la décentralisation dans le système existant.
310
+ ## Exemple d'utilisation
350
311
 
351
- ### Exemple d'utilisation
312
+ ### Initialiser l'agent
352
313
 
353
314
  ```typescript
354
- const securityInterpreter = new Interpreter("security", securityContext);
355
- const marketInterpreter = new Interpreter("market", marketContext);
356
- const generalInterpreter = new Interpreter("general", generalContext);
315
+ import { deepseek } from "@ai-ntellect/core";
316
+ import { Agent } from "@ai-ntellect/core";
317
+ import { checkHoneypot, fetchMarkPrice } from "@ai-ntellect/core/actions";
318
+ import {
319
+ generalInterpreterCharacter,
320
+ marketInterpreterCharacter,
321
+ securityInterpreterCharacter,
322
+ } from "@ai-ntellect/core/interpreter/context";
323
+
324
+ const model = deepseek("deepseek-reasoner");
357
325
 
358
326
  const agent = new Agent({
359
- interpreters: [securityInterpreter, marketInterpreter, generalInterpreter],
360
- orchestrator,
361
- memory: {
362
- persistent: memory,
363
- cache: cacheMemory,
327
+ orchestrator: {
328
+ model,
329
+ tools: [checkHoneypot, fetchMarkPrice],
330
+ },
331
+ interpreters: [
332
+ new Interpreter({
333
+ name: "security",
334
+ model,
335
+ character: securityInterpreterCharacter,
336
+ }),
337
+ new Interpreter({
338
+ name: "market",
339
+ model,
340
+ character: marketInterpreterCharacter,
341
+ }),
342
+ new Interpreter({
343
+ name: "general",
344
+ model,
345
+ character: generalInterpreterCharacter,
346
+ }),
347
+ ],
348
+ memoryManager: {
349
+ model,
364
350
  },
365
- stream: false,
366
- maxEvaluatorIteration: 1,
351
+ maxIterations: 3,
367
352
  });
353
+ ```
354
+
355
+ ### Traiter une demande
356
+
357
+ ```typescript
358
+ const state = {
359
+ currentContext: "Analyse des tendances de marché XRP/USD",
360
+ previousActions: [],
361
+ };
368
362
 
369
- const result = await agent.process(prompt, context);
363
+ const result = await agent.process(state);
364
+ console.log("Résultat :", result);
370
365
  ```