Chunk Translator: dividir textos longos em partes pequenas para pedir tradução a um LLM
(translate.winterjung.dev)Criei uma pequena ferramenta em HTML para traduzir posts longos de blog sem perder nenhuma frase: ela divide o texto por parágrafos, traduz cada parte e depois junta tudo novamente.
- Quando eu pedia a tradução inteira de uma vez para um LLM como o ChatGPT, ele acabava deixando passar frases, resumindo por conta própria e errando nesse processo de tradução em lote.
- Eu até poderia tentar lapidar mais o prompt, mas preferi buscar um bom resultado só com copiar-e-colar e um botão de traduzir; por isso, fiz a ferramenta cortar textos longos em chunks e enviar traduções em paralelo para modelos menores.
- Como opção, ao enviar pedidos para modelos menores, dá para anexar um resumo gerado antes por um modelo mais inteligente, para obter uma tradução mais contextual.
- Se houver pontos a melhorar em alguma tradução por chunk, é possível acrescentar instruções e retraduzir apenas aquele chunk individualmente.
- Como tudo funciona sem servidor, em uma única página HTML estática, cada usuário precisa configurar seu próprio provider e sua própria API key. Como pode ser visto no inspetor de rede ou no código-fonte, informações sensíveis não são enviadas para nenhum lugar além de provedores de API de LLM como OpenAI e OpenRouter. Também não incluí nenhuma ferramenta de analytics.
- Eu queria oferecer pelo menos uma forma de testar em modo demo, mesmo sem API key, mas ainda estou pensando em como fazer isso.
O código está no repositório no GitHub, então você pode baixar e usar por conta própria (basta abrir o arquivo index.html no navegador para usar da mesma forma). Contribuições, relatos de issues, perguntas e feedback são todos bem-vindos.
3 comentários
Era exatamente do que eu precisava, obrigado. No caso de legendas, por causa desse problema, existia o gui-subtrans, que fazia solicitações linha por linha. Mas, para texto simples, eu não conseguia pensar em nenhum serviço adequado para isso (a página de tradução oferecida pela OpenAI está praticamente quebrada =m =...). Então eu estava numa situação complicada. Parece bom..
Para uso pessoal, criei um app em SwiftUI que usa a Apple Translator API (roda localmente) e, internamente, divide as linhas para solicitar a tradução. Pensei que, se fosse possível chamar essa API também pelo navegador, talvez não fosse uma má ideia oferecer uma demo dessa forma. Mas, como parece ser uma API do dispositivo, acho que provavelmente não vai dar...
Tem versão web também, mas parece ser útil para tradução de documentos e outros usos. :)