Introdução ao LangGraph

Tutorial de LangGraph aplicado a dados econômicos: os três blocos do framework (estado, nós e arestas), o ciclo ReAct e a construção de um agente que responde perguntas sobre o IPCA consultando a série do Banco Central. O modelo de linguagem roda localmente, na CPU, sem chave de API, e o projeto termina num aplicativo em Streamlit.

Dá para montar um agente de inteligência artificial que responde perguntas sobre a inflação brasileira sem pagar nada por isso. Você pergunta "qual foi o IPCA de março de 2025?" em português, e o programa decide sozinho que precisa consultar a série do Banco Central, faz a consulta e devolve o número certo. O modelo de linguagem roda na sua máquina, na CPU, e ocupa cerca de 1,5 GB.

Este tutorial constrói esse agente com LangGraph, o framework da LangChain para orquestrar aplicações com IA, passando pelos três blocos do framework e pelo ciclo ReAct até um aplicativo web em Streamlit. Sem chave de API em nenhuma etapa.

Aplicativo Streamlit com agente LangGraph respondendo qual foi a variação do IPCA em março de 2025, com os bastidores do ciclo do agente visíveis
O agente rodando: pergunta em português, resposta com o dado do Banco Central e o registro de cada passo. Fonte: BCB (SGS, série 433).

O bloco "Ver o que o agente fez" mostra que o ciclo deu duas voltas e qual ferramenta devolveu o número, o que num sistema que responde sobre dados deixa de ser detalhe e vira requisito de funcionamento.

Testar o agente agora →
O aplicativo está publicado e aberto: pergunte sobre qualquer mês do IPCA.

Quer o código deste agente?

O projeto completo em Python está disponível para você rodar: o grafo do LangGraph, as duas ferramentas de IPCA, o modelo local já configurado e o aplicativo Streamlit da tela acima.

Clique aqui para obter o código →

O que o LangGraph resolve

Um programa comum executa na ordem que você escreveu, enquanto um modelo de linguagem recebe texto e devolve texto, nem sempre o que você esperava. Uma aplicação que responde sobre dados precisa das duas coisas ao mesmo tempo, porque o modelo tem que interpretar a pergunta do usuário enquanto o sistema garante que a base certa será consultada.

O LangGraph descreve esse fluxo como um grafo, em que as caixas são as etapas e as setas são as transições possíveis, de forma que você desenha o caminho e o framework o segue.

LangGraph e LangChain são coisas diferentes

O LangChain oferece as peças: interface padronizada para conversar com modelos, definir ferramentas e montar prompts. O LangGraph orquestra essas peças, definindo ordem, condições e ciclos. São pacotes separados, usados quase sempre juntos.

Os três blocos de um grafo

Toda aplicação em LangGraph se apoia em três conceitos, e entendidos esses três o resto passa a ser detalhe de implementação.

Diagrama dos três blocos do LangGraph: estado como dicionário compartilhado, nó como função Python e aresta definindo o próximo passo
Estado, nós e arestas: o estado circula, os nós transformam, as arestas escolhem o caminho.

📦

Estado
Um dicionário que circula por todo o grafo e funciona como memória de trabalho: guarda a pergunta, o que as ferramentas responderam e quantas voltas o ciclo deu.

⚙️

Nós
As etapas de processamento, que são funções Python comuns. Cada uma recebe o estado, executa algo e devolve o que mudou.

🔀

Arestas
As ligações que definem o que vem depois. Podem ser diretas (A sempre vai para B) ou condicionais, quando o próximo passo depende do estado.

O ciclo ReAct, que faz o agente ser um agente

ReAct vem de Reasoning and Acting, raciocinar e agir: em vez de responder de uma vez, o modelo alterna entre decidir o que fazer e observar o resultado do que fez.

Ciclo ReAct no LangGraph: do nó raciocinar para agir quando há chamada de ferramenta, com a observação retornando ao modelo antes de responder
O ciclo montado com três nós. A seta de volta, de agir para raciocinar, é o que cria o comportamento de agente.

A seta de volta merece atenção, porque um programa que chama o modelo uma vez e imprime a resposta funciona como um formulário. O comportamento de agente aparece quando o sistema, depois de ver o resultado da ferramenta, ainda pode chamar outra, repetir a mesma ou encerrar e responder.

O que é uma ferramenta

