(El bueno) 2021LM – Sobre la traducción con IA (I)

Crónica de mis problemas al usar un software de traducción con IA. Desde fallos con LLMs locales hasta errores con la API de Gemini. Una historia de bugs.

Este texto ha sido generado por Gemini 2.5/3.1 a partir del audio del autor. El contenido y las ideas son íntegramente del autor; la redacción ha sido asistida por IA.


¿Qué pasa, gallinicas mías? Aquí vuestro reportero más dicharachero de barrio Sésamo, grabando este audio directamente desde un S24 Ultra. ¿La razón? Pues que a uno se le olvidó poner a cargar el iPhone anoche y esta mañana andaba con la batería justa para ir a la compra. Ya sabéis que los viernes no trabajo, así que me tocaba a mí hacer los recados del fin de semana.

La cosa es que tuve que ir dos veces. La primera fui demasiado temprano y, claro, Inconveniente me recordó que faltaban las tortas para los burritos. Así que, vuelta al súper. Y fue justo ahí, en mitad del segundo viaje, cuando me di cuenta del percal de la batería. Menos mal que los iPhone son como son: te dicen que no tienen batería, pero con un 1% aguantan medio día. Una pequeña odisea matutina que no era más que el preludio de la odisea tecnológica que os vengo a contar.

Porque, como siempre, primero viene el hype, la expectación, y luego llega el tío de la rebaja. Hoy os voy a hablar de una aplicación de traducción que, sinceramente, tiene más pegas que un colegio en septiembre. Pero antes, un pequeño inciso.

Paréntesis Kafkiano: Una Charla con Gemini

Próximamente vais a ver un par de «pataticas» (mis pequeños experimentos sonoros) muy estrambóticos, creados con Notebook LM de Google. Resulta que el otro día, mientras esperaba una llamada, me lié en una conversación surrealista con Gemini. Empecé preguntando por la constante de la gravitación universal y terminamos debatiendo sobre el sentido de la vida. Una locura.

Publicaré la conversación completa en mi blog, rfog.es, para que veáis lo kafkiano que puede llegar a ser un LLM cuando está de dulce. Y que conste, para los que se quejan, que a mí Gemini me está funcionando de cojones, tanto en lo personal como en el trabajo. Sin ir más lejos, el otro día me salvó el culo con una API REST. Estaba convencido de que el fallo era del servidor, pero Gemini me generó un script curl y encontró el problema en mi código: un valor que, según la documentación, tenía que ser ‘1’ aleatoriamente. ¡Toma ya!

La Herramienta de Traducción: Un Pozo de Problemas

Volvamos al lío. El programa de traducción del que os hablaba es un desastre. Para empezar, se queda colgado sin motivo aparente. Simplemente se para, sin errores en el log ni nada. Sospecho que se queda esperando una respuesta del LLM local que nunca llega, y la única solución es matar el proceso del navegador y todas las consolas abiertas. Un simple reinicio no basta, hay que aniquilarlo todo.

Pensé que podría ser culpa de mi LLM local. Aunque uso un modelo potente de 7 u 8 billones de parámetros, a veces falla diciendo que los placeholders no funcionan bien y que necesitaría un modelo superior. Probé con uno de 109 billones de parámetros y… el mismo fallo. El problema no es el modelo; es el software que no recoge bien la respuesta, porque yo veo en la consola de LM Studio que la respuesta se ha generado. Un bug de esos que los barbudos dejan para el final por lo complicados que son.

Plan B: ¿Y si Pagamos por la API de Gemini?

Cansado del LLM local, decidí probar con la API de Google. Me generé un token y a correr. El primer modelo de Gemini que probé estaba obsoleto. ¿Me avisó el programa? No. Tuve que descubrirlo yo mirando la consola después de media hora. El segundo modelo que elegí, más moderno, daba otro error críptico en un campo que impedía su uso. De nuevo, cero feedback en la interfaz.

