@ai.ntellect/core 0.3.3 → 0.4.0

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 +201 -261
  3. package/README.md +208 -260
  4. package/agent/index.ts +199 -216
  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,310 @@
1
1
  # AI.ntellect Core Framework
2
2
 
3
- ## Table des matières
4
-
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)
15
-
16
- ---
17
-
18
- ## 1. Composants principaux
3
+ ## Vue d'ensemble
19
4
 
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.
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 :
21
6
 
22
- ### Orchestrator
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.
23
11
 
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.
25
-
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.
12
+ ---
31
13
 
32
- ### Queue Manager
14
+ ## Table des matières
33
15
 
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.
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
+ 2. [Définir et exécuter des actions](#définir-et-exécuter-des-actions)
23
+ 3. [Gestion de l'état et récursivité](#gestion-de-letat-et-recursivité)
24
+ 4. [Installation et configuration](#installation-et-configuration)
25
+ 5. [Exemple d'utilisation](#exemple-dutilisation)
26
+ 6. [Travaux en cours (WIP)](#travaux-en-cours-wip)
35
27
 
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.
28
+ ---
41
29
 
42
- ### Évaluateur
30
+ ## Composants d'architecture
43
31
 
44
- L'évaluateur collabore maintenant avec les Interpreters :
32
+ ### Runtime de l'agent
45
33
 
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
34
+ 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.
49
35
 
50
- ### Interpreter
36
+ **Responsabilités :**
51
37
 
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.
38
+ - Construire un contexte pour l'état actuel à l'aide des systèmes de mémoire (RAG et CAG).
39
+ - Orchestrer les actions à l'aide du gestionnaire de file d'attente.
40
+ - Exploiter les interpréteurs pour analyser les résultats et générer des réponses.
53
41
 
54
- **Caractéristiques principales** :
42
+ #### Construction du contexte
55
43
 
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
44
+ La méthode `buildContext` crée un contexte complet en :
59
45
 
60
- **Fonctionnement** :
46
+ 1. Ajoutant les outils et les demandes utilisateur.
47
+ 2. Récupérant les actions récentes via la mémoire cache (CAG).
48
+ 3. Cherchant les connaissances pertinentes dans la mémoire persistante (RAG).
49
+ 4. Incluant les interpréteurs disponibles pour la demande.
61
50
 
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
51
+ #### Traitement des workflows
65
52
 
66
- Voici quelques exemples d'Interpreters qui peuvent être implémentés :
53
+ La méthode `process` :
67
54
 
68
- 1. **MarketInterpreter**
55
+ 1. Génère des réponses basées sur le contexte à l'aide d'un modèle de langage.
56
+ 2. Gère les workflows récursifs pour l'exécution des actions.
57
+ 3. Sélectionne les interpréteurs appropriés pour analyser les résultats.
69
58
 
70
- - Spécialisé dans l'analyse des données de marché
71
- - Format adapté aux analyses financières
59
+ ---
72
60
 
73
- 2. **SecurityInterpreter**
61
+ ### Orchestrateur
74
62
 
75
- - Dédié aux vérifications de sécurité
76
- - Format optimisé pour les rapports de sécurité
63
+ 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.
77
64
 
78
- 3. **GeneralInterpreter**
79
- - Traitement des requêtes générales
80
- - Format flexible selon le contexte
65
+ **Caractéristiques clés :**
81
66
 
82
- Ces exemples illustrent la flexibilité du système, qui peut être étendu avec d'autres types d'Interpreters selon les besoins.
67
+ - Sélection dynamique des actions en fonction du contexte.
68
+ - Gestion des interactions mémoire pour les opérations RAG et CAG.
69
+ - Gestion des workflows multi-étapes avec affinage itératif.
83
70
 
84
- [![Sans-titre-2024-11-08-0220.png](https://i.postimg.cc/nryjsx5y/Sans-titre-2024-11-08-0220.png)](https://postimg.cc/rR9FbBqj)
71
+ ---
85
72
 
86
- ### Mémoire
73
+ ### Gestionnaire de file d'attente
87
74
 
88
- Le système implémente une architecture de mémoire qui combine différentes solutions de stockage :
75
+ 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.
89
76
 
90
- #### Installation et configuration
77
+ **Responsabilités principales :**
91
78
 
92
- ##### Meilisearch (Mémoire à long terme)
79
+ 1. **Mise en file d'attente des actions :**
93
80
 
94
- Meilisearch peut être auto-hébergé pour un contrôle total sur la mémoire à long terme de l'agent :
81
+ - Les actions sont ajoutées à une file pour exécution, individuellement ou en lot.
82
+ - Prise en charge des journaux pour le débogage et la traçabilité.
95
83
 
96
- ```bash
97
- # Installation de Meilisearch
98
- curl -L https://install.meilisearch.com | sh
84
+ 2. **Traitement des actions :**
99
85
 
100
- # Lancement de Meilisearch avec une clé maître
101
- ./meilisearch --master-key="VOTRE_CLE_MAITRE"
102
- ```
86
+ - Exécute les actions en maintenant le bon ordre.
87
+ - Respecte les dépendances entre les actions.
88
+ - Gère les erreurs ou confirmations via des rappels.
103
89
 
104
- ##### Redis (Mémoire à court terme)
90
+ 3. **Gestion des confirmations :**
91
+ - Prend en charge les invites de confirmation pour les actions critiques.
92
+ - S'appuie sur des rappels pour décider de poursuivre des actions spécifiques.
105
93
 
106
- Redis gère les composants de mémoire à court terme :
94
+ **Exemple :**
107
95
 
108
- ```bash
109
- # Utilisation de Docker
110
- docker run --name redis -d -p 6379:6379 redis
96
+ ```typescript
97
+ import { ActionQueueManager } from "@ai-ntellect/core";
98
+ import { actions, callbacks } from "@ai-ntellect/core/examples";
111
99
 
112
- # Ou installation locale
113
- sudo apt-get install redis-server
100
+ const queueManager = new ActionQueueManager(actions, callbacks);
101
+ queueManager.addToQueue([{ name: "fetch-data", parameters: [...] }]);
102
+ const results = await queueManager.processQueue();
103
+ console.log("Résultats :", results);
114
104
  ```
115
105
 
116
- 2. **Configuration** :
117
- - Port par défaut : 6379
118
- - Configuration des limites de mémoire
119
- - Activation de la persistance si nécessaire
120
-
121
- #### Types de mémoire
122
-
123
- ##### Mémoire à court terme (Redis)
124
-
125
- 1. **Mémoire procédurale** :
126
-
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"
131
-
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"
137
-
138
- ##### Mémoire à long terme (Meilisearch)
139
-
140
- 1. **Mémoire sémantique** :
141
-
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"
106
+ ---
146
107
 
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"
108
+ ### Interpréteur
152
109
 
153
- ### Cache Augmented Generation (CAG)
110
+ 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.
154
111
 
155
- Le CAG optimise l'exécution des workflows via le cache Redis :
112
+ **Exemples :**
156
113
 
157
- - **Rôle principal** : Mettre en cache les modèles procéduraux fréquemment utilisés
158
- - **Implémentation** :
114
+ 1. **MarketInterpreter** : Analyse des données financières de marché.
115
+ 2. **SecurityInterpreter** : Vérification de la sécurité.
116
+ 3. **GeneralInterpreter** : Traitement des demandes générales.
159
117
 
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
118
+ #### Workflow d'interprétation
163
119
 
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
120
+ 1. Construit un contexte avec l'état actuel, y compris les résultats et les demandes utilisateur.
121
+ 2. Utilise le modèle de langage pour générer des informations exploitables.
122
+ 3. Fournit des réponses détaillées pour l'utilisateur final.
168
123
 
169
- ### Retrieval Augmented Generation (RAG)
124
+ ---
170
125
 
171
- Le système RAG améliore l'accès à la mémoire à long terme via Meilisearch :
126
+ ### Système de mémoire
172
127
 
173
- - **Implémentation** :
128
+ L'architecture mémoire combine une mémoire à court terme et une mémoire à long terme pour fournir un traitement contextuel.
174
129
 
175
- - Recherche vectorielle pour la similarité sémantique
176
- - Double indexation (globale et spécifique à l'utilisateur)
177
- - Combine avec la recherche textuelle traditionnelle
130
+ #### Types de mémoire
178
131
 
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
132
+ 1. **Mémoire cache (Redis) :**
133
+ - Stocke des données temporaires pour un accès rapide.
134
+ - Exemples : Actions récentes, données de session.
135
+ 2. **Mémoire persistante (Meilisearch) :**
136
+ - Stocke des données à long terme comme les interactions historiques et les connaissances.
137
+ - Permet des recherches sémantiques et des récupérations basées sur des vecteurs.
183
138
 
184
139
  ---
185
140
 
186
- ## 2. Création et gestion des actions
141
+ ## Définir et exécuter des actions
142
+
143
+ ### Qu'est-ce qu'une action ?
187
144
 
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.
145
+ Les actions sont les tâches fondamentales exécutées par le framework. Chaque action comprend :
189
146
 
190
- Chaque action est définie comme un objet contenant un nom, une description, des paramètres, et une fonction d'exécution.
147
+ - Un nom et une description uniques.
148
+ - Des paramètres d'entrée validés à l'aide de schémas.
149
+ - Une logique d'exécution encapsulée dans la méthode `execute`.
191
150
 
192
151
  ### Exemple d'action
193
152
 
194
153
  ```typescript
195
- import { networkConfigs } from "@config/network";
196
- import { parseEther } from "ethers";
197
154
  import { z } from "zod";
155
+ import { parseEther } from "ethers";
198
156
 
199
157
  export const prepareTransaction = {
200
158
  name: "prepare-transaction",
201
- description: "Préparer un transfert pour que l'utilisateur la signe.",
159
+ description: "Prépare un transfert de token pour approbation utilisateur.",
202
160
  parameters: z.object({
203
161
  walletAddress: z.string(),
204
- amount: z.string().describe("Montant à envoyer"),
205
- networkId: z
206
- .string()
207
- .describe("Réseau cible (par exemple, ethereum, arbitrum)"),
162
+ amount: z.string(),
163
+ networkId: z.string(),
208
164
  }),
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
- }
165
+ execute: async ({ walletAddress, amount, networkId }) => {
166
+ return {
167
+ to: walletAddress,
168
+ value: parseEther(amount).toString(),
169
+ network: networkId,
170
+ };
236
171
  },
237
172
  };
238
173
  ```
239
174
 
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
175
  ---
248
176
 
249
- ## 3. Exécution du workflow
177
+ ## Gestion de l'état et récursivité
250
178
 
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 :
179
+ 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
180
 
253
- ```typescript
254
- const memory = new PersistentMemory({
255
- host: "http://localhost:7700",
256
- apiKey: "VOTRE_CLE_API",
257
- });
181
+ ### Gestion de l'état
258
182
 
259
- const orchestrator = new Orchestrator(
260
- [
261
- getChainsTVL,
262
- getRssNews,
263
- // autres outils...
264
- ],
265
- memory
266
- );
183
+ L'état (`State`) contient :
267
184
 
268
- const agent = new Agent({
269
- user: { id: "user_id" },
270
- orchestrator,
271
- persistentMemory: memory,
272
- stream: false,
273
- maxEvaluatorIteration: 1,
274
- });
185
+ - `currentContext` : Contexte actuel de la requête utilisateur.
186
+ - `previousActions` : Liste des actions exécutées précédemment.
275
187
 
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
- ```
188
+ Lorsqu'une action est terminée, l'état est mis à jour pour inclure :
283
189
 
284
- ### Flux de traitement de l'agent :
190
+ - Les résultats des actions précédentes.
191
+ - Le contexte restant à traiter.
285
192
 
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
193
+ ### Récursivité contrôlée
291
194
 
292
- ---
195
+ Pour éviter les boucles infinies, le système limite le nombre d'itérations via la configuration `maxIterations`.
293
196
 
294
- ## 4. WIP (Work in Progress)
197
+ **Fonctionnement :**
295
198
 
296
- Voici les éléments actuellement en développement ou à améliorer :
199
+ 1. **Initialisation :** À chaque itération, l'agent :
297
200
 
298
- ---
201
+ - Exécute les actions dans la file d'attente.
202
+ - Met à jour l'état avec les nouveaux résultats.
299
203
 
300
- ## Collaboration multi-agent
204
+ 2. **Validation des limites :**
301
205
 
302
- **Objectif** : Permettre à plusieurs agents de collaborer sur des tâches complexes avec spécialisation et coordination.
206
+ - Si le nombre d'itérations dépasse `maxIterations`, le traitement est interrompu avec un message "Max iterations reached".
303
207
 
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.
208
+ 3. **Récursivité :**
209
+ - Si des actions restent à exécuter, l'agent appelle récursivement la méthode `process` avec le nouvel état.
305
210
 
306
- **Étapes à réaliser** :
211
+ **Exemple de gestion d'état et récursivité :**
307
212
 
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.
213
+ ```typescript
214
+ const updatedNextState: State = {
215
+ ...state,
216
+ currentContext: state.currentContext,
217
+ previousActions: [...(state.previousActions || []), ...(results || [])],
218
+ };
311
219
 
312
- **Statut** : Phase de recherche, planification architecturale en cours.
220
+ if (countIterations < this.config.maxIterations) {
221
+ return this.process(updatedNextState);
222
+ } else {
223
+ console.log("Max iterations reached");
224
+ response.shouldContinue = false;
225
+ }
226
+ ```
313
227
 
314
228
  ---
315
229
 
316
- ## Gestion des interactions complexes on-chain
230
+ ## Installation et configuration
317
231
 
318
- **Objectif** : Créer un modèle pour la reconnaissance des interactions on-chain et la création de workflows pour des interactions complexes.
232
+ ### Installer les dépendances
319
233
 
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.
321
-
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.
331
-
332
- **Statut** : Étude en cours pour déterminer la meilleure approche et les technologies à utiliser.
234
+ ```bash
235
+ npm install
236
+ ```
333
237
 
334
- ---
238
+ ### Configurer les services externes
335
239
 
336
- ## Implémentation du Lit Protocol
240
+ #### Redis (Mémoire cache)
337
241
 
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.
242
+ ```bash
243
+ docker run --name redis -d -p 6379:6379 redis
244
+ ```
339
245
 
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.
246
+ #### Meilisearch (Mémoire persistante)
341
247
 
342
- **Étapes à réaliser** :
248
+ ```bash
249
+ curl -L https://install.meilisearch.com | sh
250
+ ./meilisearch --master-key="VOTRE_CLÉ_MAÎTRE"
251
+ ```
343
252
 
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.
253
+ ---
348
254
 
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.
255
+ ## Exemple d'utilisation
350
256
 
351
- ### Exemple d'utilisation
257
+ ### Initialiser l'agent
352
258
 
353
259
  ```typescript
354
- const securityInterpreter = new Interpreter("security", securityContext);
355
- const marketInterpreter = new Interpreter("market", marketContext);
356
- const generalInterpreter = new Interpreter("general", generalContext);
260
+ import { deepseek } from "@ai-ntellect/core";
261
+ import { Agent } from "@ai-ntellect/core";
262
+ import { checkHoneypot, fetchMarkPrice } from "@ai-ntellect/core/actions";
263
+ import {
264
+ generalInterpreterCharacter,
265
+ marketInterpreterCharacter,
266
+ securityInterpreterCharacter,
267
+ } from "@ai-ntellect/core/interpreter/context";
268
+
269
+ const model = deepseek("deepseek-reasoner");
357
270
 
358
271
  const agent = new Agent({
359
- interpreters: [securityInterpreter, marketInterpreter, generalInterpreter],
360
- orchestrator,
361
- memory: {
362
- persistent: memory,
363
- cache: cacheMemory,
272
+ orchestrator: {
273
+ model,
274
+ tools: [checkHoneypot, fetchMarkPrice],
275
+ },
276
+ interpreters: [
277
+ new Interpreter({
278
+ name: "security",
279
+ model,
280
+ character: securityInterpreterCharacter,
281
+ }),
282
+ new Interpreter({
283
+ name: "market",
284
+ model,
285
+ character: marketInterpreterCharacter,
286
+ }),
287
+ new Interpreter({
288
+ name: "general",
289
+ model,
290
+ character: generalInterpreterCharacter,
291
+ }),
292
+ ],
293
+ memoryManager: {
294
+ model,
364
295
  },
365
- stream: false,
366
- maxEvaluatorIteration: 1,
296
+ maxIterations: 3,
367
297
  });
298
+ ```
299
+
300
+ ### Traiter une demande
301
+
302
+ ```typescript
303
+ const state = {
304
+ currentContext: "Analyse des tendances de marché XRP/USD",
305
+ previousActions: [],
306
+ };
368
307
 
369
- const result = await agent.process(prompt, context);
308
+ const result = await agent.process(state);
309
+ console.log("Résultat :", result);
370
310
  ```