O que é chain-of-thought e por que usar
Chain-of-thought (CoT) é uma técnica de engenharia de prompts que instrui o modelo de linguagem a explicitar seu raciocínio passo a passo antes de fornecer a resposta final. Em vez de pedir diretamente “Classifique este email”, você pede “Analise este email, liste os critérios de classificação, avalie cada um e então classifique”. Essa abordagem reduz erros de lógica em tarefas complexas em até 30-40% em benchmarks como GSM8K e StrategyQA, segundo estudos da Google Research.
Na prática, o CoT funciona porque modelos de linguagem são treinados para prever a próxima palavra, não para “pensar”. Ao forçar a geração de uma cadeia de raciocínio, você dá ao modelo um espaço de trabalho temporário onde ele pode organizar informações, testar hipóteses e corrigir erros antes de responder. Isso é particularmente útil em automações com n8n, onde um erro de classificação ou extração pode desencadear ações incorretas em cascata.
Para quem usa n8n em fluxos de produtividade, o CoT não é apenas uma “técnica avançada” — é uma camada de segurança. Quando você conecta um LLM a um workflow que envia emails, atualiza planilhas ou chama APIs externas, cada decisão do modelo tem consequências reais. O CoT transforma o prompt de uma “caixa preta” em um processo auditável, onde você pode inspecionar o raciocínio intermediário e ajustar o fluxo com precisão cirúrgica.
Pré-requisitos
Para implementar chain-of-thought em seus fluxos, você precisará de:
- Conta no n8n (self-hosted ou cloud) com acesso a nós de IA — versão 1.0 ou superior recomendada
- Credenciais de um provedor LLM: OpenAI, Anthropic Claude, Google Gemini ou qualquer modelo compatível via API
- Conhecimento básico de JSON para estruturar prompts e interpretar respostas
- Familiaridade com Webhooks e HTTP Request no n8n (para testes e integrações)
- Dados de exemplo: emails, textos, ou qualquer conteúdo que você queira processar — o CoT funciona melhor com dados estruturados ou semi-estruturados
- Paciência para iterar: o primeiro prompt raramente é o ideal. Planeje 2-3 ciclos de ajuste
Exemplo Prático: Classificação inteligente de emails de suporte
Cenário: Imagine que você gerencia um e-commerce e recebe 50-100 emails de suporte por dia. Cada email pode ser: dúvida sobre produto, problema de entrega, pedido de reembolso, elogio, spam ou urgência de atendimento. Hoje, você gasta 30-40 minutos por dia lendo e categorizando manualmente. Com n8n + CoT, você pode automatizar essa triagem em menos de 5 minutos.
O que será automatizado:
- Captura de novos emails via IMAP ou Webhook
- Envio do conteúdo para um LLM com prompt CoT estruturado
- Classificação em categorias predefinidas com justificativa
- Roteamento automático para diferentes pastas, tags ou notificações
Resultado esperado:
- Precisão de classificação acima de 85% (vs. ~70% sem CoT)
- Redução de 80% no tempo de triagem manual
- Respostas mais rápidas para casos urgentes (prioridade automática)
- Log completo do raciocínio do modelo para auditoria
Configuração Passo a Passo
Vamos construir o fluxo no n8n. Aqui está a arquitetura:

Webhook (recebe email) → HTTP Request (chama LLM) → IF (verifica categoria) → Set (formata resposta) → Respond to Webhook
Passo 1: Criar o Webhook de entrada
- No n8n, adicione um nó Webhook ao canvas
- Configure o método como POST
- Defina o caminho como
/classify-email - Ative a opção “Respond” para retornar dados ao chamador
- Copie a URL gerada — você usará para testar
Passo 2: Configurar o nó HTTP Request para o LLM
- Adicione um nó HTTP Request após o Webhook
- Método: POST
- URL:
https://api.openai.com/v1/chat/completions(ou equivalente do seu provedor) - Headers:
Authorization: Bearer SUA_API_KEYeContent-Type: application/json - No Body, use o seguinte JSON (substitua o campo
contentpelo prompt CoT):
{
"model": "gpt-4o-mini",
"temperature": 0.2,
"messages": [
{
"role": "system",
"content": "Você é um classificador de emails de suporte. Sempre mostre seu raciocínio passo a passo antes de dar a classificação final."
},
{
"role": "user",
"content": "Classifique o seguinte email em UMA das categorias: 'duvida_produto', 'problema_entrega', 'reembolso', 'elogio', 'spam', 'urgencia'. Siga este raciocínio:\n1. Identifique o assunto principal do email\n2. Liste palavras-chave que indicam a categoria\n3. Verifique se há tom de urgência (palavras como 'urgente', 'imediato', 'atrasado')\n4. Classifique com base na análise\n\nEmail:\n{{ $json.body }}"
}
]
}
Nota importante: O campo {{ $json.body }} é uma expressão do n8n que injeta o conteúdo do email recebido. Se seu webhook recebe dados diferentes, ajuste essa referência.
Passo 3: Processar a resposta
- Adicione um nó Code após o HTTP Request
- No JavaScript, extraia o raciocínio e a classificação:
// Código do nó Code
const response = $input.first().json;
const content = response.choices[0].message.content;
// Extrair a última linha como classificação (assumindo formato consistente)
const lines = content.split('\n').filter(l => l.trim());
const lastLine = lines[lines.length - 1].trim();
// Extrair categoria entre aspas ou após "Classificação:"
let category = 'desconhecida';
if (lastLine.includes(':')) {
category = lastLine.split(':')[1].trim().replace(/"/g, '');
} else if (lastLine.includes('"')) {
category = lastLine.match(/"([^"]+)"/)[1];
}
return {
category: category,
reasoning: content,
raw_response: content
};
Passo 4: Roteamento condicional
- Adicione um nó IF após o Code
- Condição 1:
{{ $json.category === "urgencia" }}→ rota para notificação via Slack/Telegram - Condição 2:
{{ $json.category === "spam" }}→ rota para lixeira (ou simplesmente descartar) - Condição 3: casos restantes → rota para planilha Google Sheets ou banco de dados
Passo 5: Formatar e responder
- Adicione um nó Set para estruturar a resposta final
- Defina campos:
category,confidence(se aplicável),reasoning - Conecte ao nó Respond to Webhook para retornar o JSON ao chamador
Teste: Envie um POST para a URL do webhook com um email de exemplo:
curl -X POST https://seu-n8n.com/webhook/classify-email \
-H "Content-Type: application/json" \
-d '{"body": "Olá, meu pedido #1234 está atrasado há 5 dias. Preciso de uma solução URGENTE, estou muito insatisfeito!"}'
Resposta esperada:
{
"category": "urgencia",
"reasoning": "1. Assunto principal: atraso na entrega\n2. Palavras-chave: 'atrasado', 'URGENTE', 'insatisfeito'\n3. Tom de urgência: presente ('URGENTE', 'há 5 dias')\n4. Classificação: urgencia",
"raw_response": "1. Assunto principal: atraso na entrega\n2. Palavras-chave: 'atrasado', 'URGENTE', 'insatisfeito'\n3. Tom de urgência: presente ('URGENTE', 'há 5 dias')\n4. Classificação: \"urgencia\""
}
Dicas e Variações
1. Use few-shot exemplos no prompt: Em vez de apenas instruções, inclua 2-3 exemplos completos de emails com suas classificações. Isso melhora a precisão em 10-15% em tarefas de classificação.
2. Controle a temperatura: Para tarefas de classificação, use temperature: 0.1-0.3. Temperaturas altas (0.7+) geram respostas mais criativas, mas menos consistentes. Para extração de dados, use 0.