Finalmente, con Gemini 1.5 Lite, la cosa empezó a funcionar. ¡Aleluya! Pero la alegría duró dos minutos. La API empezó a devolver mensajes de «estoy muy ocupado, prueba en otro momento». ¡Pero si estoy pagando tokens, coño! Me da igual que tardes más o menos, ¡estoy gastando dinero! ¿Encima de que pago, no funciona? Venga, hombre, no me toques los cojones.

Victoria Pírrica y Fallos Inexcusables

Tras un sinfín de arranques, paradas y «mataciones» de procesos, conseguí traducir una revista de ciencia ficción de 200 páginas (lo que equivale a un libro de 400). El coste fue ridículo, unos 50 céntimos. Pero el proceso fue un infierno. El programa no reintenta bien los fallos y, para colmo, no hace algo tan básico como cambiar la etiqueta de idioma en los archivos XHTML de ‘en’ a ‘es’, lo que rompe la separación de sílabas y otras funciones en los lectores de eBooks.

Podría forquear el proyecto, que es Python, y arreglarlo. ¿Ganas? Pocas, o ninguna. Si tengo que hacerlo, me monto yo mi propia herramienta en C# y me aseguro de gestionar bien los errores. Como dice mi jefe, el 80% del desarrollo lo haces enseguida. Del 20% restante, el 10% cuesta bastante, el 5% cuesta mucho, y el último 5% es ese grano en el culo que no te deja sentarte durante semanas. Este programa se quedó en el 80%.

Sinceramente, ¿qué se puede esperar de Python? Esta mierda y esta basura. Tienes que estar encima constantemente. Y para eso, pues ya me diréis. En fin, no olvidéis esos hechos habitualizaros y recordad los «pataticas» kafkianos que se vienen.

¡Que no os la pique un pollo belga! Ademonio.

2015LM – Más negro y más grande

La espera de mi nuevo equipo me inspira a planificar proyectos de IA, desde un lector de noticias inteligente a entrenar LORAs. Y de paso, rajo de Python.

Este texto ha sido generado por Gemini 2.5/3.1 a partir del audio del autor. El contenido y las ideas son íntegramente del autor; la redacción ha sido asistida por IA.


¡Qué pasa, gallinicas mías! Aquí vuestro reportero más dicharachero con un batiburrillo de ideas mientras espero mi última adquisición. Mi «cosa grande y negra» ya se está moviendo por China y, aunque tenía la esperanza de que llegara de un día para otro, parece que se hará de rogar hasta el lunes o martes. ¡Ojalá sea el lunes para pillarla en casa!

Esto me ha recordado a cuando compré uno de los primeros Kindle DX en Estados Unidos. Gracias a la magia de los husos horarios, el cálculo final fue que tardó solo ocho horas en llegar desde la compra. En realidad, esperé día y medio, porque los amigos de aduanas en Alicante lo pararon y me tocó ir a negociar. Intenté que lo pasaran como un libro, pero no coló y tuve que pagar el pico correspondiente a un dispositivo electrónico con pantalla.

Mi gato, la aspiradora y la curiosidad

Cambiando de tercio, teníamos pánico de que nuestro gato huyera despavorido de la aspiradora. Pues nada más lejos de la realidad. El tío va siguiendo a Inconvenient mientras limpia, asomando la cabecita para no perderse detalle. Es un gato curioso, pero no en el sentido de cotilla, sino en el de limpio. Porque, para los incultos, «curioso» también significa pulcro, una acepción menos común pero igualmente válida. Esto me recuerda a las viñetas de los TBO de mi época, pero mejor no divago más, que la ancianidad es lo que tiene.

Planes para la bestia: Un lector de noticias con esteroides

He dejado de pagar InnoReader y, con el OPML que tengo en Devonthink, voy a construir mi propio agregador de noticias. Pero no será uno cualquiera. La idea es que un LLM procese los feeds y me construya un resumen diario, agrupado por temas y ordenado de más a menos interesante para mí. Aquí viene lo bueno: si varios medios publican sobre lo mismo, como una nueva beta de Apple, el sistema bajará todas las noticias, extraerá los puntos comunes y las diferencias, y me presentará un informe consolidado. Así me evitaré leer veinte veces la misma historia sobre la retirada de Tim Cook.

