
Agentes com Humano no Loop
Recentemente passei horas depurando um bot de suporte construído com LangGraph e MCP, apenas para perceber que o problema não estava no código em si, mas na forma como ele lidava com situações incertas. O bot foi projetado para responder automaticamente às perguntas dos clientes, mas em alguns casos, ele fornecia informações incorretas com confiança. O problema era que o bot não sabia quando pedir ajuda. Ele avançava, tomando decisões sem considerar os riscos ou consequências potenciais. Isso levou a uma série de clientes irritados e a uma quantidade significativa de tempo gasto em controle de danos.
A raiz do problema era que o bot não tinha um mecanismo para pausar sua execução e pedir permissão humana antes de tomar uma ação potencialmente arriscada. É aqui que entra o conceito de agentes com humano no loop. Por design, esses agentes são capazes de reconhecer quando estão incertos ou carecem de informações suficientes para tomar uma decisão, e podem pausar sua execução para pedir orientação humana.
No contexto do bot de suporte, isso significaria que, antes de fornecer uma resposta a uma pergunta de cliente, o bot verificaria se está confiante em sua resposta. Se não estiver, ele pausaria e pediria a um operador humano para revisar a resposta e fornecer aprovação antes de enviá-la ao cliente. Esse mecanismo simples pode melhorar significativamente a confiabilidade e a credibilidade do bot.
Para implementar isso no LangGraph e MCP, você pode usar o add_conditional_edges método para criar uma aresta condicional no gráfico de estados que verifica a incerteza. Se a condição for atendida, a aresta pode acionar uma pausa na execução e enviar um pedido de aprovação humana. Aqui está um exemplo de como isso poderia ser implementado em Python:
import langgraph as lg
from mcp import tools
# Criar um novo gráfico de estados
graph = lg.StateGraph()
# Adicionar um nó para o estado incerto
uncertain_node = graph.add_node("incerto")
# Adicionar uma aresta condicional que verifica a incerteza
graph.add_conditional_edges(
uncertain_node,
lambda state: state["confidence"] < 0.8,
[
("pause", "request_human_approval"),
("proceed", "provide_response")
]
)
# Definir a função request_human_approval
def request_human_approval(state):
# Enviar um pedido de aprovação humana
approval = tools.request_approval(state["response"])
if approval:
return "proceed"
else:
return "reject"
# Definir a função provide_response
def provide_response(state):
# Enviar a resposta ao cliente
tools.send_response(state["response"])
# Criar uma ferramenta MCP para lidar com o pedido de aprovação humana
tool = tools.Tool(
"human_approval",
request_human_approval,
resources=["human_operator"]
)
# Adicionar a ferramenta ao gráfico
graph.add_tool(tool)
Neste exemplo, o add_conditional_edges método é usado para criar uma aresta condicional que verifica se o nível de confiança está abaixo de um certo limite. Se a condição for atendida, a aresta aciona uma pausa na execução e envia um pedido de aprovação humana usando a função request_human_approval. A função request_human_approval envia um pedido de aprovação a um operador humano e retorna uma decisão com base na resposta.
Uma armadilha prática a ser observada ao implementar agentes com humano no loop é garantir que o mecanismo de pausa esteja devidamente sincronizado com o processo de aprovação humana. Se a pausa não estiver devidamente sincronizada, o agente pode continuar executando antes de receber a aprovação humana, o que pode levar a resultados inconsistentes ou incorretos. Para evitar isso, certifique-se de usar um mecanismo de sincronização robusto, como um callback ou uma promessa, para garantir que o agente aguarde a aprovação humana antes de prosseguir.
À medida que continuamos a construir sistemas de IA mais complexos, a necessidade de mecanismos com humano no loop se tornará cada vez mais importante. Amanhã, exploraremos outro aspecto crítico da construção de agentes confiáveis, um que nos ajudará a enfrentar cenários e casos extremos ainda mais desafiadores.
Empresas brasileiras podem se beneficiar da implementação de agentes com humano no loop para evitar erros em atendimentos automatizados. Isso aumenta a confiança do cliente e reduz o tempo de retrabalho. A adoção dessa abordagem pode ser um diferencial competitivo no mercado.