Uma ferramenta é uma função comum do seu programa, descrita para o modelo em JSON Schema: o nome, para que serve e quais argumentos aceita. Essa descrição viaja junto com a pergunta.

O modelo não executa nada por conta própria: no lugar de texto, ele responde algo equivalente a "execute consultar_ipca com o argumento mes = 2025-03", e quem executa é o seu código, que devolve o resultado para o modelo continuar. A escolha fica com o modelo e a execução fica com o programa.

Como o ciclo pode se repetir, ele precisa de um freio, já que um modelo confuso continuaria pedindo ferramenta indefinidamente e o programa nunca terminaria. No nosso agente o limite é de três voltas, verificado pela aresta condicional a cada passagem.

O modelo local: por que um modelo de 0,6 bilhão de parâmetros basta

A maioria dos tutoriais usa a API da OpenAI ou do Gemini, o que exige cadastro, chave e cartão, enquanto aqui o modelo roda na sua máquina, sem custo, sem enviar dados para fora e sem depender de internet depois de baixado.

Usamos o Qwen3-0.6B, um dos menores modelos abertos treinados para tool calling, a capacidade de emitir chamadas de ferramenta em vez de apenas conversar. Cada resposta leva cerca de dez segundos numa CPU comum. Dois ajustes decidem se o projeto funciona nesse tamanho, e os dois vieram de teste, não de manual.

Desligar o modo de raciocínio

O Qwen3 escreve um bloco de pensamento antes de responder, e num modelo de 600 milhões de parâmetros o orçamento de tokens se esgota dentro desse bloco, de modo que a chamada de ferramenta nunca chega a sair. Com o raciocínio ligado, o modelo falhou nas quatro perguntas de teste, e desligando essa opção ele passou a acertar três das quatro.

Instrução afirmativa, nunca negativa

Este resultado é contraintuitivo e vale para qualquer modelo pequeno. Testamos dois prompts de sistema, com o mesmo modelo e a mesma pergunta:

Instrução dada ao modelo O que ele fez
"Sempre use as ferramentas disponíveis para consultar o IPCA." Chamou a ferramenta e respondeu com o dado
"Nunca invente números: se não chamou a ferramenta, diga que não sabe." Respondeu "não sei" e nunca chamou a ferramenta

Efeito do prompt de sistema sobre o Qwen3-0.6B, mesma pergunta nos dois casos.

A segunda instrução parece mais segura e produz justamente o comportamento que se queria evitar, porque um modelo pequeno segue a ordem ao pé da letra e "diga que não sabe" é uma ação bem mais barata do que consultar uma base. Modelos grandes absorvem esse tipo de frase sem prejuízo, mas os pequenos passam a se apoiar nela.

Quem faz o que: a divisão que salva o projeto

A escolha central do tutorial está em repartir as tarefas entre o modelo e o código, deixando para cada um o que ele resolve melhor.

Divisão de tarefas entre o modelo local, que interpreta a pergunta e escolhe a ferramenta, e o código Python, que normaliza a data, consulta o Banco Central e calcula o acumulado
O modelo cuida da linguagem; o código cuida da regra determinística e do número.

Essa divisão resolve o principal defeito do modelo pequeno, que nos testes escolhia a ferramenta certa e errava o formato da data, devolvendo 01-01 para "janeiro de 2024" e apenas 06 para "junho de 2026". Em vez de insistir no prompt, o código reconstrói a data lendo o mês e o ano do texto da pergunta, e com essa correção os seis casos de teste passaram.

Um segundo mecanismo cobre a falha oposta: quando a pergunta cita um mês concreto e o modelo tenta responder de cabeça, o programa ignora esse texto e força a consulta à base. A regra de negócio manda no fluxo, e o modelo não tem a última palavra sobre o número.

Como o agente foi montado

O projeto se divide em quatro etapas, cada uma num módulo separado, e é essa separação que permite testar a camada de dados sem envolver o modelo de linguagem.

1️⃣

Camada de dados
Baixa a série 433 do SGS com o pacote python-bcb e guarda uma cópia local em CSV, para o agente funcionar offline.

2️⃣

Modelo local
Carrega o Qwen3 com a biblioteca transformers, com o modo de raciocínio desligado e geração determinística.

3️⃣

O grafo
Três nós (raciocinar, agir, responder), uma aresta condicional e a aresta de volta que fecha o ciclo ReAct.

4️⃣

Interface
Um aplicativo em Streamlit, com o modelo em cache para não recarregar a cada pergunta. É a versão que está publicada aqui.

