Chunk Translator : confier à un LLM la traduction de longs textes en les découpant finement
(translate.winterjung.dev)J’ai créé un petit outil HTML qui permet de traduire de longs articles de blog sans omettre de phrases, en les découpant par paragraphes, en les traduisant, puis en les réassemblant.
- Quand on demande à un LLM comme ChatGPT de tout traduire d’un bloc, il a tendance à oublier des phrases une par une, ou à résumer librement, bref il ne s’en sort pas très bien en une seule fois.
- On pourrait aussi peaufiner davantage le prompt, mais je voulais plutôt obtenir un résultat correct avec simplement du copier-coller et un bouton de traduction ; j’ai donc permis de découper les longs textes en chunks pour lancer en parallèle leur traduction par de petits modèles.
- En option, pour obtenir une traduction plus context-aware lors de l’envoi des requêtes aux petits modèles, il est possible d’ajouter un résumé généré au préalable par un modèle plus intelligent.
- S’il y a des points à améliorer dans la traduction par chunk, on peut ajouter des consignes et retraduire chaque chunk individuellement.
- Comme l’outil fonctionne en static single html page, sans serveur séparé, chaque utilisateur doit configurer son propre provider et sa propre clé API. Comme on peut le vérifier dans l’inspecteur réseau ou dans le code source, aucune information sensible n’est envoyée ailleurs qu’aux fournisseurs d’API LLM comme OpenAI ou OpenRouter. Je n’ai pas non plus ajouté d’outil d’analytics.
- J’aurais aimé le proposer au moins comme démo même sans clé API, pour que vous puissiez l’essayer, mais je réfléchis encore à la manière de faire sur ce point.
Le code est disponible dans le repo GitHub, vous pouvez donc le télécharger et l’utiliser vous-même (il suffit d’ouvrir le fichier index.html dans le navigateur pour avoir exactement le même usage), et les contributions, signalements d’issues, questions et retours sont tous les bienvenus.
3 commentaires
C’est exactement ce qu’il me fallait, merci. Pour les sous-titres, à cause de ce problème, il y avait gui-subtrans qui faisait les requêtes ligne par ligne. Mais pour le texte brut, je ne connaissais pas vraiment de service adapté à ça (la page de traduction proposée par OpenAI est presque inutilisable =m =...). C’était embêtant, donc oui, c’est pas mal..
Pour un usage personnel, j’ai créé une app en SwiftUI qui utilise l’Apple Translator API (elle tourne en local) et qui, en interne, découpe les lignes pour demander la traduction. Je me suis dit que, s’il était possible d’appeler cette API aussi depuis le navigateur, ce ne serait peut-être pas une mauvaise idée de proposer une démo de cette façon. Mais comme c’est probablement une API liée à l’appareil, ça doit être impossible...
Il existe aussi une page web, mais cela semble également bien adapté à la traduction de documents ou à d'autres usages. :)