TDM

Cómo traducir un libro entero con OpenAI API y ChatGPT

Este artículo está dirigido a los geeks.

Siempre he pensado que es injusto no tener acceso a todos los libros del mundo, solo porque una mínima parte está traducida a uno de los idiomas que domino. Descubrí DeepL y Google Translate, donde puedes simplemente subir un archivo (docx o pdf) para una traducción instantánea.

Sin embargo, el vietnamita no está muy bien soportado en estas dos plataformas y hace tiempo que busco una alternativa a estas dos herramientas.

Hace unos días, me di cuenta de que la traducción de GPT4 era extremadamente precisa en comparación con la versión GPT3.5, a DeepL y Google Translate.

Intenté subir un archivo pdf y obtener la traducción con un clic, pero ChatGPT rechaza los archivos demasiado grandes y solo quiere traducir una o dos páginas. Le pedí a JB que me programara una aplicación para traducir mis libros chinos, pero me respondió que no era su prioridad en absoluto. Quise recurrir a un sitio de pago (que usa la API de OpenAI), pero quería cobrarme 200$ por la traducción del libro. Así que tomé mi teclado, mi computadora y programé yo misma.

Bueno, programé «yo misma», ayudada por ChatGPT. Escribí prompts para describirle las funciones que quería. En resumen:

  1. Una pequeña interfaz web para subir el archivo base (.txt) y seleccionar en una lista definida el idioma de origen y el idioma de destino. Elegí .txt porque por ahora no me siento capaz de manejar una copia fiel del libro a traducir con imágenes (pdf, epub, etc.). Un archivo de texto es muy simple, muy bien.
  2. El texto a traducir debe dividirse en varios párrafos. Máximo xxx caracteres. El hecho de cortar en párrafos pequeños permite sortear los límites de llamadas y tokens por minuto. Estos datos (xxx caracteres) todavía están por probar de mi lado para encontrar valores óptimos, para que vaya rápido, para pagar menos, respetando los límites de procesamiento.
  3. Los párrafos se envían en modo batch para ir más rápido.
  4. La traducción se guarda en un archivo .txt, que se actualiza en cuanto llega una nueva traducción. Así, si el programa se bloquea, recuperaremos la parte ya traducida y sabremos gracias a un segundo archivo .txt dónde se detuvo la traducción.

ChatGPT me generó varios fragmentos de código, que corregí emitiendo críticas o especificando mi petición. Terminé con un archivo .html y un archivo .php

Como tuve que reinstalar Windows hace unos días, ya no tengo ningún software en mi computadora. Después de obtener los dos códigos, tuve que:

  1. Instalar Sublime Text (para programar)
  2. Instalar Wampserver
  3. Instalar php
  4. Instalar Composer
  5. Instalar Guzzle HTTP Client
  6. Instalar CURL, y las dependencias, obtener el archivo cacert.pem

Todo esto fue guiado por ChatGPT porque con cada mensaje de error, sabes que tienes que instalar algo.

Luego, fui a OpenAI para generar una API Key. Es súper súper simple, sinceramente, tuve 100 veces más problemas con la API de Google y Bing, aquí es incluso demasiado fácil.
Tuve que pagar 10$ (+2$ de impuestos) para tener acceso a la API. 5$ es suficiente, pero bueno, sé que tengo mucho que traducir…


Resultado

Unas horas después, aquí está el resultado: La interfaz (archivo html) para subir mi archivo .txt

La traducción generada en la interfaz. Pero también tengo un archivo .txt traducido en local.

Puedes ver que todo es en local porque es un script hecho para mí, no lo voy a poner en línea.

Las tarifas

Al principio, probé con el modelo gpt-3.5-turbo para pagar menos y a pesar de todas las pruebas, solo pagué 1 céntimo de dólar. En cambio, las mini pruebas con el modelo gpt-4 cuestan mucho más caros, se ven pasar los céntimos. Sin embargo, la traducción es realmente mejor, es un placer leerla.

Según mi estimación, me costó unos 2$ traducir 4000 palabras chinas, es decir, 28 páginas con el modelo gpt-4. Esto se debe a que al principio segmenté demasiado. Y el prompt también consume tokens. Cuanto más segmento, más repito el prompt y me resulta caro.

Luego, vi que gpt-4-1106-preview ofrecía la misma calidad de traducción y costaba 3 veces menos. El único inconveniente en el momento de mi prueba era el límite ridículo de respuestas (un poco más de 4000 tokens), así que tenía que segmentar mi texto en consecuencia. Nota: este límite se ha aumentado considerablemente desde entonces.

Después de segmentar mejor mi texto (500 caracteres chinos por solicitud y 4040 tokens en total por solicitud) y pasar a gpt-4-1106-preview (3 veces más barato), pago aproximadamente 12$ por libro (134,000 caracteres chinos de media por libro, y cada carácter chino se traduce luego en 4 caracteres latinos de media).

Sigue siendo aceptable sabiendo que DeepL habría cobrado 8$ por una traducción al francés, y Google Translation 0$. Pero es un libro que me importa mucho y no entendí bien la traducción que hizo Google, así que estoy dispuesta a pagar un poco más para tener acceso al conocimiento.

Tardé un poco en encontrar la url de OpenAI API y los modelos porque ChatGPT no me daba la correcta. Os las pongo aquí:

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

El código para el envío en lote no funcionó muy bien, miraré más tarde cómo mejorar todo esto. Sin el envío en lote, desgraciadamente la traducción es bastante lenta: 1 minuto por página, es decir, 133 palabras por minuto.

gpt-4-1106-preview es más barato que gpt-4 pero en el momento en que lo usé, los límites se alcanzaban rápidamente. No puedo traducir más de un libro al día (nota: los límites se han aumentado desde entonces). Así que tardé una semana en traducir los 6 libros. Los modelos cambian constantemente, no dudéis en hacer pruebas, aumentar los tokens por solicitud, comparar precios y elegir el modelo más adecuado a vuestras necesidades.

No soy desarrolladora de base, pero entiendo html, php y Javascript. El hecho de que ChatGPT me sirva trozos de código ya hechos en bandeja y que solo tenga que corregirlos me ha ahorrado mucho tiempo. Los ejemplos de código en OpenAI son sobre todo en Python y yo programo en php, me habría llevado mucho tiempo traducir esos ejemplos de Python a Php sin ChatGPT. En fin, os recomiendo encarecidamente usar ChatGPT para vuestros pequeños scripts, ya sea con la API de OpenAI o no.

Ahora uso Claude Code, más información aquí, y allí

Comentarios desactivados en Cómo traducir un libro entero con OpenAI API y ChatGPT