IA e aplicações · Guia Scraft
LangGraph em Python: organize um fluxo com estado
Um fluxo pode ter várias etapas, decisões e informações compartilhadas. LangGraph representa essas etapas como nós conectados em um grafo. Para começar, separe o mecanismo de orquestração da chamada a um modelo: um exemplo determinístico ajuda a entender o estado sem depender de uma API de IA.
Antes de começar
Conheça funções, dicionários e tipos. Use Python 3.10 ou superior em um ambiente virtual com langgraph. O exemplo não usa chave nem serviço de IA.
O que você vai praticar
- Representar os dados de um fluxo com TypedDict e StateGraph.
- Conectar um nó entre START e END, compilar o grafo e invocá-lo.
- Distinguir a orquestração do fluxo de uma chamada a um modelo de IA.
Estado, nós e transições
O estado descreve os dados que percorrem o fluxo. Um nó recebe esse estado, executa uma operação e devolve uma atualização. Uma aresta determina qual etapa vem depois. START e END indicam os limites do fluxo; decisões mais complexas podem escolher o próximo nó por meio de condições.
TypedDict ajuda a expressar a estrutura esperada para ferramentas de tipagem, mas não valida dados externos automaticamente em tempo de execução. Valide entradas na fronteira da aplicação. O exemplo abaixo aceita um nome e acrescenta uma mensagem ao estado.
Execute um grafo sem modelo de IA
Em um ambiente virtual local, instale langgraph com python -m pip install langgraph. Salve o exemplo em um arquivo Python e execute-o. Não há chave de modelo nem chamada externa neste grafo: a função de saudação é Python comum.
Depois de registrar o nó e as arestas, compile cria o objeto executável. invoke recebe o estado inicial e retorna o resultado do fluxo. Essa estrutura é pequena de propósito: primeiro confirme o caminho feliz, depois acrescente outra etapa e teste o que muda no estado.
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
class Estado(TypedDict):
nome: str
mensagem: str
def saudar(estado: Estado):
return {"mensagem": f"Olá, {estado['nome']}!"}
construtor = StateGraph(Estado)
construtor.add_node("saudar", saudar)
construtor.add_edge(START, "saudar")
construtor.add_edge("saudar", END)
grafo = construtor.compile()
resultado = grafo.invoke({"nome": "Ana", "mensagem": ""})
print(resultado["mensagem"])Resultado esperado
Olá, Ana!
Quando acrescentar IA, persistência e decisões
Use uma nova etapa quando houver uma responsabilidade clara, como classificar uma entrada ou conferir um resultado. Quando vários nós atualizam uma coleção, defina como combinar as atualizações; nem sempre substituir o valor anterior é o comportamento desejado.
Antes de integrar um modelo, defina quais dados podem sair da aplicação, o limite de execução e o comportamento após falha. Persistência e retomada precisam ser configuradas para o caso de uso. Teste o fluxo com respostas determinísticas antes de avaliar a variabilidade de uma IA.
Para chegar a esse ponto com base, pratique funções, dicionários, tipos e testes. A Scraft apresenta Python como porta de entrada para programação e conecta esses fundamentos à construção de aplicações mais amplas.
Do conceito ao código
Sua vez de praticar
Acrescente um nó antes de saudar que remova espaços no início e no fim do nome. Conecte START à normalização, depois à saudação e finalmente a END.
Confira estes casos
- Nome " Ana ": mensagem "Olá, Ana!".
- Nome "Bia": mensagem "Olá, Bia!".
- A normalização devolve uma atualização do nome no estado.
Preciso de uma dica
Use strip no nó de normalização e altere as arestas para que a saudação receba o nome já tratado.