Skip to content

Como Implementar uma Memória mais Longa para o ChatGPT com Essas Ferramentas

Updated 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:

  1. 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).

  2. Instale as dependências: O projeto usa o gerenciador de pacotes Poetry. Você pode instalar as dependências necessárias com poetry install.

  3. 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.

  4. Execute a interface do usuário (UI): você pode iniciar a interface do usuário com poetry run streamlit run ui.py.

  5. 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.