Como traduzir um livro inteiro com OpenAI API e ChatGPT
Este artigo é para os geeks.
Sempre achei injusto não ter acesso a todos os livros do mundo, só porque uma pequena parte é traduzida para um dos idiomas que falo. Descobri o DeepL e o Google Translate, onde basta carregar um arquivo (docx ou pdf) para uma tradução instantânea.
No entanto, o vietnamita não é muito bem suportado nessas duas plataformas e há muito tempo procuro uma alternativa a essas duas ferramentas.
Há alguns dias, percebi que a tradução do GPT-4 era extremamente precisa em comparação com a versão GPT-3.5, ao DeepL e ao Google Translate.
Tentei carregar um arquivo pdf e obter a tradução com um clique, mas o ChatGPT não aceita arquivos muito grandes e só quer traduzir uma ou duas páginas. Pedi ao JB se ele poderia programar algo para mim para traduzir meus livros chineses, mas ele me respondeu que isso não era prioridade para ele. Tentei usar um site pago (usando a API da OpenAI, mas ele queria me cobrar 200$ pela tradução do livro). Então, peguei meu teclado, meu computador e codei eu mesma.
Bem, codei “eu mesma”, com a ajuda do ChatGPT. Escrevi prompts para descrever as funções que quero. Basicamente:
- Uma pequena interface web para carregar o arquivo de base (.txt) e selecionar em uma lista definida o idioma de partida e o idioma de chegada. Escolhi .txt porque por enquanto não me sinto capaz de lidar com uma cópia fiel do livro a traduzir com imagens (pdf, epub etc.). Um arquivo de texto é muito simples, muito bom.
- O texto a traduzir deve ser dividido em vários parágrafos. Máximo xxx caracteres. Cortar em pequenos parágrafos permite contornar os limites de chamadas e de tokens por minuto. Esses dados (xxx caracteres) ainda precisam ser testados por mim para encontrar os valores ideais, para que seja rápido, para pagar menos, respeitando os limites de processamento.
- Os parágrafos são enviados em modo lote para acelerar.
- A tradução é armazenada em um arquivo .txt, atualizado assim que uma nova tradução chega. Assim, se o programa travar, recuperaremos a parte já traduzida e saberemos através de um segundo arquivo .txt onde a tradução parou.
O ChatGPT me gerou vários trechos de código, que corrigi fazendo críticas ou especificando meu pedido. Acabei com um arquivo .html e um arquivo .php.

Como tive que reinstalar o Windows há alguns dias, não tenho mais nenhum software no computador. Depois de obter os dois códigos, precisei:
- Instalar o Sublime Text (para codar)
- Instalar o WampServer
- Instalar o PHP
- Instalar o Composer
- Instalar o Guzzle HTTP Client
- Instalar o CURL e as dependências, obter o arquivo cacert.pem
Tudo isso foi guiado pelo ChatGPT, porque a cada mensagem de erro, sabemos que precisamos instalar algo.
Em seguida, fui à OpenAI para gerar uma API Key. É super super simples, sinceramente, tive muito mais dificuldade com a API do Google e do Bing, aqui é até fácil demais.
Tive que pagar $10 (+$2 de taxas) para ter acesso à API. $5 bastaria, mas sei que tenho muito para traduzir…
Resultado
Algumas horas depois, aqui está o resultado: A interface (arquivo html) para carregar meu arquivo .txt

A tradução gerada na interface. Mas também tenho um arquivo .txt traduzido localmente.

Você pode ver que tudo é local porque é um script feito para mim, não vou publicá-lo online.
Os preços
No início, testei com o modelo gpt-3.5-turbo para pagar menos e apesar de todos os testes, só paguei 1 centavo de dólar. Por outro lado, os mini testes com o modelo gpt-4 custam muito mais caros, vemos os cêntimos a passar. No entanto, a tradução é realmente melhor, é um prazer lê-la.
Segundo a minha estimativa, custou-me cerca de 2$ para traduzir 4000 caracteres chineses, ou seja, 28 páginas com o modelo gpt-4. Isso deve-se ao facto de ter segmentado demasiado no início. E o prompt também consome tokens. Quanto mais segmento, mais repito o prompt e isso custa-me caro.
Em seguida, vi que o gpt-4-1106-preview fornecia a mesma qualidade de tradução e custava 3 vezes menos. O único inconveniente no momento do meu teste era o limite ridículo das respostas (pouco mais de 4000 tokens), por isso tinha de segmentar o texto em conformidade. Nota: esse limite foi bastante aumentado desde então.
Depois de segmentar melhor o meu texto (500 caracteres chineses por pedido e 4040 tokens totais por pedido) e de mudar para gpt-4-1106-preview (3 vezes mais barato), pago cerca de 12$ por livro (134 000 caracteres chineses em média por livro, cada carácter chinês traduz-se depois em 4 caracteres latinos em média).
Isso continua a ser aceitável, sabendo que o DeepL teria cobrado 8$ por uma tradução em francês, e o Google Translation 0$. Mas é um livro que me é muito querido e não compreendi bem a tradução feita pelo Google, por isso estou disposta a pagar um pouco mais para ter acesso ao conhecimento.
Demorei algum tempo a encontrar o url da API da OpenAI e os modelos porque o ChatGPT não me dava o correto. Deixo-os aqui:
$url = 'https://api.openai.com/v1/chat/completions'; // URL for OpenAI API
$data = [
'model' => 'gpt-4-1106-preview', // Specifying the model
'messages' => $messages,
'max_tokens' => 4040 // Adjust based on your needs
];
O código para o envio em lote não funcionou muito bem, vou ver mais tarde como melhorar tudo isso. Sem o envio em lote, infelizmente a tradução é bastante lenta: 1 minuto por página, ou seja, 133 palavras por minuto.
gpt-4-1106-preview é mais barato que o gpt-4, mas na altura em que o usei, os limites eram rapidamente atingidos. Não posso traduzir mais do que um livro por dia (nota: os limites foram aumentados desde então). Assim, demorei uma semana a traduzir a totalidade dos 6 livros. Os modelos mudam constantemente, não hesitem em fazer testes, aumentar os tokens por pedido, comparar os preços e escolher o modelo mais adequado às vossas necessidades.
Não sou programadora de base, mas compreendo html, php e Javascript. O facto de o ChatGPT me servir pedaços de código já prontos numa bandeja e eu só ter de os corrigir poupou-me muito tempo. Os exemplos de código na OpenAI são principalmente em Python e eu codifico em php, ter-me-ia levado muito tempo a traduzir esses exemplos de Python para Php, sem o ChatGPT. Em suma, recomendo vivamente que utilizem o ChatGPT para os vossos pequenos scripts, seja com a API da OpenAI, ou não.