Cómo implementar una memoria más larga en ChatGPT con estas herramientas
Published on
En el ámbito de la inteligencia artificial, la capacidad de recordar y aprender de las interacciones pasadas es un cambio de juego. Esto es especialmente cierto para los chatbots de IA como ChatGPT, donde la memoria desempeña un papel fundamental en la calidad de las interacciones. La introducción de la memoria a largo plazo en el marco de ChatGPT no solo ha ampliado sus capacidades conversacionales, sino que también ha transformado la forma en que se relaciona con los usuarios. Esta nueva función, a menudo denominada "memoria de ChatGPT", ha abierto un mundo de posibilidades, permitiendo que la IA proporcione respuestas más personalizadas, contextuales y significativas.
La memoria de ChatGPT es un testimonio del poder de combinar modelos de lenguaje avanzados con técnicas innovadoras de gestión de la memoria. Se trata de llevar las ya impresionantes capacidades de ChatGPT a nuevas alturas. Al aprovechar la memoria a largo plazo, ChatGPT ahora puede recordar detalles de conversaciones pasadas, adaptarse a las preferencias del usuario y proporcionar respuestas que no solo sean relevantes sino también contextualmente precisas. Este avance tiene importantes implicaciones para el futuro de los chatbots de IA, sentando las bases para interacciones más inteligentes, atractivas y humanas.
Sin más preámbulos, comencemos con ¿Qué es la memoria de ChatGPT?
¿Qué es la Memoria de ChatGPT y por qué la necesitas?
La longitud de contexto, o la cantidad de información de una conversación anterior que un modelo de lenguaje puede utilizar para comprender y responder, es un aspecto crucial para crear aplicaciones de LLM (modelos de lenguaje) potentes. Es similar al número de libros que tiene un asesor y del que puede sacar información para ofrecer consejos prácticos. Sin embargo, incluso si la biblioteca es extensa, no es infinita.
Optimizar el uso de la longitud de contexto disponible del modelo es esencial, especialmente considerando factores como el costo, la latencia y la confiabilidad del modelo, que se ven influenciados por la cantidad de texto enviado y recibido a una API de LLM como la de OpenAI.
Longitud de Contexto, Memoria Externa: ¿Cómo pueden ayudar a ChatGPT?
Para circunvenir las limitaciones de la longitud de contexto en modelos de IA como ChatGPT y GPT-4, se puede adjuntar una fuente externa de memoria para que el modelo la utilice. Esto aumenta significativamente la longitud efectiva de contexto del modelo, un factor crítico para aplicaciones avanzadas impulsadas por modelos LLM basados en la transformación.
El proyecto ChatGPT memory (opens in a new tab) proporciona un excelente ejemplo de este enfoque. Emplea una base de datos vectorial de Redis para crear un método inteligente de gestión de la memoria, permitiendo que ChatGPT almacene en caché las interacciones históricas de los usuarios por sesión y brindando un mecanismo de creación de señales de adaptación basado en el contexto actual.
Con la llegada de GPT-4, la longitud de contexto de ChatGPT aumentó de 4.096 tokens a 32.768 tokens. Los costos de usar las API de OpenAI para ChatGPT o GPT-4 se calculan en función del número de tokens utilizados en las conversaciones. Por lo tanto, hay un intercambio entre el uso de más tokens para procesar documentos más largos y el uso de señales relativamente más pequeñas para minimizar los costos.
Sin embargo, las aplicaciones realmente potentes requieren una gran cantidad de longitud de contexto. Es ahí donde entran las soluciones siguientes:
Crear Memoria para ChatGPT con MemoryGPT
MemoryGPT, un proyecto con el objetivo de crear un ChatGPT con memoria a largo plazo, tiene como objetivo recordar lo que dices y personalizar tu conversación en función de ello. Este enfoque es más adaptativo que el comportamiento predeterminado actual porque solo recupera los mensajes anteriores relevantes a los mensajes actuales del historial completo. Podemos agregar más contexto relevante a la señal y nunca agotar la longitud de los tokens. MemoryGPT proporciona memoria adaptativa, lo que supera las limitaciones del límite de tokens de los tipos de memoria de búfer heurísticos.
Implementación de la Memoria de ChatGPT con Redis y MemoryGPT
El proyecto ChatGPT memory (opens in a new tab) en GitHub proporciona una guía detallada sobre cómo implementar la memoria a largo plazo para ChatGPT utilizando Redis. Aquí hay una versión simplificada de los pasos:
-
Configura tu entorno: Necesitarás obtener tu clave de API de OpenAI y configurar una tienda de datos de Redis. Puedes crear una tienda de datos gratuita de Redis aquí (opens in a new tab).
-
Instala las dependencias: El proyecto utiliza el administrador de paquetes poetry . Puedes instalar las dependencias necesarias con
poetry install
. -
Inicia el servidor web FastAPI: Puedes iniciar el servidor web con
poetry run uvicorn rest_api:app --host 0.0.0.0 --port 8000
. -
Ejecuta la interfaz de usuario: Puedes iniciar la interfaz de usuario con
poetry run streamlit run ui.py
. -
Usa con Terminal: La biblioteca es altamente modular y puedes usar cada componente por separado. Puedes encontrar una guía detallada sobre cómo usa cada componente en el README (opens in a new tab) del proyecto.
Aquí hay una versión simplificada del código que usarás para configurar el chatbot:
# Importar módulos necesarios
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
# Instanciar un objeto EmbeddingConfig con la clave de API de OpenAI
embedding_config = EmbeddingConfig(api_key=OPENAI_API_KEY)
# Instanciar un objeto EmbeddingClient con el objeto EmbeddingConfig
embed_client = EmbeddingClient(config=embedding_config)
# Instanciar un objeto RedisDataStoreConfig con los detalles de conexión a Redis
redis_datastore_config = RedisDataStoreConfig(
host=REDIS_HOST,
port=REDIS_PORT,
password=REDIS_PASSWORD,
)
# Instanciar un objeto RedisDataStore con el objeto RedisDataStoreConfig
redis_datastore = RedisDataStore(config=redis_datastore_config)
# Instanciar un objeto MemoryManager con el objeto RedisDataStore y EmbeddingClient
memory_manager = MemoryManager(datastore=redis_datastore, embed_client=embed_client, topk=1)
# Instanciar un objeto ChatGPTConfig con la clave de API de OpenAI y verbose establecido en True
chat_gpt_config = ChatGPTConfig(api_key=OPENAI_API_KEY, verbose=True)
# Instanciar un objeto ChatGPTClient con el objeto ChatGPTConfig y MemoryManager
chat_gpt_client = ChatGPTClient(
config=chat_gpt_config,
memory_manager=memory_manager
)
# Inicializar conversation_id en None
conversation_id = None
# Iniciar el bucle del chatbot
while True:
# Solicitar al usuario que ingrese su mensaje
user_message = input("\n Por favor ingrese su mensaje: ")
# Utilizar ChatGPTClient para generar una respuesta
response = chat_gpt_client.converse(message=user_message, conversation_id=conversation_id)
# Actualizar conversation_id con el conversation_id de la respuesta
conversation_id = response.conversation_id
# Imprimir la respuesta generada por el chatbot
print(response.chat_gpt_answer)
Este código le permitirá hablar con el asistente de inteligencia artificial y extender su memoria mediante el uso de un almacén de datos externo en Redis.
MemoryGPT en acción
MemoryGPT (opens in a new tab) es una aplicación práctica del concepto de memoria a largo plazo en ChatGPT. Está diseñada para recordar detalles de conversaciones anteriores y ajustar su comportamiento a sus preferencias. MemoryGPT es especialmente útil para agentes de coaching, como amigo para dar consejos y apoyo, para aumentar la productividad, y para mentes curiosas que disfrutan experimentar con la última tecnología y quieren llevarla al límite.
Preguntas frecuentes
¿Cómo mejora la memoria a largo plazo las capacidades de ChatGPT?
La memoria a largo plazo permite que ChatGPT recuerde el contexto de las conversaciones anteriores, lo que le permite proporcionar respuestas más personalizadas y relevantes. Supera las limitaciones de la longitud del contexto en los modelos de IA, lo que hace que las conversaciones sean más atractivas y significativas.
¿Cuál es el papel de Redis en la implementación de la memoria a largo plazo para ChatGPT?
Redis se utiliza como una base de datos vectorial para almacenar las interacciones históricas del usuario por sesión. Proporciona un método inteligente de gestión de memoria que permite a ChatGPT almacenar en caché estas interacciones y crear promociones adaptativas basadas en el contexto actual.
¿Cómo ayuda la vectorización del historial de conversación a proporcionar contexto a ChatGPT?
La vectorización del historial de conversación convierte los datos de texto en un formato que el modelo de IA puede entender. Estos vectores representan el significado semántico del historial de la conversación y se pueden utilizar para proporcionar un contexto relevante al modelo, mejorando su capacidad para generar respuestas apropiadas.