← Voltar ao blog
EngineeringBuild in PublicVideo

Pedi a um LLM para corrigir nomes escritos errado. Ele renomeou o produto.

Meu clipador de IA corrige nomes próprios nas transcrições. Num vídeo, trocou o nome de um modelo desconhecido pelo de um concorrente real. Por que e como resolvi.

28 de setembro de 2026

Pedi a um LLM para corrigir nomes escritos errado. Ele renomeou o produto.

Criado: 28 de setembro de 2026 · Atualizado: 28 de setembro de 2026

Katto é um clipador de vídeo com IA. Você joga um vídeo longo lá dentro, ele corta os melhores momentos em shorts verticais e escreve as legendas para você. Desenvolvo tudo sozinho, em público. Este texto é sobre uma funcionalidade que anuncio na página de preços e que peguei fazendo, silenciosamente, o oposto do seu trabalho.

O problema que eu queria resolver

A conversão de fala em texto é muito boa com palavras e muito ruim com nomes. O Whisper ouve uma marca que nunca viu e escreve foneticamente. "Trump" sai como "trompe". "Suárez" sai como "Suares". "ChatGPT" sai como "chatgépété". Num vídeo francês sobre futebol, já contei noventa e oito casos desses numa única transcrição.

Legendas com nomes destruídos passam descuido, e elas são a parte mais visível de um clipe. Então adicionei uma etapa de correção: depois da transcrição, o texto vai para um modelo de linguagem pequeno com uma única instrução, encontrar nomes próprios que foram escritos foneticamente e corrigir a grafia. Custa cerca de um centavo por vídeo. Corrigiu as noventa e oito.

O que de fato foi entregue

Na semana passada, um usuário recortou um vídeo em francês sobre modelos de linguagem grandes. O apresentador falava sem parar de um modelo chamado JEV. O Whisper ouviu e escreveu "Jev", que é próximo o suficiente para ninguém estranhar.

Os clipes saíram com os títulos "Por que o Jamba é superestimado" e "Jamba: revolução e superestimado ao mesmo tempo". As legendas diziam Jamba. As descrições diziam Jamba.

Jamba é um modelo de linguagem grande de verdade, feito pela AI21. Só não é o que aparece no vídeo.

Fui ver o que o pipeline tinha armazenado. A transcrição arquivada dizia "Jev" duas vezes e "Jamba" zero vez. Todas as etapas seguintes diziam "Jamba" e nunca "Jev": os candidatos pontuados, os metadados dos clipes, o pool de clipes, vinte e quatro ocorrências no total. A transcrição estava certa. A coisa que eu adicionei para protegê-la é que a quebrou.

Por que o modelo fez isso

Ele fez exatamente o que um assistente prestativo faz. O vídeo é sobre modelos de linguagem. "Jev" não é um modelo que ele conhece. "Jamba" é um modelo que ele conhece, e os dois não estão tão longe assim se você não olhar com atenção. No contexto, trocar um pelo outro parece uma correção, não uma invenção.

Esse é o modo de falha sobre o qual ninguém te avisa nesse tipo de tarefa. Um corretor ortográfico que não reconhece uma palavra deixa ela em paz. Um modelo de linguagem que não reconhece uma palavra busca a palavra mais próxima que ele reconhece, e quanto mais conhecimento de domínio ele tem, mais confiante e mais errada essa busca fica. Meu corretor era pior com nomes raros justamente porque era bom com os comuns.

A parte que doeu

Eu já tinha pensado nisso. O prompt dizia, em maiúsculas:

Corrija APENAS a grafia e o uso de maiúsculas. NUNCA substitua um nome por um nome DIFERENTE. Inventar um nome plausível mas errado é PIOR do que deixar um nome incomum sem alteração. […] NÃO tente adivinhar um nome mais conhecido a partir do contexto.

Três frases, sem ambiguidade, escritas especificamente para evitar o que aconteceu. O modelo leu e renomeou o produto de qualquer forma.

Não acho que o prompt estivesse mal escrito, e já não acho que um prompt melhor teria ajudado. Pedir a um modelo que não faça aquilo a que ele é inclinado é um pedido, não uma restrição. Funciona na maior parte das vezes, o que é pior do que nunca funcionar, porque você para de verificar.

O que fiz no lugar

A regra saiu do prompt e foi para o código. O modelo continua propondo correções; agora uma função decide se cada uma é uma correção de grafia ou uma renomeação, e descarta silenciosamente as renomeações.

O teste é deliberadamente tosco: remove maiúsculas e acentos das duas strings e mede quanto do original sobrevive na substituição. Acima de 0.6, é o mesmo nome escrito de outra forma. Abaixo, é outro nome.

Todas as correções do meu conjunto de teste sobrevivem. Algumas correções legítimas não vão: a quinta linha é um caso real. Um francês falando "Nguyen" é ouvido como "nouillène", as duas strings quase não têm nada em comum depois que você tira os acentos, e a proteção agora joga essa correção no lixo. O mesmo vai acontecer com nomes japoneses romanizados e com siglas ditas letra por letra em outro idioma.

Foi o lado que escolhi. Um nome estranho deixado como está é visível, e o leitor consegue deduzir o que era. Um nome errado não é visível, e ninguém consegue. As rejeições ficam registradas com as duas strings, porque uma rejeição significa que o modelo acabou de tentar renomear algo, e vale a pena ver isso.

As lições

Uma regra que o modelo pode ignorar não é uma regra. Se uma restrição importa, o lugar dela é no código que roda depois do modelo, não num parágrafo que o modelo lê. Prompts expressam intenção. Eles não a garantem.

Olhe a direção da correção, não só a existência dela. Eu tinha métricas dessa etapa: quantas correções ela fazia por vídeo. Noventa e oito parecia um número saudável. Nada media se uma correção aproximava o texto da verdade ou o afastava dela, e uma correção ruim é indistinguível de uma boa se tudo o que você conta é o total.

Um pipeline que armazena a entrada e entrega a saída pode mentir para você duas vezes. A transcrição arquivada dizia "Jev" enquanto todos os clipes entregues diziam "Jamba". Se eu tivesse lido só o arquivo, teria concluído que o pipeline estava bem. A verificação que importa é a do que saiu pela porta.

A confiança faz parte da falha. Um corretor que deixa um nome desconhecido em paz produz uma estranheza visível e inofensiva. Um que substitui produz um texto limpo, fluente e errado que ninguém questiona, inclusive eu, até a pessoa que fez o vídeo ler as próprias legendas.

A proteção entrou em produção no mesmo dia. Se você recortar um vídeo sobre algo obscuro e o Katto deixar um nome incomum exatamente como o ouviu, agora isso é intencional.

<<>>

Artigos relacionados

Pronto para transformar seus vídeos em clipes virais?

O Katto corta, legenda e reenquadra automaticamente seus vídeos longos em conteúdo de formato curto.

Experimente o Katto grátis →