langchain-ai/langgraph-human-in-the-loop

INVOQUE ESTA HABILIDADE ao implementar padrões de humano no loop, pausar para aprovação ou lidar com erros em LangGraph. Abrange interrupt(), Command(resume=...), fluxos de aprovação/validação e a estratégia de tratamento de erros em 4 níveis.

O que é langgraph-human-in-the-loop?

Esta habilidade fornece orientação completa para implementar padrões de 'humano no loop' (human-in-the-loop) em LangGraph, permitindo que agentes de IA pausem a execução para obter aprovação, validação ou correção humana antes de continuar. Ela cobre o uso da função `interrupt()` para pausar grafos, bem como `Command(resume=...)` para retomar a execução com dados fornecidos pelo humano. Além disso, inclui fluxos de aprovação e validação que podem ser integrados em workflows de agentes, garantindo que decisões críticas sejam revisadas por humanos. Por fim, detalha uma estratégia de tratamento de erros em 4 níveis, abrangendo desde erros recuperáveis até falhas fatais, com mecanismos para notificação, rollback e continuação segura. Suporta ambientes LangGraph e é útil para desenvolvedores que desejam construir agentes confiáveis e seguros.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/langchain-ai/langchain-skills/tree/main/skills/langgraph-human-in-the-loop

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que langgraph-human-in-the-loop faz?

INVOQUE ESTA HABILIDADE ao implementar padrões de humano no loop, pausar para aprovação ou lidar com erros em LangGraph. Abrange interrupt(), Command(resume=...), fluxos de aprovação/validação e a estratégia de tratamento de erros em 4 níveis.

Visão Geral

Esta habilidade descreve como implementar padrões de humano no loop (human-in-the-loop) em LangGraph. Esses padrões permitem que um agente pause a execução, aguarde por entrada humana e continue com base nessa entrada. Isso é essencial para construir sistemas confiáveis onde ações críticas ou resultados inesperados requerem revisão humana.

Plataformas Suportadas

  • LangGraph (Python e TypeScript)
  • LangGraph Cloud (para implantação em produção com suporte a persistência)

Padrões Principais

1. Pausando com interrupt()

Use a função interrupt() para pausar a execução do grafo. O grafo salvará seu estado atual e retornará o controle ao chamador (por exemplo, uma interface de usuário ou sistema de coordenador).

from langgraph.types import interrupt

def human_review_node(state):
    # Pausar e enviar dados para revisão
    review_data = {
        "summary": state["summary"],
        "next_action": state["next_action"]
    }
    interrupt(review_data)  # Pausa aqui
    # Continua após o humano fornecer entrada (via Command(resume=...))
    return state

2. Retomando com Command(resume=...)

Para retomar um grafo pausado, use Command com resume. Isso fornece a entrada do humano de volta para o nó onde ocorreu o interrupt().

from langgraph.types import Command

# Exemplo: chamada de retomada
command = Command(resume={"approved": True, "feedback": "Looks good"})

3. Fluxos de Aprovação / Validação

Combine interrupt() com verificações condicionais para criar fluxos de aprovação. Por exemplo, um nó pode verificar se uma ação requer aprovação e, em caso positivo, pausar.

def check_approval(state):
    if state["requires_approval"]:
        response = interrupt({"action": state["action"], "reason": state["reason"]})
        if not response.get("approved"):
            state["error"] = "Ação rejeitada pelo humano"
            return state
    return state

4. Estratégia de Tratamento de Erros em 4 Níveis

A estratégia de tratamento de erros em 4 níveis garante que o sistema possa se recuperar de falhas de forma graciosa:

  • Nível 1 – Erros recuperáveis: são erros que podem ser corrigidos automaticamente (ex.: timeout de API, tentar novamente). O grafo pode tentar novamente sem intervenção.
  • Nível 2 – Erros que requerem confirmação: ações arriscadas que precisam de aprovação humana (ex.: exclusão de dados, grandes transações). O grafo pausa e espera aprovação.
  • Nível 3 – Erros que requerem correção: situações onde o humano deve fornecer dados corretivos (ex.: entrada inválida, dados ausentes). O grafo pausa e o humano edita.
  • Nível 4 – Erros fatais: falhas que não podem ser resolvidas (ex.: bug interno, dados corrompidos). O grafo registra o erro e aborta, notificando o humano.

