Comment traduire un Livre entier avec OpenAI API et ChatGPT

Cet article s’adresse aux geeks.

Je me suis toujours dit qu’il était injuste de ne pas avoir accès tous les livres dans le monde, juste parce qu’une infime partie est traduite dans une des langues que je maîtrise. J’ai découvert DeepL et google Translate, où l’on peut juste déposer un fichier (docx ou pdf) pour une traduction instantanée.

Cependant, le vietnamien n’est pas très bien supporté sur ces deux plateformes et cela fait longtemps que je cherche une alternative à ces deux outils.

Il y a quelques jours, je me suis rendu compte que la traduction de GPT4 était extrêmement précise par rapport à la version GPT3.5, à DeepL et Google Translate.

J’ai tenté d’uploader un fichier pdf et obtenir la traduction en un clic, mais ChatGPT boude les fichiers trop volumineux et ne veut traduire qu’une ou deux pages. J’ai demandé à JB s’il pouvait me coder un programme pour traduire mes livres chinois, mais il m’a répondu que ce n’était pas du tout sa priorité. J’ai voulu passer par un site payant (utilisant l’API d’OpenAI mais il voulait me facturer 200$ pour la traduction du livre). Ainsi, j’ai pris mon clavier, mon ordinateur et j’ai codé moi-même.

Enfin, j’ai codé « moi-même », aidée par ChatGPT. J’ai écrit des prompts pour lui décrire les fonctions que je veux. En gros :

  1. Une petite interface web pour uploader le fichier de base (.txt) et sélectionner dans une liste définie la langue de départ et la langue d’arrivée. J’ai choisi .txt car pour le moment, je ne me sens pas encore capable de gérer une copie conforme du livre à traduire avec des images (pdf, epub etc.). Un fichier texte, c’est très simple, très bien.
  2. Le texte à traduire doit être divisé en plusieurs paragraphes. Maximum xxx caractères. Le fait de couper en petits paragraphes permet de contourner les limites d’appels et de tokens par minute. Ces données (xxx caractères) sont encore à tester de mon côté pour trouver des valeurs optimales, pour que ça aille vite, pour payer moins, tout en respectant les limites de traitement.
  3. Les paragraphes sont envoyés en mode batch pour aller plus vite
  4. La traduction est stockée sur un fichier .txt, mis à jour dès qu’une nouvelle traduction arrive. Ainsi si jamais le programme plante, on récupérera quand même la partie déjà traduite et on saura grâce à un deuxième fichier .txt où la traduction s’est arrêtée.

ChatGPT m’a donc généré plusieurs bouts de codes, que j’ai corrigés en émettant des critiques, ou en précisant ma demande. J’ai fini par avoir un fichier .html et un fichier .php

Puisque j’ai dû réinstaller Windows il y a quelques jours, je n’ai plus aucun logiciel sur mon ordinateur. Après avoir obtenu les deux codes, il a fallu :

  1. Installer Sublime Text (pour coder)
  2. Installer Wampserver
  3. Installer php
  4. Installer Composer
  5. Installer Guzzle HTTP Client
  6. Installer CURL, et les dependencies, obtenir le fichier cacert.pem

Tout ça a été guidé par ChatGPT car à chaque message d’erreur, on sait qu’il faut installer un truc.

Ensuite, je suis allée sur OpenAI pour générer un API Key. C’est super super simple, franchement, j’ai eu 100 fois plus de mal avec l’API Google et Bing, là c’est même trop easy.
J’ai dû payer 10$ (+2$ de taxes) pour avoir accès à l’API. 5$ suffit mais bon, je sais que j’ai beaucoup à traduire…


Résultat

Quelques heures plus tard, voici le résultat : L’interface (fichier html) pour uploader mon fichier .txt

La traduction générée sur l’interface. Mais j’ai aussi un fichier .txt traduit en local.

Vous pouvez voir que tout est en local car c’est un script fait pour moi, je ne vais pas le mettre en ligne.

Les tarifs

Au début, j’ai testé avec le modèle gpt-3.5-turbo pour payer moins cher et malgré tous les tests, je n’ai payé que 1 centime de dollars. Par contre, les mini tests avec le modèle gpt-4 coûtent beaucoup plus chers, on voit les centimes défiler. Cependant, la traduction est vraiment meilleure, c’est un plaisir de la lire.

Selon mon estimation, ça m’a coûté 2$ environ pour traduire 4000 mots chinois, soit 28 pages avec le modèle gpt-4. C’est lié au fait que j’aie trop segmenté au début. Et le prompt consomme du token également. Plus je segmente, plus je répète le prompt et ça me coûte cher.

Ensuite, j’ai vu que gpt-4-1106-preview fournissait la même qualité de traduction, et coûtait 3 fois moins cher. Le seul inconvénient au moment de mon test était la limite ridicule des réponses (un peu plus de 4000 tokens) du coup je devais segmenter mon texte en fonction. Note : cette limite a été fortement augmentée depuis.

Après avoir mieux segmenté mon texte (500 caractères chinois par request et 4040 tokens totaux par request) et être passée à gpt-4-1106-preview (3 fois moins cher) je paie environ 12$ par livre (134 000 caractères chinois en moyenne par livre, chaque caractère chinois se traduit ensuite en 4 caractères latins en moyenne).

Cela resté OK sachant que DeepL aurait facturé 8$ pour une traduction en français, et Google Translation 0$. Mais c’est un livre qui me tient à cœur et je n’ai pas bien compris la traduction faite par Google, donc je suis prête à payer un peu plus cher pour avoir accès à la connaissance.

J’ai mis un peu de temps à trouver l’url d’OpenAI API et les modèles car ChatGPT ne me donnait pas le bon. Je vous les mets ici :

$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
];

Le code pour l’envoi en batch n’a pas très bien fonctionné, je vais regarder plus tard comment améliorer tout ça. Sans l’envoi en batch, malheureusement la traduction est assez lente : 1 minute par page, soit 133 mots par minute.

gpt-4-1106-preview est moins cher que gpt-4 mais au moment où je l’ai utilisé, les limites étaient vite atteintes. Je ne peux pas traduire plus d’un livre par jour (note : les limites ont été augmentées depuis). Ainsi, j’ai mis une semaine pour traduire l’ensemble des 6 livres. Les modèles changent sans cesse, n’hésitez pas à faire des tests, augmenter les tokens par request, comparer les prix et choisir le modèle le plus adapté à vos besoins.

Je ne suis pas développeuse à la base, mais je comprends le html, php et Javascript. Le fait que ChatGPT me serve des bouts de code tout prêts sur un plateau et que je n’ai qu’à les corriger m’a fait gagner beaucoup de temps. Les exemples de codes sur OpenAI sont surtout en Python et je code en php, ça m’aurait pris beaucoup de temps de traduire ces exemples de Python en Php, sans ChatGPT. Bref, je vous recommande vivement d’utiliser ChatGPT pour vos petits scripts, que ce soit avec l’API OpenAI, ou pas.

Mes Favoris du Moment [Janvier 2024] : Sac, Gilet et Couette matelassés faits main
Carte SIM / eSIM 4G prépayée en Bolivie : Combien ça coûte ? Où en acheter ?
    Anh

    Anh est franco-vietnamienne et a vécu dans de nombreux pays (Russie, Australie, France, Norvège, Vietnam). Elle aime par dessus tout les chats, le DIY et la bonne cuisine. Ayant une très bonne mémoire, Anh est capable de vous donner le tarif du petit bus pris entre le Chili et la Bolivie qu'elle a pris il y a 3 ans.

    Tous Mes Articles
    Write a comment

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.