Langgraph: Conceitos Core – Comunidade de Dev
O Langgraph é uma estrutura para a construção de fluxos de trabalho de agentes confiáveis e com estado. Em vez de executar um único ciclo de resposta ao prompt, o Langgraph permite que os agentes operem como gráficos direcionados, onde cada nó representa uma etapa, o estado é compartilhado no fluxo de trabalho e a execução pode ramificar, pausar ou persistir. Este artigo resume os conceitos principais, utilitários pré -construídos e aplicações típicas do Langgraph. 1️⃣ Estado 🔹 Exemplo: como o estado evolui considera um gráfico simples com três nós: Planejar → Pesquisar → Resposta. A partir da digitação de importação tipeddict de Langgraph.GRAPH IMPORT STATEGRAPH, START, ESTADO DE CLASSE DO[str]
final_answer: str Def Plan_Node (estado: estado) -> Estado: retornar {“plan”: f “Search por: {estado[‘question’]} “} def pesquisa_node (estado: estado) -> estado: return {” resultados “: [f”Result about {state[‘plan’]} “]} def Respost_Node (estado: estado) -> estado: retornar {” final_answer “: f” baseado em {estado[‘results’][0]}, aqui está a resposta. “} Digite o modo de tela de tela cheia de tela cheia de tela Full -Screen Input {” Pergunta “:” O que é Langgraph? “} Digite o modo de tela cheia de tela cheia após o nó do plano {” Pesquise “:” O que é o MODOMENSEMEM (O que é o MODEMENSEM? Langgraph? “,” Plan “:” Pesquise: O que é Langgraph? “,” Resultados “: [“Result about Search for: What is LangGraph?”]} Digite o modo de saída de tela cheia de tela cheia após o nó de resposta {“Pergunta”: “O que é Langgraph?”, “Plan”: “Pesquise por: O que é Langgraph?”, “Resultados”: [“Result about Search for: What is LangGraph?”]”Final_answer”: “Com base no resultado sobre a pesquisa: o que é Langgraph?, aqui está a resposta.”} Digite o modo de tela cheia de saída do modo de tela cheia 2️⃣ nós dos nós são as unidades funcionais de um langgraph. Cada nó é uma função python que: toma o estado atual (um objeto semelhante ao dicionário). Retorna atualizações desse estado (geralmente como outro dicionário). Um nó pode executar muitas ações diferentes, dependendo do fluxo de trabalho: invocar um LLM para gerar texto, planos ou resumos. Ligue para ferramentas externas ou APIs (por exemplo, mecanismo de pesquisa, banco de dados, calculadora). Executar lógica determinística (por exemplo, pontuação, validação, formatação). Os nós não substituem todo o estado por padrão – em vez disso, retornam atualizações parciais que o Langgraph se funde ao estado global usando canais. Um nó não é um “agente” por si só. Todo o gráfico de nós forma o agente. 🔹 Exemplo: Nó simples da digitação de importação de classe TypeDDict (typeDDict, total = false): Pergunta: Plano STR: STR DEF PLAN_NODE (Estado: Estado) -> Estado: Q = Estado[“question”]
Return {“Plan”: F “Pesquise online para: {q}”} Digite o modo de entrada do modo de tela cheia de tela cheia {“Pergunta”: “O que é Langgraph?”} Digite o modo de tela completa de saída completa do modo FullScreen: Modo FullScreen “Plan”: “Search online para: o que é Langgraph?”} enterro “Modo FullSex” “Plan”: “Search Online para: O que é Langgraph?”}} Digite o modo de tela de tela cheia de saída de tela cheia 🔹 Exemplo: Nó invocando um LLM de Langchain_Openai Importar Chatopenai llm = Chatopenai (Model = LL. LLM = LL. LLM = LLM. LL. LL. LLM = LLM. LL. LLM = LLM. LL. LLM = LL. LLM = LLM. LL. LLM = LLM. LLM = LL. LLM = LLM. LLM = LLM. LLM = LLM. LLM = LLM. LLM = LLM. LLM = LLM. LLM = LLM. LLM = LL. LLM = LL.[“question”]) retornar {“Final_answer”: Response.Content} Digite o modo de saída de tela full Modo de tela cheia 👉 Os nós são etapas modulares. Eles podem ser simples (formatação de string) ou avançados (ferramentas LLM +). Juntos, eles formam o fluxo de trabalho. 3️⃣ As bordas das bordas definem o fluxo de execução entre nós. Bordas normais → Transições fixas. Bordas condicionais → lógica de ramificação, usando uma função do roteador. Marcadores especiais: Iniciar → Ponto de entrada. Fim → Ponto de saída. 🔹 Exemplo: bordas normais de langgraph.graph Importar StateGraph, start, end Graph = stategraph (state) graph.add_node (“plan”, plan_node) graph.add_node (“search”, search_node) graph.add_node (“Resposta”, Responder_node) (graphd_edd_edge (start), “plan)”. Graph.add_edge (“Pesquisa”, “Answer”) Graph.add_edge (“Answer”, End) Digite Modo Full -Screen Mode[“question”]
Se “mais recente” em Q.Lower (): Return “pesquisa” else: return “Resposta” Graph.add_conditional_edges (“Plan”, Router, {“Search”: “Search”, “Responder”: “Responder”}) Digite o modo de tela completa do modo FullScreen Modo: “O que é a capital da França?” → roteado para responder. Entrada: “Quais são as últimas notícias no AAPL?” → roteado para pesquisar. 4️⃣ Streaming Streaming fornece feedback ao vivo durante a execução. 🔹 Atualizar fluxo (nível de nó) Para eventos em app.stream (entradas, config = config, stream_mode = “atualizações”): print (event) insira o modo de tela cheia saída de tela cheia {‘plan’: {‘plan’: ‘pesquisa para: o que é Langgraph?’}} {‘Busca’: {”: ” [‘Result about What is LangGraph?’]}} {‘Resposta’: {‘final_answer’: ‘… Texto final …’}} Digite Modo de tela cheia de tela cheia Modo de tela full 🔹 fluxo de token (saída llm) para chunk em app.stream (fullSets (fullString = config = config, stream_mode = “mensagens”): impressão (chunk, end = “”, “, nivelado = flang = sTreams_mode =” mensagens “): impressão (chunk, end =” “,”, nivelada). Atualizações de nó. stream_mode = “Mensagens” → Stream de token (se o LLM suportar). 5️⃣ Memória de memória em langgraph = estado + checkpointers. Memory Memória de curto prazo (dentro de um thread) da digitação de importação tipeddict, List Class State (typeDDict, total = false): Pergunta: str chat_history: list[str]
Resposta: str como add_to_history (estado: estado) -> estado: history = state.get (“chat_history”, []) history.append (estado[“question”]) retornar {“Chat_history”: History} Digite Modo de tela FullScree Sair da tela cheia Exemplo após duas voltas: {“chat_history”: [“What is LangGraph?”, “Explain checkpointers”]”Answer”: “…”} Digite o modo de tela cheia de tela cheia no modo de tela 🔹 Memória de longo prazo (através das execuções) de Langgraph.CheckPoint.Memory Import MemorySaver checkPointer = MemorySaver () App = Graph.compile (CheckPointer = checkPointer) App.invoke ({“Pergunta”: “What’s Langaph?” {“thread_id”: “t1”}}) app.invoke ({“question”: “e o que são as bordas?”}, config = {“configurable”: {“thread_id”: “t1”}}}) inserido. 🔹 Memória combinada de curto prazo = dentro de uma execução. Memória de longo prazo = através das execuções. Juntos → Continuidade + confiabilidade. 👉 Ao contrário de Langchain, o Langgraph não trata a memória como um objeto separado – ele é assado em estados + checkpoínters.
Fonte