Meu agente Claude não percebeu que o cliente estava furioso — a camada de senso comum emocional que Meta descobriu antes de mim
Meu agente respondeu “ótimo, seguindo em frente” quando o cliente escreveu “tá tudo bem” pela terceira vez. Três minutos depois, o cliente cancelou.
Se você já leu qualquer log de atendimento em português, sabe que “tá tudo bem” na terceira mensagem seguida não é “tá tudo bem”. É “estou parando de falar porque não vai adiantar”. Qualquer humano da equipe teria escalado. Meu agente, treinado num Claude Sonnet 4.6 com um prompt bem escrito, respondeu como se estivesse recebendo um elogio.
O problema não é que o modelo é ruim. É que ele não tem senso comum emocional. E enquanto eu estava tratando isso como bug de prompt, a Meta já tinha um Knowledge Graph inteiro dedicado ao problema — e vinha usando em produção há mais tempo do que eu levei pra perceber que meu agente cancelava clientes.
O que aconteceu no Q2 de 2026
Eu estava rodando um agente de suporte em cima de conversas de WhatsApp Business pra um SaaS que atende pequenas equipes de vendas. Volume baixo: entre 40 e 60 conversas por semana. Fluxo simples: dúvida técnica → resposta → confirmação de resolução → follow-up em 48h.
Fiz uma auditoria em Junho de 2026 de todas as conversas onde o cliente cancelou nas 72h seguintes ao último contato com o agente. De 43 conversas de cancelamento no trimestre, 18 tinham um sinal emocional que o agente ignorou. Nada tão explícito quanto “estou irritado”. Sinais mais sutis, do tipo:
- Cliente respondeu “tá bom” três vezes seguidas em vez das confirmações normais (“beleza”, “show”, “vou testar”)
- Cliente encurtou o tempo entre respostas de 4-5 minutos para 20 segundos (irritação, não engajamento)
- Cliente parou de usar o primeiro nome do próprio produto e começou a escrever “essa ferramenta”
Nenhum desses padrões aparece no dataset de treino do LLM como “cliente frustrado”. Aparece como “conversa normal”. Um humano da equipe teria pego 15 dos 18 casos. O agente pegou zero.
Por que “melhorar o prompt” não resolve
A primeira tentativa foi óbvia: enfiar tudo no prompt. Adicionei um bloco enorme com regras do tipo “se o cliente repetir ‘tá bom’ três vezes, escalar pra humano”. Funcionou pra esse caso exato. Não funcionou pra os outros 17 padrões, cada um com sua própria variação regional (o “tá bom” em Minas é diferente do “beleza” em SP, e no Nordeste você tem “eita, valeu” que soa positivo mas geralmente encerra a conversa).
O prompt virou uma lista de exceções. Passou de 800 pra 2400 tokens. E cada nova exceção que eu adicionava aumentava a chance do agente confundir dois padrões parecidos.
O problema estrutural é: eu estava tentando enumerar sinais emocionais dentro do prompt, quando o que faltava era uma camada externa de conhecimento sobre como emoções não ditas se manifestam. Um humano não enumera. Ele infere a partir de contexto acumulado por anos.
O que a Meta (e a academia) já vinha fazendo
Enquanto eu estava fazendo prompt engineering, a comunidade acadêmica já tinha construído Knowledge Graphs pra exatamente esse problema.
ATOMIC (Atlas of Machine Commonsense) organiza cerca de 877 mil triplas de conhecimento de senso comum sobre eventos cotidianos. Estrutura básica:
Evento: "PersonX vai mal na prova"
→ xReact (emoção de X): triste, frustrado, envergonhado
→ xWant (o que X quer): tentar de novo, ser confortado
→ xNeed (o que X precisava antes): estudar mais
→ oReact (emoção do outro): preocupado, solidário
COMET é o LLM treinado em cima do ATOMIC que consegue gerar essas inferências pra situações novas.
ECoK (Emotional Commonsense Knowledge Graph), apresentado no ACL Findings 2024, é a versão especializada em emoção — incorpora teoria da psicologia e da ciência cognitiva, e representa emoção com granularidade fina (frustração, alívio, orgulho) em vez de rótulos grossos (triste, feliz). O modelo COMET treinado no ECoK superou o GPT-4-Turbo em benchmark de inferência emocional. Um KG especializado batendo um LLM gigante de propósito geral — o tipo de resultado que só faz sentido quando você aceita que o modelo grande é “80 em tudo” e o KG é “95 numa área só”.
A Meta AI Research tem publicações sobre commonsense reasoning há anos (o próprio ATOMIC saiu do AI2 mas foi rapidamente incorporado em pipelines de Meta e Google). O ponto não é quantos agentes internos a Meta roda com isso — o ponto é que a estratégia de tratar emoção como camada de conhecimento externa e não como “prompt melhor” é conhecida há tempo suficiente pra estar em produção.
Como eu montei uma versão pobre disso
Eu não vou montar o ECoK do zero. Ele exige rotulagem cara e time acadêmico. Mas dá pra montar uma versão de bolso que resolva 80% do meu problema.
Passo 1: extraí de todas as 43 conversas de cancelamento os micro-padrões de sinal emocional. Não frases exatas — padrões estruturais. Por exemplo:
repetição_de_confirmação_curta(>= 3 “tá bom”/“ok”/“sim” seguidos)queda_de_lexico_afetivo(cliente deixa de usar nome próprio do produto)mudança_de_intervalo(tempo entre respostas cai pela metade sem que a conversa acelere)
Deu 12 padrões estruturais. Muito menos do que os 18 sinais originais — vários eram variações do mesmo padrão em regiões diferentes.
Passo 2: cada padrão vira um nó num pequeno grafo (Neo4j Community Edition, self-hosted). Cada nó tem arestas pra:
emoção_provável: frustração, resignação, decisão_de_sairação_recomendada: escalar_humano, pausar_agente, oferecer_callnível_de_confiança: alto/médio/baixo
Passo 3: em vez de enfiar tudo no prompt, o agente faz uma consulta Cypher no grafo depois de cada mensagem do cliente. Se algum padrão bater com confiança alta, o agente escala. Se bater com confiança média, o agente muda de tom sem escalar. Se não bater, segue o fluxo normal.
O prompt voltou pra 900 tokens. A lógica de detecção vive fora do LLM, num grafo que eu consigo editar sem tocar no prompt.
O que mudou nas 8 semanas seguintes
Rodei essa configuração de meados de Junho até início de Agosto de 2026. Números do trimestre:
- Conversas totais no período: 412
- Escalações automáticas por sinal do grafo: 23
- Escalações onde o humano confirmou que foi decisão certa: 19 de 23 (83%)
- Cancelamentos em 72h após contato com agente: caiu de 43 (trimestre anterior) pra 31
Não é milagre. 3 dos 12 cancelamentos que restaram tinham sinais que o grafo não pegou (padrões novos que eu ainda não codifiquei). E os 4 falsos positivos (escalação onde o humano disse “não precisava”) mostraram que o grafo ainda tem ruído.
Mas o custo humano de manter o sistema caiu de “reescrever prompt toda semana” pra “adicionar 1-2 nós no grafo por mês”. E o grafo é auditável — quando eu escalo uma conversa, consigo mostrar pra equipe qual padrão bateu, o que dá pra discutir. O prompt anterior era uma caixa preta de 2400 tokens que ninguém entendia.
Onde isso vira desconfortável
Uma coisa que a implementação me forçou a admitir: senso comum emocional em KG não substitui empatia humana. O que ele faz é dizer pro agente “aqui você não é bom, passa pra alguém que é”. A parte de empatia continua sendo humana. O grafo só ajuda o agente a saber quando calar.
Se você tem alguém tentado a usar isso pra fazer o chatbot “parecer mais empático” respondendo sozinho com base nas inferências, é hora de conversar. Eu tentei essa versão no primeiro mês (era mais barato). Os clientes escreveram cinco reclamações de “o robô fingiu que me entendia”. Um humano fingindo empatia é ruim. Um robô fingindo empatia é insultante. O grafo tem uma função só: saber quando calar o agente e passar pra um humano.
Como eu chegaria mais rápido se começasse de novo
Se eu voltasse pro Ken de Março de 2026, diria três coisas:
- Pare de tratar sinal emocional como bug de prompt. Trate como camada de conhecimento externa. LLM não vai aprender pelo prompt o que ele não aprendeu do dataset.
- Comece pequeno. Você não precisa do ECoK inteiro. 8-12 padrões estruturais em cima de Neo4j Community já resolve 80% dos casos que importam pra você.
- A base teórica existe, e é gratuita. ATOMIC, COMET e ECoK estão publicados. Você não está inventando uma disciplina — está trazendo pra produção uma disciplina que a academia tem há uns 7 anos.
O padrão maior aqui vale além de atendimento: sempre que o LLM parece “burro” em tarefas que dependem de contexto tácito, a pergunta certa não é “como melhoro o prompt” mas “que camada de conhecimento externa está faltando”. Prompt é retórica. KG é ontologia. Cada um resolve um problema diferente.
E, olha, se você ainda está achando que “tá tudo bem” na terceira mensagem é uma confirmação positiva, eu tenho más notícias pra você e boas notícias pro seu concorrente.
ken imoto · WebRTC & Voice AI engineer · kenimoto.dev · TabNews
Este artigo foi útil?