Um aviso sobre a versão do framework: o LangGraph chegou ao 1.0 e a função create_react_agent, do módulo langgraph.prebuilt, foi descontinuada em favor do create_agent, agora no pacote langchain. Boa parte do material na internet ainda ensina a API antiga. Aqui o grafo é montado à mão, o que deixa o ciclo visível em vez de escondido dentro de uma função pronta.

Os resultados

O agente foi testado em sete perguntas, incluindo as que deveriam falhar, e todas se comportaram como o desenho previa.

Pergunta Resposta do agente Consultou a base?
IPCA em março de 2025 0,56% no mês sim
IPCA de dezembro de 2023 0,56% no mês sim
IPCA acumulado em 12 meses 4,44% (08/2025 a 07/2026) sim
Inflação de junho de 2026 0,16% no mês sim
IPCA de setembro de 2025 0,48% no mês sim
IPCA de março de 2035 avisa que não há dado e informa o último mês disponível sim
"Quem descobriu o Brasil?" responde sem consultar a série não (correto)

Bateria de testes do agente. Fonte: BCB (SGS, série 433), com dados até julho de 2026.

Os dois últimos casos merecem atenção, porque um agente que serve para alguma coisa precisa dizer que não tem o dado em vez de inventar um número, e precisa deixar a ferramenta quieta quando a pergunta não é sobre inflação.

IPCA acumulado em 12 meses em 4,44%, acima da meta de 3,0% e dentro da banda superior de 4,5%, calculado pelo agente
O acumulado em 12 meses calculado pela ferramenta do agente. Fonte: BCB (SGS, série 433).

O acumulado está em 4,44%, acima da meta de 3,0% e dentro do intervalo de tolerância, cujo teto é 4,5%. O número não foi digitado à mão em lugar nenhum, porque sai do produto dos fatores mensais calculado pela ferramenta, já que a inflação de um mês incide sobre os preços corrigidos pelo mês anterior e somar as variações daria um valor diferente.

Variação mensal do IPCA nos últimos 24 meses até julho de 2026, série 433 do Banco Central
A série mensal consultada pela primeira ferramenta do agente. Fonte: BCB (SGS, série 433).

Considerações finais

Um modelo de 0,6 bilhão de parâmetros não substitui um modelo de fronteira, e o que este exercício mostra é outra coisa: num agente bem desenhado, o modelo carrega uma parcela pequena da responsabilidade, que é interpretar a pergunta e escolher a ferramenta, enquanto a precisão do número vem do código.

Isso muda o cálculo de quem trabalha com dados econômicos. Se a exatidão depende da sua função de consulta, e não da memória do modelo, o custo cai porque um modelo pequeno resolve, a auditoria fica possível porque cada número tem origem rastreável, e o sistema fica testável porque as ferramentas são funções Python comuns.

Os dois mecanismos de proteção deste tutorial seguem o mesmo princípio: deixe o modelo fazer o que ele faz bem, que é lidar com linguagem, e deixe o código fazer o que ele faz bem, que é aplicar regra determinística.

Para quem isso é útil

  • Analista macro — um assistente que responde sobre séries do BCB e do IBGE sem sair da mesa, com o dado rastreável até a fonte.
  • Economista de instituição — o modelo local mantém dado sensível dentro da máquina, sem enviar nada para servidor de terceiro.
  • Profissional de risco e compliance — cada resposta registra qual ferramenta foi chamada e o que ela devolveu, o que torna o sistema auditável.
  • Quem está começando em Python — o projeto cobre coleta de dados, funções, estruturas de controle e uma interface web, num caso concreto.

Aprenda a construir análises assim, do começo ao fim

Coletar dados econômicos, tratar séries, modelar e automatizar com Python é o que ensinamos nas formações da Análise Macro, com aulas guiadas e código comentado como o deste tutorial.

Conhecer a formação →

Quer acesso a todos os cursos por um ano? O AM Black reúne a biblioteca completa numa assinatura anual.

 

📩 IA aplicada a problema de verdade

Modelo novo aparece toda semana; raro é ver um resolvendo problema econômico com dado brasileiro. No Boletim AM eu mostro, todo dia, IA generativa aplicada à economia, mercado financeiro e análise de dados — com a fonte, com a ressalva e com o custo real de rodar.

Receber o Boletim AM → Todo dia no seu e-mail. Gratuito, e sai num clique.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp