Como Implementar uma Memória mais Longa para o ChatGPT com Essas Ferramentas
Published on
No mundo da inteligência artificial, a capacidade de lembrar e aprender com interações anteriores é um grande avanço. Isso é particularmente verdadeiro para chatbots de IA, como o ChatGPT, onde a memória desempenha um papel fundamental na qualidade das interações. A introdução de uma memória de longo prazo no framework do ChatGPT não apenas ampliou suas capacidades de conversação, mas também transformou a maneira como ele se envolve com os usuários. Essa nova funcionalidade, muitas vezes chamada de "memória do ChatGPT", abriu um mundo de possibilidades, permitindo que a IA forneça respostas mais personalizadas, conscientes do contexto e significativas.
A memória do ChatGPT é um testemunho do poder de combinar modelos avançados de linguagem com técnicas de gerenciamento de memória inovadoras. Trata-se de levar as já impressionantes capacidades do ChatGPT e elevá-las a novos patamares. Aproveitando a memória de longo prazo, o ChatGPT agora pode lembrar detalhes de conversas anteriores, se adaptar às preferências do usuário e fornecer respostas que não apenas são relevantes, mas também contextualmente precisas. Esta descoberta tem implicações significativas para o futuro dos chatbots de IA, preparando o palco para interações mais inteligentes, envolventes e humanas.
Sem mais delongas, vamos começar com o que é Memória do ChatGPT:
O que é a Memória do ChatGPT e por que você precisa disso?
O comprimento do contexto, ou a quantidade de informações de uma conversa anterior que um modelo de linguagem pode usar para entender e responder, é um aspecto crucial para criar aplicativos poderosos baseados em LLM. É como o número de livros que um conselheiro leu e pode utilizar para oferecer conselho prático. No entanto, mesmo que a biblioteca seja extensa, ela não é infinita.
Otimizar o uso do comprimento do contexto disponível do modelo é essencial, especialmente considerando fatores como custo, latência e confiabilidade do modelo, que são influenciados pela quantidade de texto enviado e recebido para uma API LLM como a da OpenAI.
Comprimento do Contexto, Memória Externa: Como eles podem ajudar o ChatGPT
Para contornar as limitações do comprimento do contexto em modelos de IA, como o ChatGPT e o GPT-4, pode-se utilizar uma fonte externa de memória para o modelo utilizar. Isso aprimora significativamente o comprimento efetivo do contexto do modelo, um fator crítico para aplicativos avançados alimentados por modelos LLM baseados em transformadores.
O projeto chatgpt-memory (opens in a new tab) fornece um excelente exemplo dessa abordagem. Ele utiliza o banco de dados de vetores do Redis para criar um método inteligente de gerenciamento de memória, permitindo que o ChatGPT armazene interações históricas do usuário por sessão e fornecendo um mecanismo adaptativo de criação de prompts baseado no contexto atual.
Com o advento do GPT-4, o comprimento do contexto do ChatGPT aumentou de 4.096 tokens para 32.768 tokens. Os custos de uso das APIs do OpenAI para o ChatGPT ou GPT-4 são calculados com base na quantidade de tokens usados nas conversas. Portanto, existe uma compensação entre usar mais tokens para processar documentos mais longos e usar prompts relativamente menores para minimizar o custo.
No entanto, aplicativos verdadeiramente poderosos requerem uma grande quantidade de comprimento do contexto. É aqui que entram as soluções a seguir:
Criando Memória para o ChatGPT com o MemoryGPT
O MemoryGPT, um projeto com o objetivo de criar um ChatGPT com memória de longo prazo, visa lembrar o que você diz e personalizar sua conversa com base nisso. Essa abordagem é mais adaptável do que o comportamento padrão atual, porque ele só recupera as últimas k mensagens relevantes para a mensagem atual de todo o histórico. Podemos adicionar mais contexto relevante ao prompt e nunca ficar sem comprimento de token. O MemoryGPT fornece uma memória adaptativa, que supera as restrições de limite de token de tipos de memória de buffer heurísticos.
Implementando a Memória do ChatGPT com Redis e MemoryGPT
O projeto chatgpt-memory (opens in a new tab) no GitHub fornece um guia detalhado sobre como implementar memória de longo prazo para o ChatGPT usando Redis. Aqui está uma versão simplificada dos passos:
-
Configure seu ambiente: você precisará do seu chave de API da OpenAI e configurar um data store do Redis. Você pode criar um datastore Redis gratuito aqui (opens in a new tab).
-
Instale as dependências: O projeto usa o gerenciador de pacotes Poetry. Você pode instalar as dependências necessárias com
poetry install
. -
Inicie o servidor web do FastAPI: você pode iniciar o servidor web com
poetry run uvicorn rest_api: app --host 0.0.0.0 --port 8000
. -
Execute a interface do usuário (UI): você pode iniciar a interface do usuário com
poetry run streamlit run ui.py
. -
Use com o Terminal: A biblioteca é altamente modular e você pode usar cada componente separadamente. Você pode encontrar um guia detalhado sobre como usar cada componente no README (opens in a new tab) do projeto.
Aqui está uma versão simplificada do código que você usará para configurar o chatbot:
# Importe módulos necessários
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 um objeto EmbeddingConfig com a chave da API OpenAI
configuracao_embedding = EmbeddingConfig(api_key=OPENAI_API_KEY)
# Instanciar um objeto EmbeddingClient com o objeto EmbeddingConfig
cliente_embutimento = EmbeddingClient(config=configuracao_embedding)
# Instanciar um objeto RedisDataStoreConfig com os detalhes da conexão Redis
configuracao_armazenamento_redis = RedisDataStoreConfig(
host=REDIS_HOST,
port=REDIS_PORT,
password=REDIS_PASSWORD,
)
# Instanciar um objeto RedisDataStore com o objeto RedisDataStoreConfig
armazenamento_redis = RedisDataStore(config=configuracao_armazenamento_redis)
# Instanciar um objeto MemoryManager com o objeto RedisDataStore e objeto EmbeddingClient
gerente_memoria = MemoryManager(datastore=armazenamento_redis, embed_client=cliente_embutimento, topk=1)
# Instanciar um objeto ChatGPTConfig com a chave da API OpenAI e verbose definido como True
configuracao_chat_gpt = ChatGPTConfig(api_key=OPENAI_API_KEY, verbose=True)
# Instanciar um objeto ChatGPTClient com o objeto ChatGPTConfig e objeto MemoryManager
cliente_chat_gpt = ChatGPTClient(
config=configuracao_chat_gpt,
memory_manager=gerente_memoria
)
# Inicializar a variável conversation_id como None
conversation_id = None
# Iniciar o loop do assistente virtual
while True:
# Pedir uma entrada do usuário
mensagem_usuario = input("\n Por favor, insira sua mensagem: ")
# Use o objeto ChatGPTClient para gerar uma resposta
resposta = cliente_chat_gpt.converse(message=mensagem_usuario, conversation_id=conversation_id)
# Atualizar o conversation_id com o conversation_id da resposta
conversation_id = resposta.conversation_id
# Imprimir a resposta gerada pelo assistente virtual
print(resposta.chat_gpt_answer)
Este código permitirá que você converse com o assistente de IA e estenda sua memória usando um datastore externo do Redis.
MemoryGPT in Action
MemoryGPT (opens in a new tab) é uma aplicação prática do conceito de memória de longo prazo no ChatGPT. É projetado para lembrar detalhes de conversas passadas e ajustar seu comportamento às suas preferências. MemoryGPT é particularmente útil para agentes de treinamento, como um amigo para conselhos e suporte, para produtividade e para mentes curiosas que gostam de brincar com a tecnologia mais recente e querem levá-la ao limite.
Perguntas frequentes
Como a memória de longo prazo aumenta as capacidades do ChatGPT?
A memória de longo prazo permite que o ChatGPT se lembre do contexto de conversas anteriores, permitindo fornecer respostas mais personalizadas e relevantes. Isso supera as limitações do tamanho do contexto em modelos de IA, tornando as conversas mais envolventes e significativas.
Qual é o papel do Redis na implementação da memória de longo prazo para o ChatGPT?
Redis é usado como um banco de dados vetorial para armazenar as interações históricas do usuário por sessão. Ele fornece um método inteligente de gerenciamento de memória que permite que o ChatGPT armazene em cache essas interações e crie prompts adaptativos com base no contexto atual.
Como a vetorização do histórico de conversas ajuda a fornecer contexto ao ChatGPT?
A vetorização do histórico de conversas converte os dados de texto em um formato que o modelo de IA possa entender. Esses vetores representam o significado semântico do histórico de conversas e podem ser usados para fornecer contexto relevante ao modelo, aumentando sua capacidade de gerar respostas apropriadas.