Voltar as noticias
Dia 5/30: Estado vs Memória no LangGraph
TutoriaisAltaEN

Dia 5/30: Estado vs Memória no LangGraph

Dev.to - MCP·15 de julho de 2026

Recentemente, passei uma tarde frustrante depurando um bot de suporte construído com LangGraph, observando-o esquecer consistentemente o contexto da conversa após apenas algumas trocas. O problema se manifestou de uma maneira simples: o bot perguntava ao usuário seu nome no início de cada interação, mesmo que ele já o tivesse fornecido. Era como se o bot não tivesse memória de conversas passadas, ou mesmo da atual. Esse comportamento não apenas era irritante, mas também fazia o bot parecer menos inteligente e menos capaz de fornecer suporte significativo.

Depois de investigar o código, percebi que o problema não estava na inteligência do bot ou na complexidade das conversas, mas em como eu estava usando o StateGraph do LangGraph em comparação com sua gestão de memória. Essencialmente, eu estava confundindo transições de estado com armazenamento de memória. No LangGraph, o StateGraph é usado para definir o fluxo de uma conversa ou processo, incluindo transições condicionais entre estados. No entanto, as informações armazenadas nesses estados (como o nome de um usuário) não são persistidas entre interações, a menos que sejam gerenciadas explicitamente através da memória.

Para ilustrar o problema e sua solução, vamos considerar um exemplo simplificado de um bot que cumprimenta os usuários e lembra seus nomes entre interações. Inicialmente, meu código poderia parecer algo assim:

from langgraph import StateGraph, add_node, add_conditional_edges

# Criar um novo StateGraph
graph = StateGraph()

# Adicionar nós para cumprimentar e perguntar o nome do usuário
add_node(graph, "start", "Olá! Qual é o seu nome?")
add_node(graph, "greeted", "Prazer em conhecê-lo, $name!")

# Adicionar arestas condicionais com base na entrada do usuário
add_conditional_edges(graph, "start", "greeted", lambda input: input.startswith("Meu nome é"))

# Este é um exemplo simplificado e não lida com a entrada real do usuário ou memória.
# O problema aqui é que "name" não está armazenado em lugar nenhum, então é perdido após o término da interação.

O erro chave neste exemplo é assumir que a transição de estado (movendo de "start" para "greeted") armazena inerentemente o nome do usuário. Na realidade, uma vez que a interação termina (por exemplo, o usuário fecha a janela de chat), o estado e qualquer informação que ele possa ter contido são perdidos. Para realmente lembrar o nome do usuário, precisamos usar as capacidades de gestão de memória do LangGraph, tipicamente através do Protocolo de Contexto do Modelo (MCP).

Aqui está uma versão corrigida que demonstra como usar a memória de forma eficaz:

from langgraph import StateGraph, add_node, add_conditional_edges
from mcp import MemoryManager

# Inicializar a gestão de memória
memory = MemoryManager()

# Criar um novo StateGraph
graph = StateGraph()

# Adicionar nós para cumprimentar, perguntar o nome do usuário e uma pergunta de acompanhamento
add_node(graph, "start", "Olá! Qual é o seu nome?")
add_node(graph, "greeted", "Prazer em conhecê-lo, $name! Como posso ajudá-lo hoje?")

# Função para extrair o nome da entrada do usuário e armazená-lo na memória
def extract_and_store_name(input):
    name = input.replace("Meu nome é ", "")
    memory.store("user_name", name)
    return True

# Adicionar arestas condicionais com base na entrada do usuário, incluindo a extração e armazenamento do nome
add_conditional_edges(graph, "start", "greeted", extract_and_store_name)

# Antes de responder, carregar o nome do usuário da memória
def load_name(context):
    name = memory.load("user_name")
    if name:
        context["name"] = name
    return True
Contexto Triplo Up

Empresas brasileiras que utilizam bots de suporte podem se beneficiar ao entender a importância da gestão de memória em interações. A implementação correta pode aumentar a satisfação do cliente e a eficiência do atendimento. Este artigo fornece insights práticos para desenvolvedores que buscam aprimorar suas soluções de IA.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.