Fila de Tradução: Sistema de Processamento em Lote

Este artigo explica como enfileiramos e processamos traduções em lote para otimizar o uso da API de IA.

O Problema: Tradução Sob Demanda é Cara

Traduzir conteúdo sob demanda apresenta problemas:

  • Lento: Cada tradução leva 1-2 segundos

  • Caro: Custos de API por requisição

  • Redundante: O mesmo texto é traduzido múltiplas vezes

  • Bloqueante: O usuário espera pela tradução

Precisamos de uma abordagem melhor.

A Solução: Fila e Lote

Fila: Coletar requisições de tradução

Lote: Processar múltiplas traduções juntas

Cache: Armazenar resultados para reutilização

Agendamento: Processar a fila periodicamente (não em tempo real)

Estrutura da Fila

Arquivo de Fila

Localização: Arquivo JSON em disco

Formato: Array de requisições de tradução

Campos:

  • text: Texto em inglês a traduzir

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

  • context: Onde o texto aparece (produto, consulta, artigo)

  • priority: Alta/normal/baixa

Adicionando à Fila

Quando uma tradução está faltando:

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

Deduplicação: Verificar se já está na fila

Validação: Rejeitar valores inválidos

Processamento em Lote

Script

Localização: scripts/web/process_translation_queue.py

Agendamento: Executa a cada 6 horas via cron

Arquivo de bloqueio: Impede execuções simultâneas

Fluxo do Processo

1. Carregar fila: Ler todas as requisições pendentes

2. Agrupar por idioma: Agrupar requisições do mesmo idioma

3. Deduplicar: Remover duplicatas dentro do lote

4. Verificar cache: Pular textos já traduzidos

5. Traduzir lote: Enviar para a API DeepSeek

6. Analisar resultados: Extrair traduções da resposta

7. Salvar no cache: Armazenar nas tabelas de frases

8. Limpar fila: Remover requisições processadas

Tradução em Lote

Chamada à API

Modelo: DeepSeek-V3 (via Together.ai)

Prompt do sistema: Em cache (o mesmo para todos os lotes no idioma)

Prompt do usuário: Variável (específico do lote)

Formato: Lista numerada

Exemplo:

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

Resposta:

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

Análise

Extrair traduções pelo número da linha:

  • Remover prefixo numérico (1., 2., etc.)

  • Corresponder aos textos originais por posição

  • Validar se a contagem corresponde

Tratamento de Erros

Falha na API: Tentar novamente com API de fallback

Falha na análise: Retornar textos originais

Sucesso parcial: Salvar traduções bem-sucedidas, reenfileirar falhas

Estratégia de Cache

Tabelas de Frases

Localização: Arquivos JSON por idioma

Formato: {"English": "Translation"}

Carregamento: Carregado uma vez na inicialização

Benefício: Consultas rápidas, sem chamadas à API

Taxa de Acerto do Cache

Primeira execução: Baixa (tudo novo)

Execuções subsequentes: Alta (a maioria dos textos em cache)

Benefício: Custos de API reduzidos

Regras de Preservação

Durante a tradução, preservamos:

Nomes de marcas: Thinvent®, Intel®, AMD®

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

URLs: https://www.thinvent.in

SKUs: Treo-N100-8-256

Números: 8GB, 256GB, 4 cores

Implementação: Padrões regex no prompt do sistema

Detecção de Idioma

Antes de traduzir, verificar se já está traduzido:

Método: Análise do conjunto de caracteres

Hindi: Escrita Devanágari

Chinês: Caracteres CJK

Árabe: Escrita árabe

Benefício: Pular traduções desnecessárias

Tratamento de Prioridade

Alta prioridade: Nomes de produtos, recursos (processar primeiro)

Prioridade normal: Descrições, artigos (processar em segundo)

Baixa prioridade: Conteúdo antigo, raramente visualizado (processar por último)

Benefício: Conteúdo importante traduzido primeiro

Agendamento

Tarefa Cron

Frequência: A cada 6 horas

Comando: python3 scripts/web/process_translation_queue.py

Arquivo de bloqueio: /tmp/process_translation_queue.lock

Benefício: Processamento automático, sem intervenção manual

Tarefas Semanais

Artigos: Traduzir novos artigos semanalmente

Strings do Babel: Atualizar traduções de templates semanalmente

Script: scripts/web/translate_articles_weekly.sh

Monitoramento

Tamanho da Fila

Acompanhar requisições pendentes:

  • Total de requisições

  • Requisições por idioma

  • Idade da requisição mais antiga

Alerta: Se a fila crescer demais

Estatísticas de Tradução

Acompanhar o processamento:

  • Traduções por lote

  • Taxa de sucesso da API

  • Taxa de acerto do cache

  • Tempo de processamento

Rastreamento de Custos

Monitorar o uso da API:

  • Requisições por dia

  • Tokens por requisição

  • Custo por idioma

Referências

Artigos Relacionados

Resumo

A fila de tradução permite processamento em lote eficiente:

Fila:

  • Coletar requisições de tradução

  • Deduplicar dentro do lote

  • Tratamento de prioridade

  • Validação e filtragem

Processamento em lote:

  • Agrupar por idioma

  • Enviar para a API DeepSeek

  • Analisar respostas numeradas

  • Salvar nas tabelas de frases

Cache:

  • Verificar cache antes de traduzir

  • Alta taxa de acerto do cache

  • Custos de API reduzidos

Agendamento:

  • A cada 6 horas via cron

  • Arquivo de bloqueio impede execuções simultâneas

  • Traduções semanais de artigos

Preservação:

  • Nomes de marcas

  • Tags HTML

  • URLs e SKUs

Essa abordagem reduz os custos de API e melhora a qualidade da tradução por meio de processamento em lote e cache.


← Voltar ao Índice da Documentação