@ai.ntellect/core 0.3.1 → 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.
- package/.nvmrc +1 -0
- package/README.FR.md +201 -261
- package/README.md +208 -260
- package/agent/index.ts +204 -185
- package/agent/tools/get-rss.ts +64 -0
- package/bull.ts +5 -0
- package/dist/agent/index.d.ts +29 -22
- package/dist/agent/index.js +124 -97
- package/dist/agent/tools/get-rss.d.ts +16 -0
- package/dist/agent/tools/get-rss.js +62 -0
- package/dist/bull.d.ts +1 -0
- package/dist/bull.js +9 -0
- package/dist/examples/index.d.ts +2 -0
- package/dist/examples/index.js +89 -0
- package/dist/llm/interpreter/context.d.ts +5 -22
- package/dist/llm/interpreter/context.js +8 -9
- package/dist/llm/interpreter/index.d.ts +9 -5
- package/dist/llm/interpreter/index.js +55 -48
- package/dist/llm/memory-manager/context.d.ts +2 -0
- package/dist/llm/memory-manager/context.js +22 -0
- package/dist/llm/memory-manager/index.d.ts +17 -0
- package/dist/llm/memory-manager/index.js +107 -0
- package/dist/llm/orchestrator/context.d.ts +2 -10
- package/dist/llm/orchestrator/context.js +19 -16
- package/dist/llm/orchestrator/index.d.ts +36 -21
- package/dist/llm/orchestrator/index.js +122 -88
- package/dist/llm/orchestrator/types.d.ts +12 -0
- package/dist/llm/orchestrator/types.js +2 -0
- package/dist/memory/cache.d.ts +6 -6
- package/dist/memory/cache.js +35 -42
- package/dist/memory/persistent.d.ts +9 -13
- package/dist/memory/persistent.js +94 -114
- package/dist/services/redis-cache.d.ts +37 -0
- package/dist/services/redis-cache.js +93 -0
- package/dist/services/scheduler.d.ts +40 -0
- package/dist/services/scheduler.js +99 -0
- package/dist/services/telegram-monitor.d.ts +0 -0
- package/dist/services/telegram-monitor.js +118 -0
- package/dist/test.d.ts +0 -167
- package/dist/test.js +437 -372
- package/dist/types.d.ts +60 -9
- package/dist/utils/generate-object.d.ts +12 -0
- package/dist/utils/generate-object.js +90 -0
- package/dist/utils/header-builder.d.ts +11 -0
- package/dist/utils/header-builder.js +34 -0
- package/dist/utils/inject-actions.js +2 -2
- package/dist/utils/queue-item-transformer.d.ts +2 -2
- package/dist/utils/schema-generator.d.ts +16 -0
- package/dist/utils/schema-generator.js +46 -0
- package/examples/index.ts +103 -0
- package/llm/interpreter/context.ts +20 -8
- package/llm/interpreter/index.ts +81 -54
- package/llm/memory-manager/context.ts +21 -0
- package/llm/memory-manager/index.ts +163 -0
- package/llm/orchestrator/context.ts +20 -13
- package/llm/orchestrator/index.ts +210 -130
- package/llm/orchestrator/types.ts +14 -0
- package/memory/cache.ts +41 -55
- package/memory/persistent.ts +121 -149
- package/package.json +11 -2
- package/services/redis-cache.ts +128 -0
- package/services/scheduler.ts +128 -0
- package/services/telegram-monitor.ts +138 -0
- package/t.py +79 -0
- package/t.spec +38 -0
- package/types.ts +64 -9
- package/utils/generate-object.ts +105 -0
- package/utils/header-builder.ts +40 -0
- package/utils/inject-actions.ts +4 -6
- package/utils/queue-item-transformer.ts +2 -1
- package/utils/schema-generator.ts +73 -0
- package/agent/handlers/ActionHandler.ts +0 -48
- package/agent/handlers/ConfirmationHandler.ts +0 -37
- package/agent/handlers/EventHandler.ts +0 -35
- package/dist/agent/handlers/ActionHandler.d.ts +0 -8
- package/dist/agent/handlers/ActionHandler.js +0 -36
- package/dist/agent/handlers/ConfirmationHandler.d.ts +0 -7
- package/dist/agent/handlers/ConfirmationHandler.js +0 -31
- package/dist/agent/handlers/EventHandler.d.ts +0 -10
- package/dist/agent/handlers/EventHandler.js +0 -34
- package/dist/llm/evaluator/context.d.ts +0 -10
- package/dist/llm/evaluator/context.js +0 -22
- package/dist/llm/evaluator/index.d.ts +0 -16
- package/dist/llm/evaluator/index.js +0 -151
- package/llm/evaluator/context.ts +0 -21
- package/llm/evaluator/index.ts +0 -194
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
|
-
##
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
14
|
+
## Table des matières
|
33
15
|
|
34
|
-
|
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
|
-
|
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
|
-
|
30
|
+
## Composants d'architecture
|
43
31
|
|
44
|
-
|
32
|
+
### Runtime de l'agent
|
45
33
|
|
46
|
-
|
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
|
-
|
36
|
+
**Responsabilités :**
|
51
37
|
|
52
|
-
|
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
|
-
|
42
|
+
#### Construction du contexte
|
55
43
|
|
56
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
53
|
+
La méthode `process` :
|
67
54
|
|
68
|
-
1.
|
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
|
-
|
71
|
-
- Format adapté aux analyses financières
|
59
|
+
---
|
72
60
|
|
73
|
-
|
61
|
+
### Orchestrateur
|
74
62
|
|
75
|
-
|
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
|
-
|
79
|
-
- Traitement des requêtes générales
|
80
|
-
- Format flexible selon le contexte
|
65
|
+
**Caractéristiques clés :**
|
81
66
|
|
82
|
-
|
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
|
-
|
71
|
+
---
|
85
72
|
|
86
|
-
###
|
73
|
+
### Gestionnaire de file d'attente
|
87
74
|
|
88
|
-
Le
|
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
|
-
|
77
|
+
**Responsabilités principales :**
|
91
78
|
|
92
|
-
|
79
|
+
1. **Mise en file d'attente des actions :**
|
93
80
|
|
94
|
-
|
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
|
-
|
97
|
-
# Installation de Meilisearch
|
98
|
-
curl -L https://install.meilisearch.com | sh
|
84
|
+
2. **Traitement des actions :**
|
99
85
|
|
100
|
-
|
101
|
-
|
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
|
-
|
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
|
-
|
94
|
+
**Exemple :**
|
107
95
|
|
108
|
-
```
|
109
|
-
|
110
|
-
|
96
|
+
```typescript
|
97
|
+
import { ActionQueueManager } from "@ai-ntellect/core";
|
98
|
+
import { actions, callbacks } from "@ai-ntellect/core/examples";
|
111
99
|
|
112
|
-
|
113
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
112
|
+
**Exemples :**
|
156
113
|
|
157
|
-
|
158
|
-
|
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
|
-
|
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
|
-
|
165
|
-
|
166
|
-
|
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
|
-
|
124
|
+
---
|
170
125
|
|
171
|
-
|
126
|
+
### Système de mémoire
|
172
127
|
|
173
|
-
|
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
|
-
|
176
|
-
- Double indexation (globale et spécifique à l'utilisateur)
|
177
|
-
- Combine avec la recherche textuelle traditionnelle
|
130
|
+
#### Types de mémoire
|
178
131
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
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
|
-
##
|
141
|
+
## Définir et exécuter des actions
|
142
|
+
|
143
|
+
### Qu'est-ce qu'une action ?
|
187
144
|
|
188
|
-
Les actions sont
|
145
|
+
Les actions sont les tâches fondamentales exécutées par le framework. Chaque action comprend :
|
189
146
|
|
190
|
-
|
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: "
|
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()
|
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
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
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
|
-
##
|
177
|
+
## Gestion de l'état et récursivité
|
250
178
|
|
251
|
-
L'agent gère l'
|
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
|
-
|
254
|
-
const memory = new PersistentMemory({
|
255
|
-
host: "http://localhost:7700",
|
256
|
-
apiKey: "VOTRE_CLE_API",
|
257
|
-
});
|
181
|
+
### Gestion de l'état
|
258
182
|
|
259
|
-
|
260
|
-
[
|
261
|
-
getChainsTVL,
|
262
|
-
getRssNews,
|
263
|
-
// autres outils...
|
264
|
-
],
|
265
|
-
memory
|
266
|
-
);
|
183
|
+
L'état (`State`) contient :
|
267
184
|
|
268
|
-
|
269
|
-
|
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
|
-
|
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
|
-
|
190
|
+
- Les résultats des actions précédentes.
|
191
|
+
- Le contexte restant à traiter.
|
285
192
|
|
286
|
-
|
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
|
-
|
197
|
+
**Fonctionnement :**
|
295
198
|
|
296
|
-
|
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
|
-
|
204
|
+
2. **Validation des limites :**
|
301
205
|
|
302
|
-
|
206
|
+
- Si le nombre d'itérations dépasse `maxIterations`, le traitement est interrompu avec un message "Max iterations reached".
|
303
207
|
|
304
|
-
|
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
|
-
|
211
|
+
**Exemple de gestion d'état et récursivité :**
|
307
212
|
|
308
|
-
|
309
|
-
|
310
|
-
|
213
|
+
```typescript
|
214
|
+
const updatedNextState: State = {
|
215
|
+
...state,
|
216
|
+
currentContext: state.currentContext,
|
217
|
+
previousActions: [...(state.previousActions || []), ...(results || [])],
|
218
|
+
};
|
311
219
|
|
312
|
-
|
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
|
-
##
|
230
|
+
## Installation et configuration
|
317
231
|
|
318
|
-
|
232
|
+
### Installer les dépendances
|
319
233
|
|
320
|
-
|
321
|
-
|
322
|
-
|
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
|
-
|
240
|
+
#### Redis (Mémoire cache)
|
337
241
|
|
338
|
-
|
242
|
+
```bash
|
243
|
+
docker run --name redis -d -p 6379:6379 redis
|
244
|
+
```
|
339
245
|
|
340
|
-
|
246
|
+
#### Meilisearch (Mémoire persistante)
|
341
247
|
|
342
|
-
|
248
|
+
```bash
|
249
|
+
curl -L https://install.meilisearch.com | sh
|
250
|
+
./meilisearch --master-key="VOTRE_CLÉ_MAÎTRE"
|
251
|
+
```
|
343
252
|
|
344
|
-
|
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
|
-
|
255
|
+
## Exemple d'utilisation
|
350
256
|
|
351
|
-
###
|
257
|
+
### Initialiser l'agent
|
352
258
|
|
353
259
|
```typescript
|
354
|
-
|
355
|
-
|
356
|
-
|
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
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
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
|
-
|
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(
|
308
|
+
const result = await agent.process(state);
|
309
|
+
console.log("Résultat :", result);
|
370
310
|
```
|