3. Estruture o output como JSON: Peça explicitamente para o modelo retornar JSON válido:
{
"category": "string",
"confidence": "number",
"reasoning": "string"
}
Isso facilita o parsing no n8n e elimina a necessidade de expressões regulares frágeis.
4. Adicione um passo de “auto-correção”: Após a primeira classificação, envie de volta ao modelo: “Verifique se a categoria ‘X’ está correta. Se não, justifique e corrija.” Isso reduz erros residuais em 5-8%.
5. Cache de respostas para emails similares: Use um nó de memória (como Redis) para armazenar hashes de emails já classificados. Emails repetidos (como spam recorrente) são resolvidos instantaneamente, economizando tokens.
Erros Comuns e Como Evitá-los
Erro 1: Prompt muito vago
“Classifique este email” sem estrutura de raciocínio leva a respostas inconsistentes.
Solução: Sempre forneça etapas numeradas e critérios explícitos, como no exemplo acima.
Erro 2: Ignorar o contexto do sistema
O campo system do prompt é onde você define o papel do modelo. Negligenciá-lo faz o modelo assumir comportamentos padrão.
Solução: Use o system prompt para definir regras de formato, tom e restrições.
Erro 3: Não testar com dados reais
Prompts que funcionam com exemplos sintéticos falham com emails reais, que têm gírias, erros de digitação e contexto incompleto.
Solução: Crie um conjunto de teste com 10-20 emails reais e meça a precisão antes de colocar em produção.
Erro 4: Tratar a resposta como verdade absoluta
O modelo pode cometer erros, especialmente com sarcasmo ou ambiguidade.
Solução: Implemente um fallback: se a confiança for baixa (peça ao modelo para retornar um score de 0-1), encaminhe para revisão humana.
Erro 5: Esquecer de limitar o tamanho do raciocínio
Emails longos podem gerar raciocínios extensos que consomem tokens desnecessariamente.
Solução: Adicione no prompt: “Limite seu raciocínio a 3-4 frases curtas.” Isso reduz custos em até 40% sem perda significativa de precisão.
Próximos Passos
Agora que você tem um fluxo funcional de classificação com CoT, aqui estão os próximos passos concretos:
- Implemente o fluxo hoje mesmo: Crie o webhook, configure o prompt e teste com 5 emails reais. Compare a precisão com sua classificação manual.
- Expanda para extração de dados: Modifique o prompt para extrair informações estruturadas (número do pedido, nome do cliente, data) além da classificação. Use o mesmo padrão de raciocínio passo a passo.
- Integre com ações automáticas: Conecte o fluxo ao seu sistema de tickets (Zendesk, Freshdesk) ou planilha para criar registros automaticamente.
- Monitore e itere: Configure logs no n8n para registrar todas as classificações e revisões. Após 100 emails, analise os erros e ajuste o prompt.
- Compartilhe o template: Exporte seu fluxo como JSON e compartilhe com sua equipe — o n8n permite importar fluxos completos em segundos.
O chain-of-thought não é uma técnica exótica — é uma prática essencial para qualquer automação com LLMs que exija confiabilidade. Comece pequeno, meça os resultados e refine. Em uma semana, você terá um sistema de triagem que economiza horas de trabalho e reduz erros humanos.
Gostou do conteúdo? Inscreva-se para receber as novidades:


Comments are closed