1
resposta

[Projeto] Faça como eu fiz: persistência e streaming

Nesta atividade, implementei um agente inteligente utilizando LangGraph com persistência de memória em SQLite e suporte a streaming. O objetivo foi evoluir o fluxo dos módulos anteriores, deixando de trabalhar com interações isoladas e passando a manter o contexto entre diferentes chamadas por meio de threads.

Para isso, configurei o estado do agente com AgentState, utilizando uma lista de mensagens acumuladas com add_messages. Em seguida, estruturei o grafo com dois nós principais: um nó responsável por chamar o modelo Gemini e outro responsável por executar ações externas, como buscas na internet com Tavily Search. Também configurei uma aresta condicional para verificar se o modelo solicitou alguma ferramenta; quando isso acontece, o fluxo segue para o nó de ação e depois retorna ao modelo para gerar a resposta final.

A persistência foi implementada com SqliteSaver, permitindo que o estado da conversa seja salvo em um banco SQLite. Com isso, cada conversa pode ser identificada por um thread_id, garantindo continuidade de contexto quando o mesmo identificador é reutilizado e isolamento quando threads diferentes são usadas.

Por fim, utilizei o recurso de streaming do LangGraph para acompanhar os eventos do grafo durante a execução, visualizando de forma mais detalhada as mensagens geradas, chamadas de ferramentas e respostas finais. Com isso, foi possível compreender melhor como agentes inteligentes podem manter memória, consultar informações externas e responder de forma contextualizada ao longo de múltiplas interações.

Segue o link contendo o código da atividade: https://github.com/Moquiuti/LangGraph_Orquestrando_agentes_e_multiagentes/blob/main/Persist%C3%AAncia_e_streaming_com_LangGraph.ipynb

1 resposta

Oi, Leandro! Como vai?

Agradeço por compartilhar.

Gostei da forma como você organizou a implementação do agente com persistência em SQLite, uso de thread_id para manter o contexto e streaming para acompanhar os eventos do grafo. Sua explicação mostra uma boa compreensão de como o LangGraph permite estruturar fluxos mais robustos, com memória, ferramentas externas e continuidade entre interações.

Continue explorando essa separação entre estado, nós e arestas condicionais, pois ela ajuda muito na criação de agentes mais flexíveis.

Dica: ao testar novas conversas, compare os resultados usando o mesmo thread_id e depois outro diferente; assim, você consegue validar na prática o que foi mantido em memória e o que ficou isolado em cada thread.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!