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 tarda 1-2 segundos

  • Costoso: Costos de API por solicitud

  • Redundante: El mismo texto se traduce múltiples veces

  • Bloqueante: El usuario espera por la traducción

Necesitamos un mejor enfoque.

La Solución: Cola y Lotes

Cola: Recopilar solicitudes de traducción

Lote: Procesar múltiples traducciones juntas

Caché: Almacenar resultados para reutilización

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

Estructura de la Cola

Archivo de Cola

Ubicación: Archivo JSON en disco

Formato: Array 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 (product, query, article)

  • 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 inválidos

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. Parsear 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)

Prompt del sistema: En caché (igual para todos los lotes en un idioma)

Prompt del usuario: Variable (específico del lote)

Formato: Lista numerada

Ejemplo:

Translate these 10 texts:
1. Mini PC
2. Thin Client
3. Compact Desktop
...

Respuesta:

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

Parseo

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 parseo: Devolver textos originales

Éxito parcial: Guardar traducciones exitosas, reencolar fallidas

Estrategia de Caché

Tablas de Frases

Ubicación: Archivos JSON por idioma

Formato: {"English": "Translation"}

Carga: Se cargan una vez al inicio

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

Tasa de Aciertos de Caché

Primera ejecución: Baja (todo es nuevo)

Ejecuciones posteriores: Alta (la mayoría de textos 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 cores

Implementación: Patrones regex en el prompt 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 Prioridades

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

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

Prioridad baja: Contenido antiguo, raramente visto (procesar al final)

Beneficio: El contenido importante se traduce primero

Programación

Tarea 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 de Babel: Actualizar traducciones de plantillas semanalmente

Script: scripts/web/translate_articles_weekly.sh

Monitoreo

Tamaño de la Cola

Rastrear 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

Rastrear procesamiento:

  • Traducciones por lote

  • Tasa de éxito de API

  • Tasa de aciertos de caché

  • Tiempo de procesamiento

Seguimiento de Costos

Monitorear uso de 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

  • Parsear respuestas numeradas

  • Guardar en tablas de frases

Caché:

  • Verificar caché antes de traducir

  • Alta tasa de aciertos de caché

  • Costos de API reducidos

Programación:

  • Cada 6 horas vía cron

  • El 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 API y mejora la calidad de traducción mediante lotes y caché.


← Volver al Índice de Documentación