Introdução a Agentes
Fluxo de Decisão
Pipeline completo — intenção, tool call, resposta — com exemplo "Meu pedido já saiu?".
Nesta aula você vai
- Mapear fluxo usuário → agente → tool → resposta
- Tratar casos sem tool (conversa direta)
- Escalar para humano quando necessário
Fluxo de Decisão
Objetivos
- Construir agentes orientados a tarefas
- Visualizar pipeline end-to-end
Caso: "Meu pedido já saiu?"
1. Usuário envia mensagem
2. Backend carrega histórico + system prompt
3. LLM analisa intenção
4. LLM chama buscar_pedido — falta ID? pede ao usuário (sem tool)
5. Usuário: "8842"
6. LLM chama buscar_pedido(8842)
7. Backend executa GET /orders/8842 (autorizado)
8. Retorno: { status: "shipped", tracking: "BR123" }
9. LLM gera: "Seu pedido 8842 foi enviado. Rastreio: BR123."
10. Salva assistant no histórico
Diagrama
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌─────────┐
│ Usuário │────▶│ Backend │────▶│ LLM │────▶│ Tool │
└─────────┘ └─────────┘ └──────────┘ └─────────┘
▲ │ │
└────────────────┴────────────────┘
resultado da tool
Árvore de decisão (simplificada)
Mensagem recebida
├─ Contém ID pedido ou contexto anterior com ID?
│ ├─ Sim → buscar_pedido
│ └─ Não → LLM pergunta número (texto puro)
├─ Pergunta sobre produto?
│ └─ listar_produtos ou buscar_faq
├─ Reclamação grave / jurídico?
│ └─ criar_ticket + mensagem empática
└─ Small talk
└─ Resposta direta, sem tool
Parte disso o LLM infere; parte você reforça no system prompt.
System prompt para fluxo
Fluxo de pedidos:
1. Se usuário perguntar status e você tiver pedido_id, use buscar_pedido.
2. Se não tiver ID, peça o número do pedido — não invente status.
3. Se buscar_pedido retornar not_found, oriente verificar e-mail de confirmação.
4. Nunca exponha dados de outro cliente.
Fallback humano
if (result.requiresHuman || userMessage.includes('processo') || result.not_found >= 2) {
await createTicket(sessionId, transcript);
return 'Encaminhei para nossa equipe. Protocolo #9921.';
}
Métricas do fluxo
- % mensagens resolvidas sem humano
- % tool calls bem-sucedidas
- Tempo médio por conversa
- Taxa de "not_found" em pedidos
Resumo
- Agente = pipeline com ramificações, não resposta única
- Tool só quando há dado/action necessário
- Peça informação faltante antes de chutar
- Escala humana é feature, não falha