@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.
- package/.nvmrc +1 -0
- package/README.FR.md +242 -247
- package/README.md +249 -246
- package/agent/index.ts +199 -215
- package/agent/tools/get-rss.ts +64 -0
- package/bull.ts +5 -0
- package/dist/agent/index.d.ts +29 -26
- package/dist/agent/index.js +123 -112
- 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 -14
- 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 -5
- package/dist/memory/cache.js +31 -21
- package/dist/memory/persistent.d.ts +5 -3
- package/dist/memory/persistent.js +89 -73
- package/dist/services/redis-cache.d.ts +37 -0
- package/dist/services/redis-cache.js +93 -0
- package/dist/services/scheduler.d.ts +39 -16
- package/dist/services/scheduler.js +81 -103
- package/dist/services/telegram-monitor.d.ts +0 -15
- package/dist/services/telegram-monitor.js +117 -101
- package/dist/test.js +106 -172
- package/dist/types.d.ts +38 -7
- 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 +37 -31
- package/memory/persistent.ts +121 -99
- package/package.json +11 -2
- package/services/redis-cache.ts +128 -0
- package/services/scheduler.ts +102 -141
- package/services/telegram-monitor.ts +138 -138
- package/t.py +79 -0
- package/t.spec +38 -0
- package/types.ts +40 -7
- 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 -24
- package/dist/llm/evaluator/index.d.ts +0 -16
- package/dist/llm/evaluator/index.js +0 -150
- package/llm/evaluator/context.ts +0 -21
- 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
|
6
|
-
- [
|
7
|
-
- [
|
8
|
-
- [
|
9
|
-
- [
|
10
|
-
- [
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
##
|
32
|
+
## Composants d'architecture
|
19
33
|
|
20
|
-
|
34
|
+
### Runtime de l'agent
|
21
35
|
|
22
|
-
|
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
|
-
|
38
|
+
**Responsabilités :**
|
25
39
|
|
26
|
-
-
|
27
|
-
-
|
28
|
-
|
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
|
-
|
44
|
+
#### Construction du contexte
|
33
45
|
|
34
|
-
|
46
|
+
La méthode `buildContext` crée un contexte complet en :
|
35
47
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
53
|
+
#### Traitement des workflows
|
43
54
|
|
44
|
-
|
55
|
+
La méthode `process` :
|
45
56
|
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
61
|
+
---
|
51
62
|
|
52
|
-
|
63
|
+
### Orchestrateur
|
53
64
|
|
54
|
-
**
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
75
|
+
### Gestionnaire de file d'attente
|
67
76
|
|
68
|
-
|
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
|
-
|
71
|
-
- Format adapté aux analyses financières
|
79
|
+
**Responsabilités principales :**
|
72
80
|
|
73
|
-
|
81
|
+
1. **Mise en file d'attente des actions :**
|
74
82
|
|
75
|
-
-
|
76
|
-
-
|
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
|
-
|
79
|
-
- Traitement des requêtes générales
|
80
|
-
- Format flexible selon le contexte
|
86
|
+
2. **Traitement des actions :**
|
81
87
|
|
82
|
-
|
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
|
-
|
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
|
-
|
96
|
+
**Exemple :**
|
87
97
|
|
88
|
-
|
98
|
+
```typescript
|
99
|
+
import { ActionQueueManager } from "@ai-ntellect/core";
|
100
|
+
import { actions, callbacks } from "@ai-ntellect/core/examples";
|
89
101
|
|
90
|
-
|
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
|
-
|
108
|
+
---
|
93
109
|
|
94
|
-
|
110
|
+
### Interpréteur
|
95
111
|
|
96
|
-
|
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
|
-
|
101
|
-
./meilisearch --master-key="VOTRE_CLE_MAITRE"
|
102
|
-
```
|
114
|
+
**Exemples :**
|
103
115
|
|
104
|
-
|
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
|
-
|
120
|
+
#### Workflow d'interprétation
|
107
121
|
|
108
|
-
|
109
|
-
|
110
|
-
|
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
|
-
|
113
|
-
sudo apt-get install redis-server
|
114
|
-
```
|
126
|
+
---
|
115
127
|
|
116
|
-
|
117
|
-
|
118
|
-
|
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
|
-
|
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
|
-
|
141
|
+
---
|
126
142
|
|
127
|
-
|
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
|
-
|
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
|
-
|
147
|
+
**Caractéristiques principales :**
|
139
148
|
|
140
|
-
|
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
|
-
|
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
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
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
|
-
|
166
|
+
---
|
154
167
|
|
155
|
-
|
168
|
+
### Schedulers
|
156
169
|
|
157
|
-
|
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
|
-
|
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
|
-
-
|
165
|
-
|
166
|
-
|
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
|
-
|
178
|
+
**Exemple d'utilisation :**
|
170
179
|
|
171
|
-
|
180
|
+
```typescript
|
181
|
+
const scheduler = new TaskScheduler(agentRuntime, redisCache);
|
172
182
|
|
173
|
-
|
183
|
+
const taskId = await scheduler.scheduleRequest({
|
184
|
+
originalRequest: "Analyse de marché",
|
185
|
+
cronExpression: "0 9 * * *", // Tous les jours à 9h
|
186
|
+
});
|
174
187
|
|
175
|
-
|
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
|
-
|
180
|
-
|
181
|
-
|
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
|
-
##
|
196
|
+
## Définir et exécuter des actions
|
197
|
+
|
198
|
+
### Qu'est-ce qu'une action ?
|
187
199
|
|
188
|
-
Les actions sont
|
200
|
+
Les actions sont les tâches fondamentales exécutées par le framework. Chaque action comprend :
|
189
201
|
|
190
|
-
|
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: "
|
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()
|
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
|
-
|
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
|
-
}
|
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
|
-
##
|
232
|
+
## Gestion de l'état et récursivité
|
250
233
|
|
251
|
-
L'agent gère l'
|
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
|
-
|
254
|
-
const memory = new PersistentMemory({
|
255
|
-
host: "http://localhost:7700",
|
256
|
-
apiKey: "VOTRE_CLE_API",
|
257
|
-
});
|
236
|
+
### Gestion de l'état
|
258
237
|
|
259
|
-
|
260
|
-
[
|
261
|
-
getChainsTVL,
|
262
|
-
getRssNews,
|
263
|
-
// autres outils...
|
264
|
-
],
|
265
|
-
memory
|
266
|
-
);
|
238
|
+
L'état (`State`) contient :
|
267
239
|
|
268
|
-
|
269
|
-
|
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
|
-
|
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
|
-
|
245
|
+
- Les résultats des actions précédentes.
|
246
|
+
- Le contexte restant à traiter.
|
285
247
|
|
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
|
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
|
-
|
252
|
+
**Fonctionnement :**
|
295
253
|
|
296
|
-
|
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
|
-
|
259
|
+
2. **Validation des limites :**
|
301
260
|
|
302
|
-
|
261
|
+
- Si le nombre d'itérations dépasse `maxIterations`, le traitement est interrompu avec un message "Max iterations reached".
|
303
262
|
|
304
|
-
|
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
|
-
|
266
|
+
**Exemple de gestion d'état et récursivité :**
|
307
267
|
|
308
|
-
|
309
|
-
|
310
|
-
|
268
|
+
```typescript
|
269
|
+
const updatedNextState: State = {
|
270
|
+
...state,
|
271
|
+
currentContext: state.currentContext,
|
272
|
+
previousActions: [...(state.previousActions || []), ...(results || [])],
|
273
|
+
};
|
311
274
|
|
312
|
-
|
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
|
-
##
|
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
|
-
|
287
|
+
### Installer les dépendances
|
321
288
|
|
322
|
-
|
323
|
-
|
324
|
-
|
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
|
-
|
293
|
+
### Configurer les services externes
|
333
294
|
|
334
|
-
|
295
|
+
#### Redis (Mémoire cache)
|
335
296
|
|
336
|
-
|
337
|
-
|
338
|
-
|
297
|
+
```bash
|
298
|
+
docker run --name redis -d -p 6379:6379 redis
|
299
|
+
```
|
339
300
|
|
340
|
-
|
301
|
+
#### Meilisearch (Mémoire persistante)
|
341
302
|
|
342
|
-
|
303
|
+
```bash
|
304
|
+
curl -L https://install.meilisearch.com | sh
|
305
|
+
./meilisearch --master-key="VOTRE_CLÉ_MAÎTRE"
|
306
|
+
```
|
343
307
|
|
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.
|
308
|
+
---
|
348
309
|
|
349
|
-
|
310
|
+
## Exemple d'utilisation
|
350
311
|
|
351
|
-
###
|
312
|
+
### Initialiser l'agent
|
352
313
|
|
353
314
|
```typescript
|
354
|
-
|
355
|
-
|
356
|
-
|
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
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
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
|
-
|
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(
|
363
|
+
const result = await agent.process(state);
|
364
|
+
console.log("Résultat :", result);
|
370
365
|
```
|