Cola de Traducción: Sistema de Procesamiento por Lotes

Este artículo explica cómo encolamos y procesamos traducciones por lotes para optimizar el uso de la API de IA.

El Problema: La Traducción Bajo Demanda es Costosa

Traducir contenido bajo demanda tiene problemas:

  • Lento: Cada traducción toma 1-2 segundos

  • Costoso: Costos de API por solicitud

  • Redundante: El mismo texto traducido múltiples veces

  • Bloqueante: El usuario espera por la traducción

Necesitamos un mejor enfoque.

La Solución: Encolar y Procesar por Lotes

Cola: Recopilar solicitudes de traducción

Lote: Procesar múltiples traducciones juntas

Caché: Almacenar resultados para reutilizar

Programar: Procesar la cola periódicamente (no en tiempo real)

Estructura de la Cola

Archivo de Cola

Ubicación: Archivo JSON en disco

Formato: Arreglo de solicitudes de traducción

Campos:

  • text: Texto en inglés a traducir

  • target_lang: Código de idioma (hi, de, fr, etc.)

  • context: Dónde aparece el texto (producto, consulta, artículo)

  • priority: Alta/normal/baja

Agregar a la Cola

Cuando falta una traducción:

queue_translation(text, target_lang, context="product")

Deduplicación: Verificar si ya está en cola

Validación: Rechazar valores basura

Procesamiento por Lotes

Script

Ubicación: scripts/web/process_translation_queue.py

Programación: Se ejecuta cada 6 horas vía cron

Archivo de bloqueo: Previene ejecuciones concurrentes

Flujo del Proceso

1. Cargar cola: Leer todas las solicitudes pendientes

2. Agrupar por idioma: Agrupar solicitudes del mismo idioma

3. Deduplicar: Eliminar duplicados dentro del lote

4. Verificar caché: Omitir textos ya traducidos

5. Traducir lote: Enviar a la API de DeepSeek

6. Analizar resultados: Extraer traducciones de la respuesta

7. Guardar en caché: Almacenar en tablas de frases

8. Limpiar cola: Eliminar solicitudes procesadas

Traducción por Lotes

Llamada a la API

Modelo: DeepSeek-V3 (vía Together.ai)

Instrucción del sistema: En caché (igual para todos los lotes en el idioma)

Instrucción del usuario: Variable (específica del lote)

Formato: Lista numerada

Ejemplo:

Traduce estos 10 textos:
1. Mini PC
2. Thin Client
3. Compact Desktop
...

Respuesta:

1. मिनी पीसी
2. थिन क्लाइंट
3. कॉम्पैक्ट डेस्कटॉप
...

Análisis

Extraer traducciones por número de línea:

  • Eliminar prefijo numérico (1., 2., etc.)

  • Emparejar con textos originales por posición

  • Validar que el conteo coincida

Manejo de Errores

Fallo de API: Reintentar con API de respaldo

Fallo de análisis: Devolver textos originales

Éxito parcial: Guardar traducciones exitosas, volver a encolar fallos

Estrategia de Caché

Tablas de Frases

Ubicación: Archivos JSON por idioma

Formato: {"Inglés": "Traducción"}

Carga: Cargadas una vez al inicio

Beneficio: Búsquedas rápidas, sin llamadas a la API

Tasa de Acierto de Caché

Primera ejecución: Baja (todo es nuevo)

Ejecuciones posteriores: Alta (la mayoría de textos están en caché)

Beneficio: Costos de API reducidos

Reglas de Preservación

Durante la traducción, preservamos:

Nombres de marca: Thinvent®, Intel®, AMD®

Etiquetas HTML: <p>, <br>, <strong>

URLs: https://www.thinvent.in

SKUs: Treo-N100-8-256

Números: 8GB, 256GB, 4 núcleos

Implementación: Patrones de regex en la instrucción del sistema

Detección de Idioma

Antes de traducir, verificar si ya está traducido:

Método: Análisis de conjunto de caracteres

Hindi: Escritura Devanagari

Chino: Caracteres CJK

Árabe: Escritura árabe

Beneficio: Omitir traducciones innecesarias

Manejo de Prioridad

Prioridad alta: Nombres de productos, características (procesar primero)

Prioridad normal: Descripciones, artículos (procesar segundo)

Prioridad baja: Contenido antiguo, raramente visto (procesar último)

Beneficio: Contenido importante traducido primero

Programación

Trabajo Cron

Frecuencia: Cada 6 horas

Comando: python3 scripts/web/process_translation_queue.py

Archivo de bloqueo: /tmp/process_translation_queue.lock

Beneficio: Procesamiento automático, sin intervención manual

Tareas Semanales

Artículos: Traducir nuevos artículos semanalmente

Cadenas Babel: Actualizar traducciones de plantillas semanalmente

Script: scripts/web/translate_articles_weekly.sh

Monitoreo

Tamaño de la Cola

Seguir solicitudes pendientes:

  • Total de solicitudes

  • Solicitudes por idioma

  • Antigüedad de la solicitud más antigua

Alerta: Si la cola crece demasiado

Estadísticas de Traducción

Seguir el procesamiento:

  • Traducciones por lote

  • Tasa de éxito de la API

  • Tasa de acierto de caché

  • Tiempo de procesamiento

Seguimiento de Costos

Monitorear el uso de la API:

  • Solicitudes por día

  • Tokens por solicitud

  • Costo por idioma

Referencias

Artículos Relacionados

Resumen

La cola de traducción permite un procesamiento por lotes eficiente:

Cola:

  • ✅ Recopilar solicitudes de traducción

  • ✅ Deduplicar dentro del lote

  • ✅ Manejo de prioridades

  • ✅ Validación y filtrado

Procesamiento por lotes:

  • ✅ Agrupar por idioma

  • ✅ Enviar a la API de DeepSeek

  • ✅ Analizar respuestas numeradas

  • ✅ Guardar en tablas de frases

Caché:

  • ✅ Verificar caché antes de traducir

  • ✅ Alta tasa de acierto de caché

  • ✅ Costos de API reducidos

Programación:

  • ✅ Cada 6 horas vía cron

  • ✅ Archivo de bloqueo previene ejecuciones concurrentes

  • ✅ Traducciones semanales de artículos

Preservación:

  • ✅ Nombres de marca

  • ✅ Etiquetas HTML

  • ✅ URLs y SKUs

Este enfoque reduce los costos de la API y mejora la calidad de la traducción mediante el procesamiento por lotes y el almacenamiento en caché.


← Volver al Índice de Documentación