01
O idioma não é um atributo da mensagem, é estado da conversa
A implementação ingênua detecta o idioma de cada mensagem que chega e responde naquele idioma. Funciona nos textos longos e falha exatamente onde o atendimento acontece. Um cliente que conversa em espanhol responde "ok" a uma pergunta, e "ok" não é espanhol para nenhum detector estatístico. Outro escreve "no" para negar algo, e "no" é uma palavra inglesa perfeitamente válida. Um terceiro cola o código de rastreio do pedido, sozinho, e não existe idioma naquilo. Em todos esses casos, um detector por mensagem devolve algo diferente do idioma real da conversa e o bot muda de idioma no meio, o que o cliente lê como falha grave mesmo quando o conteúdo está correto.
A modelagem certa separa dois conceitos que a implementação ingênua confunde. O idioma da conversa é um campo do estado, com um valor e um nível de confiança, e ele governa em que idioma o bot responde. O idioma detectado na mensagem é apenas mais uma evidência que pode ou não atualizar aquele campo. A mensagem curta continua sendo processada normalmente, ela só não tem peso suficiente para virar a chave. O efeito prático é que a conversa fica estável: o bot escolhe o idioma uma vez, com evidência suficiente, e só troca quando existe evidência clara de que o cliente trocou de propósito.
| Sinal | O que ele diz de fato | Peso na decisão |
|---|---|---|
| Idioma declarado no perfil ou na conta | Preferência explícita do cliente, estável ao longo do tempo | Alto, e vence o detector enquanto não houver contradição clara |
| Detector estatístico na mensagem longa | Boa estimativa quando há dezenas de caracteres de texto corrido | Alto acima de um mínimo de caracteres e de confiança |
| Detector na mensagem curta ou sem palavras | Ruído: confirmações, números, códigos e emojis não têm idioma | Nenhum, a mensagem é atendida mas não move o estado |
| Idioma da primeira mensagem do atendimento | Ponto de partida razoável quando não há perfil | Médio, serve de valor inicial com confiança baixa |
| Pedido explícito para trocar de idioma | Intenção declarada, mais forte que qualquer estatística | Máximo, troca imediata e registrada na conversa |
| Idioma do template ou do canal de entrada | Diz por onde o cliente veio, não o que ele fala | Baixo, apenas desempate quando tudo mais está vazio |
A regra de troca precisa ser explícita no código, e não emergir de um limiar solto no detector. Uma formulação que funciona bem em atendimento: troque o idioma da conversa quando o cliente pedir isso em palavras, ou quando duas mensagens consecutivas com texto suficiente forem detectadas no mesmo idioma novo com confiança acima do limiar. Uma única mensagem longa em outro idioma não basta, porque o caso mais comum dela não é troca de idioma, é o cliente colando um texto de terceiro, um e-mail recebido ou uma mensagem de erro do sistema.