La idea es que, con el tiempo, el sistema aprenda y, si sale una noticia relacionada con una anterior, solo me muestre las novedades junto a un pequeño recordatorio. También planeo integrar resúmenes de vídeos de YouTube, algo que ya hago con Copilot, que por cierto, genera resúmenes bastante mejores que los de InnoReader. Todo esto se ejecutará en local, en mi nueva máquina, aunque quizás termine usando algunos tokens en remoto. Incluso contemplo la posibilidad de publicar estos resúmenes en un feed RSS privado en mi blog.

¿Por qué C# y no Python? Mi cruzada personal

Con la ayuda de Gemini, he decidido que todo este proyecto lo haré con C# y otras herramientas. ¿Por qué no Python, el rey de la IA? Porque, seamos claros, Python es una puta mierda pinchada en un palo. No soporto que, a estas alturas del siglo XXI, sus entornos virtuales sigan usando rutas absolutas. La solución de crear un requirements.txt para que cada equipo genere el entorno en una ruta local diferente me parece una chapuza.

Con C# me siento cómodo. Tengo Avalonia para la interfaz gráfica, que usa XAML igual que en Windows, lo que facilitaría una futura migración. Sí, todo sale primero en Python en el mundo de la IA, pero sus carencias son horrorosas. El manejo de dependencias es un desastre: te obliga a usar versiones específicas de paquetes, y si uno tiene un fallo de seguridad, o te aguantas o rehaces todo. Esto pasa porque muchos de sus desarrolladores son «vivecodings», no ingenieros de software, y los demás pagamos el pato. Así que mis scripts actuales, como los que limpian estos audios, los reescribiré en C#.

Más allá de los resúmenes: Experimentando con LORAs

Otro de los experimentos que quiero hacer con la «cosa grande y gorda» es reentrenar un modelo, o más bien, modificarlo creando un LORA. Por ejemplo, me encantaría meterle todas las novelas de Julio Verne para crear una IA que sea una verdadera experta en su obra. Ya lo intenté con LM Studio, pero no pudo con todos los libros y las respuestas que daba eran incompletas. Con un LORA, el resultado debería ser infinitamente mejor.

Mientras escuchaba el último podcast de Apple Coding con Julio César Fernández y Oliver Navani, pensaba en todo esto. Con todo el respeto, a veces me da la sensación de que fuman algo, porque sus planteamientos son un poco exagerados. Me gustaría que Oliver publicara esos ficheros de su «Open Caca» para ver si es oro todo lo que reluce.

Y a todo esto, ¿qué pasa con los agentes de IA?

Entiendo lo que hacen los agentes, pero no les termino de ver la utilidad práctica para mi día a día. ¿Qué diferencia real hay entre subir este audio a un agente para que lo procese, o simplemente dejarlo en una carpeta y pulsar un botón? Para mí, ninguna. Para hacer preguntas ya tengo el chat. Es como tener un martillo pero no saber dónde clavar. No me termina de cuadrar.

En el trabajo es impensable. Si le digo a mi jefe que he conectado un agente al código fuente de la empresa, heredo de forma fulminante. Quizás en un futuro, si le convenzo para montar un Mac Studio con 512 GB de RAM en su casa, podría usarlo en remoto para que los agentes me ayuden a refactorizar la interfaz de nuestra aplicación, pero por ahora, es ciencia ficción.

Una inversión justificada (o eso espero)

Alguno se preguntará por qué no esperé a un nuevo Mac Studio. La respuesta es simple: no sé cuándo saldrá un modelo con los 128 o 256 GB de RAM que necesito. Así que me lancé a por el MacBook Pro. Ha sido una pasta, sí. Ya podéis estimar lo que me he gastado. Espero que la paga extra de mayo me sirva para igualar un poco los números y no destrozar mi nivel de ahorro.

En fin, eso es todo por ahora. Os iré manteniendo al día con los avances de la «cosa grande y negra». No olvidéis sospechosos habitualizaros y que no os la pique un pollo belga. ¡A demonio!