1
resposta

[Projeto] Faça como eu fiz: integrar memória Langgraph

Nesta atividade, implementei a integração de memória no fluxo de um assistente de e-mails utilizando LangGraph. O objetivo foi permitir que o agente não respondesse apenas com base no e-mail atual, mas também considerasse contexto anterior, preferências do usuário e informações persistidas em memória.

Para isso, criei duas ferramentas principais: SearchMemoryTool, responsável por buscar memórias relevantes relacionadas ao contexto do e-mail, e ManagedMemoryTool, responsável por registrar ou atualizar novas memórias úteis para interações futuras. Essas ferramentas foram integradas ao agente para permitir tanto a recuperação quanto o gerenciamento do contexto.

Também implementei a construção dinâmica do prompt, combinando o perfil do usuário, as regras de triagem, as memórias recuperadas e o histórico recente da conversa. Dessa forma, o agente consegue gerar respostas mais contextualizadas, respeitando preferências como tom de comunicação, horários de reunião e padrões esperados em respostas profissionais.

Durante os testes, simulei uma sequência de e-mails relacionados a uma integração B2B. O agente conseguiu utilizar o histórico da thread e as memórias salvas para responder de forma mais coerente e personalizada. Também foi possível registrar uma nova preferência da cliente e reutilizá-la em uma interação posterior, demonstrando o valor da memória no aumento da continuidade, personalização e confiabilidade do assistente.

Segue o link com o código: https://github.com/Moquiuti/LangGraph_Orquestrando_agentes_e_multiagentes/blob/main/integrar_mem%C3%B3ria_Langgraph.ipynb

1 resposta

Olá, Leandro. Como vai?

Parabéns por mais uma excelente implementação! É muito gratificante ver a evolução do seu projeto. No seu post anterior, você havia estruturado muito bem a otimização do fluxo e do roteamento, e agora, ao trazer o conceito de memória persistente e de longo prazo com SearchMemoryTool e ManagedMemoryTool, você elevou o assistente a um nível de maturidade totalmente profissional.

O grande trunfo da arquitetura que você desenhou é a separação entre o histórico da conversa (memória de curto prazo/thread) e as preferências e fatos extraídos (memória de longo prazo). Em assistentes corporativos, como o de triagem de e-mails B2B, essa estratégia é essencial, pois evita que o modelo sofra com a perda de contexto em conversas longas e economiza tokens ao injetar apenas as memórias que são de fato relevantes para aquela mensagem atual.

Como complemento para o seu aprendizado e evolução do código no GitHub, uma excelente prática ao gerenciar memórias que o próprio agente pode atualizar (ManagedMemoryTool) é estabelecer um mecanismo de validação ou consolidação de memórias.

Quando deixamos o agente livre para salvar novas memórias a cada interação, existe o risco de ele duplicar informações ou salvar dados irrelevantes (como "O cliente disse bom dia"). Para otimizar isso em cenários reais, os desenvolvedores costumam adotar duas abordagens:

  • Nó de consolidação em segundo plano: Em vez de salvar a memória imediatamente durante a execução do agente, você pode acumular os fatos extraídos no State do LangGraph e, ao final do grafo (ou em um processo assíncrono paralelo), rodar um nó que analisa as novas informações, remove duplicatas, resolve contradições e atualiza o banco de memórias de forma limpa.
  • Validação com esquemas Pydantic rígidos para memória: Garantir que a ferramenta ManagedMemoryTool exija argumentos bem estruturados do modelo, forçando-o a categorizar a memória. Por exemplo:
from pydantic import BaseModel, Field

class MemoriaEstruturada(BaseModel):
    categoria: str = Field(description="Ex: 'preferencia_contato', 'restricao_agenda', 'dados_empresa'")
    fato: str = Field(description="O conteúdo objetivo a ser memorizado.")
    grau_importancia: int = Field(description="De 1 a 5, o quanto isso impacta futuras decisões.")

Essa estrutura ajuda a indexar e buscar as informações de forma muito mais eficiente quando o SearchMemoryTool for acionado em e-mails futuros.

O seu repositório está se tornando um excelente portfólio de engenharia de prompts e orquestração de LLMs. Continue com esse ótimo trabalho!

Espero que possa ter lhe ajudado!