Exemplo de Fluxo Completo

from langgraph.graph import StateGraph
from langgraph.types import interrupt, Command

class GraphState(TypedDict):
    data: str
    requires_review: bool
    approved: bool

def process_data(state):
    # Processar dados
    state["data"] = state["data"].upper()
    if state["requires_review"]:
        result = interrupt({"data": state["data"]})
        state["approved"] = result.get("approved", False)
    return state

builder = StateGraph(GraphState)
builder.add_node("process", process_data)
builder.set_entry_point("process")
builder.set_finish_point("process")
graph = builder.compile()

# Execução inicial
initial_state = {"data": "hello", "requires_review": True}
for event in graph.stream(initial_state):
    print(event)

Considerações de Implantação

  • Persistência: Certifique-se de que seu gráfico use um checkpoint (ex.: MemorySaver) para reter o estado durante pausas.
  • Interface de Usuário: A interface que invoca o grafo deve ser capaz de lidar com interrupções e exibir prompts para o humano.
  • Segurança: Valide todas as entradas humanas para evitar injeção ou manipulação.

Links Relacionados

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

langchain-ai/deep-agents-core

INVOKE THIS SKILL when building ANY Deep Agents application. Covers create_deep_agent(), harness architecture, SKILL.md format, and configuration options.

langchain-ai/deep-agents-memory

INVOKE THIS SKILL when your Deep Agent needs memory, persistence, or filesystem access. Covers StateBackend (ephemeral), StoreBackend (persistent), FilesystemMiddleware, and CompositeBackend for routing.

langchain-ai/deep-agents-orchestration

INVOKE THIS SKILL when using subagents, task planning, or human approval in Deep Agents. Covers SubAgentMiddleware, TodoList for planning, and HITL interrupts.

langchain-ai/framework-selection

INVOKE THIS SKILL at the START of any LangChain/LangGraph/Deep Agents project, before writing any agent code. Determines which framework layer is right for the task: LangChain, LangGraph, Deep Agents, or a combination. Must be consulted before other agent skills.

langchain-ai/langchain-dependencies

INVOKE THIS SKILL when setting up a new project or when asked about package versions, installation, or dependency management for LangChain, LangGraph, LangSmith, or Deep Agents. Covers required packages, minimum versions, environment requirements, versioning best practices, and common community tool packages for both Python and TypeScript.

langchain-ai/langchain-fundamentals

Create LangChain agents with create_agent, define tools, and use middleware for human-in-the-loop and error handling.

langchain-ai/langchain-middleware

INVOKE THIS SKILL when you need human-in-the-loop approval, custom middleware, or structured output. Covers HumanInTheLoopMiddleware for human approval of dangerous tool calls, creating custom middleware with hooks, Command resume patterns, and structured output with Pydantic/Zod.

langchain-ai/langchain-rag

INVOKE THIS SKILL when building ANY retrieval-augmented generation (RAG) system. Covers document loaders, RecursiveCharacterTextSplitter, embeddings (OpenAI), and vector stores (Chroma, FAISS, Pinecone).

langchain-ai/langgraph-fundamentals

INVOKE THIS SKILL when writing ANY LangGraph code. Covers StateGraph, state schemas, nodes, edges, Command, Send, invoke, streaming, and error handling.

langchain-ai/langgraph-persistence

INVOKE THIS SKILL when your LangGraph needs to persist state, remember conversations, travel through history, or configure subgraph checkpointer scoping. Covers checkpointers, thread_id, time travel, Store, and subgraph persistence modes.

langchain-ai/swarm

Dispatches many independent items in parallel: create a table, fan out to subagents, aggregate results. One row = one unit of work.

Habilidades Relacionadas