Bienvenue dans ce tutoriel dédié aux débutants ! Aujourd'hui, vous allez apprendre à construire un système de mémoire intelligent pour un agent conversationnel. Ce concept, souvent réservé aux développeurs avancés, devient enfin accessible grâce à HolySheep AI.
📚 Comprendre les Trois Types de Mémoire
Avant de coder, comprenons pourquoi un agent IA a besoin de mémoire. Imaginez que vous parlez à un assistant qui ne se souvient de rien d'une conversation à l'autre — frustrant, n'est-ce pas ?
- Mémoire court terme : Les derniers messages échangés (quelques minutes)
- Mémoire long terme : Les connaissances accumulées sur des semaines ou mois
- Récupération vectorielle : Trouver rapidement l'information pertinente parmi des milliers de souvenirs
C'est exactement ce que nous allons construire ensemble. Pas de panique si ces termes vous semblent nouveaux — nous partons de zéro.
🔧 Préparation de l'Environnement
Étape 1 : Créer un Compte HolySheep
Pour commencer, vous aurez besoin d'une clé API. HolySheep AI offre des crédits gratuits pour les nouveaux utilisateurs, avec des tarifs imbattables : DeepSeek V3.2 à seulement $0.42/MTok et une latence inférieure à 50ms. Les paiements sont acceptés via WeChat et Alipay.
Après inscription, récupérez votre clé API dans votre tableau de bord.
Étape 2 : Installer Python
Si vous n'avez pas Python installé, téléchargez-le depuis python.org. Lors de l'installation, cochez "Add Python to PATH".
Étape 3 : Installer les Bibliothèques
Ouvrez votre terminal (ou invite de commandes) et tapez :
pip install requests numpy scikit-learn
Ces bibliothèques nous permettront de communiquer avec l'API et de traiter les données.
🏗️ Architecture du Système de Mémoire
Notre système fonctionne en trois couches complémentaires :
- La mémoire court terme stocke les 10 derniers échanges
- La mémoire long terme sauvegarde les informations importantes dans un fichier
- Le moteur de recherche vectorielle retrouve les souvenirs pertinents
💻 Le Code Complet — Pas à Pas
Partie 1 : Configuration de la Connexion API
import requests
import json
import numpy as np
from datetime import datetime
Configuration HolySheep API
BASE_URL = "https://api.holysheep.ai/v1"
API_KEY = "YOUR_HOLYSHEEP_API_KEY"
def envoyer_message(messages):
"""Envoie une requête à l'API HolySheep"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "gpt-4.1",
"messages": messages,
"temperature": 0.7
}
reponse = requests.post(
f"{BASE_URL}/chat/completions",
headers=headers,
json=payload
)
return reponse.json()
Note : Le modèle gpt-4.1 coûte seulement $8/MTok sur HolySheep, bien moins cher que les alternatives.
Partie 2 : Classe de Mémoire Court Terme
class MemoireCourtTerme:
"""Gère les derniers échanges de la conversation"""
def __init__(self, capacite=10):
self.capacite = capacite
self.messages = []
def ajouter(self, role, contenu):
"""Ajoute un message à la mémoire"""
self.messages.append({
"role": role,
"content": contenu,
"timestamp": datetime.now().isoformat()
})
# Supprime les messages trop anciens
if len(self.messages) > self.capacite:
self.messages.pop(0)
def obtenir_historique(self):
"""Retourne l'historique formaté pour l'API"""
return [
{"role": msg["role"], "content": msg["content"]}
for msg in self.messages
]
Démonstration
memoire = MemoireCourtTerme(capacite=5)
memoire.ajouter("user", "Je suis développeur débutant")
memoire.ajouter("assistant", "Bienvenue ! Je vais vous aider.")
print("Historique:", memoire.obtenir_historique())
Ce code crée un espace mémoire qui garde les 5 derniers échanges. Quand un 6ème arrive, le plus ancien est automatiquement supprimé — comme notre mémoire humaine !
Partie 3 : Classe de Mémoire Long Terme
import json
from pathlib import Path
class MemoireLongTerme:
"""Sauvegarde les informations importantes entre les sessions"""
def __init__(self, fichier="memoire_long terme.json"):
self.fichier = fichier
self.memoire = self.charger()
def charger(self):
"""Charge la mémoire depuis le fichier"""
if Path(self.fichier).exists():
with open(self.fichier, "r", encoding="utf-8") as f:
return json.load(f)
return []
def sauvegarder(self):
"""Sauvegarde la mémoire dans le fichier"""
with open(self.fichier, "w", encoding="utf-8") as f:
json.dump(self.memoire, f, ensure_ascii=False, indent=2)
def ajouter_souvenir(self, sujet, contenu, importance=5):
"""Ajoute un nouveau souvenir"""
souvenir = {
"id": len(self.memoire) + 1,
"sujet": sujet,
"contenu": contenu,
"importance": min(10, max(1, importance)),
"date_creation": datetime.now().isoformat()
}
self.memoire.append(souvenir)
self.sauvegarder()
return souvenir
def chercher(self, terme):
"""Recherche simple par mot-clé"""
resultats = []
for souvenir in self.memoire:
if terme.lower() in souvenir["contenu"].lower():
resultats.append(souvenir)
return resultats
Exemple d'utilisation
memoire_lt = MemoireLongTerme()
memoire_lt.ajouter_souvenir(
sujet="Préférences utilisateur",
contenu="L'utilisateur préfère les explications détaillées",
importance=8
)
memoire_lt.ajouter_souvenir(
sujet="Projet en cours",
contenu="Construction d'un agent IA avec système de mémoire",
importance=9
)
Rechercher des souvenirs
resultats = memoire_lt.chercher("préférences")
print(f"Résultats trouvés: {len(resultats)}")
Grâce à HolySheep AI et ses tarifs avantageux, vous pouvez traiter des milliers de souvenirs pour seulement quelques centimes.
Partie 4 : Système de Recherche Vectorielle
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
class RechercheVectorielle:
"""Permet de trouver les souvenirs les plus pertinents"""
def __init__(self):
self.vectorizer = TfidfVectorizer()
self.souvenirs = []
self.matrice = None
def indexer(self, souvenirs):
"""Crée l'index vectoriel des souvenirs"""
self.souvenirs = souvenirs
if not souvenirs:
self.matrice = None
return
textes = [s["contenu"] for s in souvenirs]
self.matrice = self.vectorizer.fit_transform(textes)
def rechercher(self, requete, top_k=3):
"""Trouve les k souvenirs les plus similaires"""
if self.matrice is None or len(self.souvenirs) == 0:
return []
vecteur_requete = self.vectorizer.transform([requete])
similarites = cosine_similarity(vecteur_requete, self.matrice)[0]
# Associe scores et souvenirs
couples = list(zip(similarites, self.souvenirs))
couples_tries = sorted(couples, key=lambda x: x[0], reverse=True)
return couples_tries[:top_k]
Démonstration complète
recherche = RechercheVectorielle()
recherche.indexer(memoire_lt.memoire)
resultats = recherche.rechercher("informations sur l'utilisateur", top_k=2)
print("\n📋 Souvenirs les plus pertinents :")
for score, souvenir in resultats:
print(f" • [{score:.2f}] {souvenir['sujet']}: {souvenir['contenu']}")
Partie 5 : Intégration Complete — L'Agent IA avec Mémoire
class AgentIAAvecMemoire:
"""Agent conversationnel avec système de mémoire complet"""
def __init__(self):
self.memoire_court = MemoireCourtTerme(capacite=10)
self.memoire_long = MemoireLongTerme()
self.recherche = RechercheVectorielle()
# Rafraîchir l'index de recherche
self._actualiser_index()
def _actualiser_index(self):
"""Met à jour l'index vectoriel"""
self.recherche.indexer(self.memoire_long.memoire)
def _construire_contexte(self, question):
"""Récupère les souvenirs pertinents et construit le contexte"""
# Recherche dans la mémoire long terme
souvenirs = self.recherche.rechercher(question, top_k=3)
contexte = "INFORMATIONS PERTINENTES DE LA MÉMOIRE :\n"
if souvenirs:
for _, s in souvenirs:
contexte += f"- {s['sujet']}: {s['contenu']}\n"
else:
contexte += "Aucun souvenir pertinent trouvé.\n"
return contexte
def _construire_prompt(self, question):
"""Construit le message complet pour l'API"""
# Ajouter la question à la mémoire court terme
self.memoire_court.ajouter("user", question)
# Récupérer le contexte
contexte = self._construire_contexte(question)
# Construire le système
system_prompt = f"""Tu es un assistant IA helpful avec une mémoire.
{contexte}
"""
# Récupérer l'historique court terme
messages = [{"role": "system", "content": system_prompt}]
messages.extend(self.memoire_court.obtenir_historique())
return messages
def poser_question(self, question):
"""Envoie une question et retourne la réponse"""
messages = self._construire_prompt(question)
# Appeler l'API HolySheep
reponse = envoyer_message(messages)
if "error" in reponse:
return f"Erreur: {reponse['error']}"
texte_reponse = reponse["choices"][0]["message"]["content"]
# Sauvegarder dans la mémoire long terme si important
self.memoire_court.ajouter("assistant", texte_reponse)
# Option : sauvegarder automatiquement les infos importantes
if "se souviens" in question.lower() or "mémorise" in question.lower():
self.memoire_long.ajouter_souvenir(
sujet="Information demandée",
contenu=question + " -> " + texte_reponse[:200],
importance=7
)
self._actualiser_index()
return texte_reponse
===== UTILISATION =====
print("=" * 50)
print("🎓 AGENT IA AVEC MÉMOIRE INTÉGRÉE")
print("=" * 50)
agent = AgentIAAvecMemoire()
Première interaction
print("\n🤖 Utilisateur: Qui suis-je?")
reponse1 = agent.poser_question("Qui suis-je?")
print(f"🤖 Assistant: {reponse1}")
L'agent mémorise une information
print("\n🤖 Utilisateur: Je m'appelle Pierre et j'aime la programmation Python")
agent.poser_question("Je m'appelle Pierre et j'aime la programmation Python")
On sauvegarde manuellement
agent.memoire_long.ajouter_souvenir(
sujet="Nom de l'utilisateur",
contenu="L'utilisateur s'appelle Pierre",
importance=9
)
agent._actualiser_index()
Deuxième interaction — l'agent devrait se souvenir
print("\n🤖 Utilisateur: Comment m'appelles-tu?")
reponse2 = agent.poser_question("Comment m'appelles-tu?")
print(f"🤖 Assistant: {reponse2}")
📊 Schéma du Flux de Données
+------------------+ +---------------------+ +------------------+
| Utilisateur | ---> | Mémoire Court Terme | ---> | HolySheep |
| (Question) | | [10 derniers] | | API (gpt-4.1) |
+------------------+ +---------------------+ +------------------+
| |
v v
+---------------------+ +------------------+
| Mémoire Long Terme |<---- | Réponse |
| [Fichier JSON] | | de l'IA |
+---------------------+ +------------------+
|
v
+---------------------+
| Recherche |
| Vectorielle (TF-IDF)|
+---------------------+
|
v
+---------------------+
| Contexte pertinent |
| pour l'IA |
+---------------------+
🧪 Test et Validation
Pour vérifier que votre système fonctionne correctement, lancez le script complet :
python agent_memoire.py
Vous devriez voir s'afficher :
- Les messages ajoutés à la mémoire court terme
- Les souvenirs recherchés par similarité
- La réponse de l'agent intégrant le contexte
🔄 Améliorations Possibles
- Base vectorielle avancée : Remplacez TF-IDF par FAISS ou ChromaDB pour desmillions de souvenirs
- Mémoire émotionnelle : Analysez le ton des conversations pour adapter les réponses
- Auto-summarization : Condensez périodiquement la mémoire long terme
- Multi-utilisateurs : Séparez les mémoires par utilisateur dans des fichiers distincts
Erreurs courantes et solutions
- Erreur "401 Unauthorized" : Vérifiez que votre clé API est correcte et qu'elle ne contient pas d'espaces. Assurez-vous d'utiliser
YOUR_HOLYSHEEP_API_KEYremplacé par votre vraie clé depuis votre tableau de bord HolySheep. - Erreur "Connection timeout" : Vérifiez votre connexion internet. Avec HolySheep AI, la latence est normalement inférieure à 50ms. Si le problème persiste, réessayez dans quelques minutes.
- Erreur "JSON decode error" : Le fichier de mémoire long terme peut être corrompu. Supprimez
memoire_long terme.jsonet redémarrez le script — une nouvelle base sera créée automatiquement. - Mémoire qui ne se remplit pas : Assurez-vous d'appeler
memoire_long.sauvegarder()après chaque ajout. Vérifiez également les permissions d'écriture dans votre dossier de projet. - Résultats de recherche vides : Le moteur TF-IDF nécessite au moins 2 documents pour fonctionner. Ajoutez plusieurs souvenirs avant de lancer une recherche.
🎯 Résumé
Vous avez appris à construire un système de mémoire en trois couches pour votre agent IA :
- La mémoire court terme gère les échanges récents
- La mémoire long terme persiste entre les sessions
Ressources connexes
Articles connexes