Come tradurre un intero libro con l’API di OpenAI e ChatGPT
Questo articolo è per i geek.
Ho sempre pensato che fosse ingiusto non avere accesso a tutti i libri del mondo, solo perché una piccola parte è tradotta in una delle lingue che conosco. Ho scoperto DeepL e Google Translate, dove puoi semplicemente caricare un file (docx o pdf) per una traduzione immediata.
Tuttavia, il vietnamita non è molto ben supportato su queste due piattaforme e cerco da tempo un’alternativa a questi due strumenti.
Qualche giorno fa, mi sono resa conto che la traduzione di GPT4 era estremamente precisa rispetto alla versione GPT3.5, a DeepL e Google Translate.
Ho provato a caricare un file pdf e ottenere la traduzione con un clic, ma ChatGPT snobba i file troppo grandi e vuole tradurre solo una o due pagine. Ho chiesto a JB se poteva programmarmi un software per tradurre i miei libri cinesi, ma mi ha risposto che non era affatto una sua priorità. Ho voluto passare da un sito a pagamento (che usa l’API di OpenAI, ma voleva farmi pagare 200$ per la traduzione del libro). Così, ho preso la mia tastiera, il mio computer e ho programmato da sola.
Alla fine, ho programmato “da sola”, aiutata da ChatGPT. Ho scritto prompt per descrivergli le funzioni che voglio. In sostanza:
- Una piccola interfaccia web per caricare il file di base (.txt) e selezionare da una lista la lingua di partenza e quella di arrivo. Ho scelto .txt perché per ora non mi sento ancora capace di gestire una copia conforme del libro da tradurre con immagini (pdf, epub, ecc.). Un file di testo è molto semplice, va benissimo.
- Il testo da tradurre deve essere diviso in più paragrafi. Massimo xxx caratteri. Il fatto di tagliare in piccoli paragrafi permette di aggirare i limiti di chiamate e di token al minuto. Questi dati (xxx caratteri) sono ancora da testare da parte mia per trovare valori ottimali, per andare veloce, per pagare meno, rispettando i limiti di elaborazione.
- I paragrafi vengono inviati in modalità batch per andare più veloce
- La traduzione viene salvata in un file .txt, aggiornato appena arriva una nuova traduzione. Così, se il programma si pianta, recuperiamo comunque la parte già tradotta e sapremo tramite un secondo file .txt dove la traduzione si è fermata.
ChatGPT mi ha quindi generato diversi pezzi di codice, che ho corretto facendo critiche o specificando la mia richiesta. Alla fine ho ottenuto un file .html e un file .php

Dato che ho dovuto reinstallare Windows qualche giorno fa, non ho più nessun software sul computer. Dopo aver ottenuto i due codici, ho dovuto:
- Installare Sublime Text (per programmare)
- Installare Wampserver
- Installare PHP
- Installare Composer
- Installare Guzzle HTTP Client
- Installare CURL e le dipendenze, ottenere il file cacert.pem
Tutto questo è stato guidato da ChatGPT perché a ogni messaggio di errore si sa che bisogna installare qualcosa.
Poi, sono andata su OpenAI per generare una API Key. È super super semplice, davvero, ho avuto 100 volte più difficoltà con l’API di Google e Bing, qui è fin troppo facile.
Ho dovuto pagare 10$ (+2$ di tasse) per avere accesso all’API. 5$ bastano ma vabbè, so che ho molto da tradurre…
Risultato
Qualche ora dopo, ecco il risultato: L’interfaccia (file html) per caricare il mio file .txt

La traduzione generata sull’interfaccia. Ma ho anche un file .txt tradotto in locale.

Potete vedere che è tutto in locale perché è uno script fatto per me, non lo metterò online.
I prezzi
All’inizio, ho testato con il modello gpt-3.5-turbo per pagare meno e nonostante tutti i test, ho pagato solo 1 centesimo di dollaro. Invece, i mini test con il modello gpt-4 costano molto di più, si vedono i centesimi scorrere. Tuttavia, la traduzione è davvero migliore, è un piacere leggerla.
Secondo la mia stima, mi è costato circa 2$ per tradurre 4000 parole cinesi, ovvero 28 pagine con il modello gpt-4. È legato al fatto che all’inizio ho segmentato troppo. E il prompt consuma token anche lui. Più segmento, più ripeto il prompt e questo mi costa caro.
Poi, ho visto che gpt-4-1106-preview forniva la stessa qualità di traduzione, e costava 3 volte meno. L’unico inconveniente al momento del mio test era il limite ridicolo delle risposte (poco più di 4000 token), quindi dovevo segmentare il mio testo in base a quello. Nota: questo limite è stato notevolmente aumentato da allora.
Dopo aver segmentato meglio il mio testo (500 caratteri cinesi per richiesta e 4040 token totali per richiesta) e essere passata a gpt-4-1106-preview (3 volte più economico) pago circa 12$ per libro (134.000 caratteri cinesi in media per libro, ogni carattere cinese si traduce poi in 4 caratteri latini in media).
È comunque accettabile sapendo che DeepL avrebbe addebitato 8$ per una traduzione in francese, e Google Translation 0$. Ma è un libro a cui tengo molto e non ho capito bene la traduzione fatta da Google, quindi sono disposta a pagare un po’ di più per avere accesso alla conoscenza.
Ho impiegato un po’ di tempo per trovare l’URL dell’API OpenAI e i modelli perché ChatGPT non mi dava quello giusto. Ve li metto qui:
$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
];
Il codice per l’invio in batch non ha funzionato molto bene, più tardi vedrò come migliorare tutto questo. Senza l’invio in batch, purtroppo la traduzione è abbastanza lenta: 1 minuto per pagina, ovvero 133 parole al minuto.
gpt-4-1106-preview è più economico di gpt-4 ma al momento in cui l’ho usato, i limiti venivano raggiunti rapidamente. Non posso tradurre più di un libro al giorno (nota: i limiti sono stati aumentati da allora). Così, ho impiegato una settimana per tradurre l’insieme dei 6 libri. I modelli cambiano continuamente, non esitate a fare test, aumentare i token per richiesta, confrontare i prezzi e scegliere il modello più adatto alle vostre esigenze.
Non sono una sviluppatrice alla base, ma capisco html, php e Javascript. Il fatto che ChatGPT mi serva pezzi di codice già pronti su un piatto d’argento e che io debba solo correggerli mi ha fatto risparmiare molto tempo. Gli esempi di codice su OpenAI sono soprattutto in Python e io codifico in php, mi avrebbe richiesto molto tempo tradurre questi esempi da Python a Php, senza ChatGPT. Insomma, vi consiglio vivamente di usare ChatGPT per i vostri piccoli script, sia con l’API OpenAI, che senza.