04Further - maximemorge/tutorielIAAgentique GitHub Wiki
Un système agentique de niveau production doit maintenir une mémoire d’une requête à l’autre, utiliser des outils complexes et être capable de réflexivité sur ses propres sorties.
Par rapport au premier SMA (mas.py, sans vérificateur de faits ni
score), le fichier masWithMemory.py ajoute une mémoire vectorielle
(AgentMemory, index FAISS). Le synthétiseur y mémorise chaque couple
question/réponse finale ; au début de chaque requête, le chercheur
récupère les interactions passées les plus proches sémantiquement
(past_context, tronqué à 600 caractères) et les injecte dans son
prompt.
Cette mémoire est conservée en mémoire vive : elle persiste entre les requêtes d’une même exécution, mais pas d’une exécution du script à l’autre (l’index FAISS n’est pas sauvegardé sur disque).
Exécutez ce SMA qui traite 3 requêtes successives sur un même thème et
vérifiez, dans les blocs MEMORY CONTEXT affichés, que la troisième
requête exploite la mémoire des deux premières.
Par rapport au SMA précédent, le fichier
masWithMemoryAndSelfReflect.py
intègre une fonction self_reflect dans le synthesizer_node.
Comme illustré dans la figure ci-dessous, si la moyenne des scores est inférieure à 2, la synthèse est renvoyée vers le chercheur pour un second passage complet.
Exécutez ce SMA et observez la différence de qualité par rapport au
précédent. Avec self_reflect, une réponse insuffisante (sources
faibles, manques flagrants) déclenche un second passage complet par le
chercheur avant d’être validée, ce qui améliore la qualité factuelle.
Sans ce mécanisme, le critique valide parfois trop tôt car il n’évalue
que le texte brut de l’analyse et non la synthèse finale.
L’auto-évaluation porte sur le produit fini et détecte donc les
défauts de mise en forme et de cohérence que le critique ne perçoit
pas.
Par rapport au SMA précédent, le fichier masWithPython.py ajoute un
outil execute_python(code: str, timeout: int = 5) -> str qui exécute
du code Python dans un sous-processus (de manière plus rudimentaire
que l’outil tools.py). Le chercheur lance une boucle mini-ReAct
(mini_react_coder) qui écrit, exécute et corrige du code, puis place
le résultat dans le champ code_results de l’état partagé, exploité
par l’analyste et le synthétiseur.
Exécutez ce SMA sur une question numérique et vérifiez que l’agent
exploite l’outil execute_python pour résoudre le problème.