Comment implémenter une mémoire plus longue pour ChatGPT avec ces outils
Published on
Dans le domaine de l'intelligence artificielle, la capacité à se souvenir et à apprendre des interactions passées est un véritable atout. Cela est particulièrement vrai pour les chatbots IA tels que ChatGPT, où la mémoire joue un rôle essentiel dans la qualité des interactions. L'introduction de la mémoire à long terme dans le cadre de ChatGPT a non seulement étendu ses capacités conversationnelles, mais a également transformé sa façon d'interagir avec les utilisateurs. Cette nouvelle fonctionnalité, souvent appelée "mémoire ChatGPT", a ouvert un monde de possibilités, permettant à l'IA de fournir des réponses plus personnalisées, conscientes du contexte et significatives.
La mémoire ChatGPT est la preuve de la puissance de la combinaison de modèles de langage avancés avec des techniques innovantes de gestion de la mémoire. Il s'agit de tirer parti des capacités déjà impressionnantes de ChatGPT et de les pousser à de nouveaux sommets. En exploitant la mémoire à long terme, ChatGPT peut maintenant se souvenir des détails des conversations passées, s'adapter aux préférences de l'utilisateur et fournir des réponses qui sont non seulement pertinentes, mais aussi contextuellement précises. Cette avancée a des implications significatives sur l'avenir des chatbots IA, ouvrant la voie à des interactions plus intelligentes, captivantes et semblables à celles entre humains.
Sans plus tarder, commençons par la question suivante : Qu'est-ce que la mémoire ChatGPT :
Qu'est-ce que la mémoire ChatGPT et pourquoi en avez-vous besoin ?
La longueur de contexte, ou la quantité d'informations d'une conversation précédente qu'un modèle de langage peut utiliser pour comprendre et répondre, est un aspect crucial pour la création d'applications puissantes basées sur des modèles LLM (Language Models). C'est un peu comme le nombre de livres qu'un conseiller a lu et sur lesquels il peut s'appuyer pour offrir des conseils pratiques. Cependant, même si la bibliothèque est vaste, elle n'est pas infinie.
Optimiser l'utilisation de la longueur de contexte disponible du modèle est essentiel, surtout compte tenu de facteurs tels que le coût, la latence et la fiabilité du modèle, qui sont influencés par la quantité de texte envoyé et reçu à une API LLM telle que celle d'OpenAI.
Longueur de contexte, mémoire externe : Comment peuvent-ils aider ChatGPT
Pour contourner les limitations de la longueur de contexte dans les modèles IA tels que ChatGPT et GPT-4, une source externe de mémoire peut être attachée au modèle pour l'utiliser. Cela améliore considérablement la longueur de contexte effective du modèle, un facteur critique pour les applications avancées alimentées par des modèles LLM basés sur des transformers.
Le projet chatgpt-memory (opens in a new tab) propose un excellent exemple de cette approche. Il utilise la base de données vectorielle Redis pour créer une méthode intelligente de gestion de la mémoire, permettant à ChatGPT de mettre en cache les interactions utilisateur historiques par session et offrant un mécanisme de création de prompt adaptatif en fonction du contexte actuel.
Avec l'avènement de GPT-4, la longueur de contexte de ChatGPT est passée de 4 096 tokens à 32 768 tokens. Les coûts d'utilisation des API OpenAI pour ChatGPT ou GPT-4 sont calculés en fonction du nombre de tokens utilisés dans les conversations. Par conséquent, il existe un compromis entre l'utilisation de plus de tokens pour traiter des documents plus longs et l'utilisation de prompts relativement plus courts pour minimiser les coûts.
Cependant, des applications vraiment puissantes nécessitent une longueur de contexte importante. C'est là que les solutions suivantes interviennent :
Créer une mémoire pour ChatGPT avec MemoryGPT
MemoryGPT, un projet visant à créer un ChatGPT avec une mémoire à long terme, vise à se souvenir de ce que vous dites et à personnaliser votre conversation en fonction de cela. Cette approche est plus adaptative que le comportement par défaut actuel, car elle ne récupère que les k messages précédents pertinents pour le message actuel dans l'historique complet. Nous pouvons ajouter plus de contexte pertinent au prompt et ne jamais manquer de tokens disponibles. MemoryGPT fournit une mémoire adaptative, qui surmonte les contraintes de longueur de token des types de mémoire tampon heuristique.
Implémentation de la mémoire ChatGPT avec Redis et MemoryGPT
Le projet chatgpt-memory (opens in a new tab) sur GitHub fournit un guide détaillé sur la façon d'implémenter une mémoire à long terme pour ChatGPT en utilisant Redis. Voici une version simplifiée des étapes :
-
Configurez votre environnement : Vous devrez obtenir votre clé d'API OpenAI et configurer une base de données Redis. Vous pouvez créer une base de données Redis gratuite ici (opens in a new tab).
-
Installez les dépendances : Le projet utilise le gestionnaire de paquets poetry. Vous pouvez installer les dépendances nécessaires avec
poetry install
. -
Démarrez le serveur web FastAPI : Vous pouvez démarrer le serveur web avec
poetry run uvicorn rest_api:app --host 0.0.0.0 --port 8000
. -
Exécutez l'interface utilisateur : Vous pouvez démarrer l'interface utilisateur avec
poetry run streamlit run ui.py
. -
Utilisez avec le terminal : La bibliothèque est hautement modulaire et vous pouvez utiliser chaque composant séparément. Vous pouvez trouver un guide détaillé sur l'utilisation de chaque composant dans le README (opens in a new tab) du projet.
Voici une version simplifiée du code que vous utiliserez pour configurer le chatbot :
# Importez les modules nécessaires
from chatgpt_memory.environment import OPENAI_API_KEY, REDIS_HOST, REDIS_PASSWORD, REDIS_PORT
from chatgpt_memory.datastore import RedisDataStoreConfig, RedisDataStore
from chatgpt_memory.llm_client import ChatGPTClient, ChatGPTConfig, EmbeddingConfig, EmbeddingClient
from chatgpt_memory.memory import MemoryManager
# Instancier un objet EmbeddingConfig avec la clé API OpenAI
embedding_config = EmbeddingConfig(api_key=OPENAI_API_KEY)
# Instancier un objet EmbeddingClient avec l'objet EmbeddingConfig
embed_client = EmbeddingClient(config=embedding_config)
# Instancier un objet RedisDataStoreConfig avec les détails de connexion Redis
redis_datastore_config = RedisDataStoreConfig(
host=REDIS_HOST,
port=REDIS_PORT,
password=REDIS_PASSWORD,
)
# Instancier un objet RedisDataStore avec l'objet RedisDataStoreConfig
redis_datastore = RedisDataStore(config=redis_datastore_config)
# Instancier un objet MemoryManager avec l'objet RedisDataStore et l'objet EmbeddingClient
memory_manager = MemoryManager(datastore=redis_datastore, embed_client=embed_client, topk=1)
# Instancier un objet ChatGPTConfig avec la clé API OpenAI et verbose défini sur True
chat_gpt_config = ChatGPTConfig(api_key=OPENAI_API_KEY, verbose=True)
# Instancier un objet ChatGPTClient avec l'objet ChatGPTConfig et l'objet MemoryManager
chat_gpt_client = ChatGPTClient(
config=chat_gpt_config,
memory_manager=memory_manager
)
# Initialiser conversation_id à None
conversation_id = None
# Démarrer la boucle du chatbot
while True:
# Demander à l'utilisateur d'entrer son message
user_message = input("\n Veuillez entrer votre message: ")
# Utiliser l'objet ChatGPTClient pour générer une réponse
response = chat_gpt_client.converse(message=user_message, conversation_id=conversation_id)
# Mettre à jour conversation_id avec le conversation_id de la réponse
conversation_id = response.conversation_id
# Afficher la réponse générée par le chatbot
print(response.chat_gpt_answer)
Ce code vous permettra de parler à l'assistant IA et d'étendre sa mémoire en utilisant une base de données externe Redis.
MemoryGPT en action
MemoryGPT (opens in a new tab) est une application pratique du concept de mémoire à long terme dans ChatGPT. Il est conçu pour se souvenir des détails des conversations passées et ajuster son comportement selon vos préférences. MemoryGPT est particulièrement utile pour les agents de coaching, en tant qu'ami pour les conseils et le soutien, pour la productivité et pour les esprits curieux qui aiment jouer avec les dernières technologies et veulent les pousser à leurs limites.
FAQ
Comment la mémoire à long terme améliore-t-elle les capacités de ChatGPT ?
La mémoire à long terme permet à ChatGPT de se souvenir du contexte des conversations précédentes, ce qui lui permet de fournir des réponses plus personnalisées et pertinentes. Elle surmonte les limitations de la longueur du contexte dans les modèles d'IA, rendant les conversations plus captivantes et significatives.
Quel est le rôle de Redis dans la mise en œuvre de la mémoire à long terme pour ChatGPT ?
Redis est utilisé comme une base de données vectorielle pour stocker les interactions utilisateur historiques par session. Il fournit une méthode de gestion de la mémoire intelligente qui permet à ChatGPT de mettre en cache ces interactions et de créer des invites adaptatives en fonction du contexte actuel.
Comment la vectorisation de l'historique des conversations aide-t-elle à fournir un contexte à ChatGPT ?
La vectorisation de l'historique des conversations convertit les données textuelles dans un format compréhensible par le modèle d'IA. Ces vecteurs représentent le sens sémantique de l'historique des conversations et peuvent être utilisés pour fournir un contexte pertinent au modèle, améliorant sa capacité à générer des réponses appropriées.