Pular para o conteúdo

Odoo 19: tradução por IA com verificação cruzada – módulo ai_translation_consensus, em que várias IAs se controlam mutuamente

3 de novembro de 2026 | Odoo 19 Community | Desenvolvimento próprio
3 de novembro de 2026 por
Odoo 19: tradução por IA com verificação cruzada – módulo ai_translation_consensus, em que várias IAs se controlam mutuamente

Módulo Odoo 19 ai_translation_consensus: várias IAs traduzem, avaliam-se de forma anónima e uma pessoa aprova

Traduzir um sítio web para dez, vinte ou quarenta idiomas é rápido com uma única IA. Mais difícil é saber se se pode confiar no resultado. Um único modelo de linguagem inventa ocasionalmente palavras, traduz nomes de produtos ou altera um número, e não se apercebe disso. Por isso, escrevemos para o Odoo 19 um módulo em que várias IAs e serviços de tradução trabalham sobre o mesmo texto, avaliam mutuamente os seus resultados de forma anónima e chegam a acordo sobre a formulação que soa simultaneamente rigorosa e natural. O que não for inequívoco fica para uma pessoa decidir.

O módulo chama-se ai_translation_consensus e está disponível no GitHub como software livre sob a licença AGPL-3:

github.com/Alex0176/odoo-ai-translation-consensus

A ideia: verificação cruzada em vez de confiança

O módulo sabe fazer duas coisas:

  • Traduzir: completar as traduções em falta (ou desatualizadas) de qualquer campo traduzível no Odoo, ou seja, artigos de blogue, páginas web, menus, produtos e tudo o mais que o Odoo guarda em vários idiomas. As IAs não veem apenas a frase isolada, mas os blocos vizinhos e um excerto da página inteira. Assim, as palavras individuais são compreendidas no contexto certo.
  • Revisão de texto: verificar o texto no seu próprio idioma e propor melhores formulações ou correções. O original é sempre um dos candidatos. Se o original vencer, nada é alterado.

O cerne é a verificação mútua. Cada IA é boa a avaliar textos alheios, mesmo quando ela própria se engana ocasionalmente. O módulo aproveita isso: vários fornecedores escrevem uma versão cada e, depois, os mesmos fornecedores avaliam todas as versões, sem saber de quem provêm. Um fornecedor não avalia a sua própria versão.

Assim nasce uma proposta

Procedimento: traduzir, verificar, avaliar, chegar a acordo, aprovação por pessoas

  1. Traduzir. Cada tradutor escreve uma versão em paralelo.
  2. Verificações fixas. Sem IA, controla-se se as etiquetas HTML, as entidades, os marcadores de posição como %s ou {}, os números e as ligações se mantiveram inalterados. Uma versão que viole isto nunca pode vencer, por muito fluente que soe.
  3. Avaliar. As restantes versões são misturadas e anonimizadas. Cada avaliador atribui a cada uma uma nota de rigor e de naturalidade (1 a 10), indica um favorito e pode propor uma melhoria.
  4. Chegar a acordo. A classificação de uma versão é 0,5 × nota média + 5 × proporção de votos de favorito. Considera-se que há acordo quando a melhor versão tem, pelo menos, 60 % dos votos de favorito e uma nota média de, pelo menos, 7,0.
  5. Segunda ronda. Sem acordo, as melhores versões, juntamente com as propostas de melhoria dos avaliadores, voltam a ser avaliadas.
  6. Pessoa. Se também então não ficar inequívoco, a proposta aguarda uma decisão.

Se existirem apenas serviços de tradução puros, sem função de verificação (por exemplo, o DeepL), um resultado só se considera acordado se, pelo menos, dois serviços tiverem fornecido exatamente o mesmo texto. Na revisão de texto, os resultados têm de permanecer reconhecivelmente semelhantes ao original (semelhança mínima de 0,6, os mesmos números). Os modelos pequenos e gratuitos respondem ocasionalmente a um lote com textos deslocados ou alheios. Essas respostas são descartadas, em vez de votadas. Um glossário fixa nomes de marcas e termos estabelecidos.

Fornecedores: com e sem chave

Serviços gratuitos e pagos podem estar na mesma votação. O módulo traz predefinições para muitos fornecedores; todas ficam desativadas após a instalação.

TipoTraduzVerifica / corrigeExemplos
Interface compatível com OpenAIsimsimOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
Compatível com OpenAI sem chavesimsimOllama no próprio servidor, Pollinations
AnthropicsimsimClaude
Google Gemini, Coheresimsim
Comando localsimsimclaude -p ou qualquer programa que leia do stdin e devolva a resposta
Serviços de traduçãosimnãoDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Introduz-se a chave (ou o nome de uma variável de ambiente que a contenha), clica-se em Testar ligação e ativa-se o fornecedor. Os nomes de modelos nas predefinições são pontos de partida; quem os utilizar deve confrontá-los com a lista atual do fornecedor. Com dois ou mais fornecedores existe uma verdadeira verificação cruzada; com apenas um, ninguém verifica o seu trabalho. O assistente chama a atenção para isso.

Um sítio web inteiro de uma só vez

Um assistente de arranque (menu Tradução por IA → Começar aqui) explica os passos e cria a primeira regra. Se o módulo website estiver instalado, o módulo de ligação ai_translation_consensus_website vem automaticamente. Acrescenta o âmbito «Um sítio web inteiro com tudo o que nele existe»: escolhe-se o sítio web e pede-se que sejam sugeridos os conteúdos. O módulo analisa todos os modelos com campos traduzíveis que pertencem ao sítio web (páginas, menus, blogues, produtos, eventos, fóruns, cursos e mais) e sugere uma regra por tipo de conteúdo, com os idiomas do sítio web como destino.

Assistente de arranque com o âmbito sítio web inteiro e os tipos de conteúdo sugeridos

  • O que não está instalado (fóruns, cursos, galerias) não aparece e é incluído mais tarde, assim que for instalado.
  • Os modelos da loja só são sugeridos se o sítio web tiver uma loja. Só são abrangidos registos publicados.
  • Contactos, empresas, fornecedores de pagamento, listas de preços, métodos de entrega, programas de fidelização e filtros de snippets, o módulo deliberadamente não os oferece.
  • Os nomes de endereço das páginas (seo_name) não são traduzidos.
  • Os tipos não desejados podem ser removidos antes de serem criados.

Criar e pesquisar não custa nada: a regra apenas lista os textos que precisam de trabalho. Só no processamento é que os fornecedores são chamados e surgem custos.

Painel, custos e arranque automático

O painel mostra, por regra, quantos textos estão concluídos, à espera de uma confirmação ou de uma pessoa, em fila ou falhados. A isto acrescem a discriminação por idioma e fornecedor, os custos até agora e os ainda esperados, o tempo restante estimado e o interruptor para o processamento agendado.

Painel com progresso, custos, tokens e idiomas. Dados de exemplo.

Os números nesta figura são dados de exemplo e nada dizem sobre custos reais.

  • Os custos são calculados a partir do que os fornecedores efetivamente comunicam: tokens (OpenAI, Anthropic, Gemini, Cohere) ou carateres (DeepL, Google, Azure). Os tokens são sempre mostrados, o dinheiro só quando introduziu o preço por milhão de tokens (ou carateres) junto do fornecedor. As predefinições não contêm preços, porque estes mudam. Os serviços que não comunicam tokens são estimados a partir do comprimento do texto e assinalados como estimativa.
  • Previsão: custos médios e tempo de trabalho por texto vezes o número de textos em fila. Trata-se de uma estimativa, que melhora com os primeiros lotes.
  • Arranque automático: as regras com a opção Iniciar por si quando um registo é alterado procuram, em cada execução da ação agendada, apenas registos que tenham sido alterados desde a última pesquisa. Com a ação agendada ativada, uma página web editada é, portanto, traduzida de novo sem qualquer intervenção.
  • Mensagem de conclusão: quando o último texto pendente de uma regra fica concluído, aparece uma única vez a mensagem «Todos os idiomas traduzidos» (na revisão: «Todos os textos verificados») no canal AI Translation.

Aprovação por pessoas

Por predefinição, o módulo não escreve nada nos seus registos sem a sua autorização. Cada sugestão mostra as versões, quem as escreveu, as notas e as observações dos revisores. Pode aceitar a sugestão, escolher outra versão, introduzir uma formulação própria ou rejeitá-la.

Sugestão com três candidatos, notas, votos de favorito e a decisão tomada por uma pessoa. Texto de exemplo totalmente fictício.

O texto e os nomes dos fornecedores nesta imagem são totalmente fictícios e servem apenas para mostrar a vista.

Quem confia numa regra pode ativar Aceitar consenso automaticamente. As sugestões sem consenso continuam a aguardar uma pessoa. Ao aceitar, o módulo verifica de novo se o texto de origem entretanto mudou, volta a controlar as verificações de marcação e escreve sem acompanhamento e sem notificar os seguidores.

Segurança e proteção de dados

  • Depois da instalação, tudo está desativado. Os fornecedores e a ação agendada estão desativados. Sem a sua intervenção, nada é enviado.
  • Os textos saem do seu servidor assim que um serviço alojado externamente está envolvido. Uma regra pode ser marcada como Confidencial; nesse caso, o texto só é visto por fornecedores identificados como estando em execução na sua própria infraestrutura.
  • As chaves ficam num campo que só os administradores veem ou numa variável de ambiente para a qual apenas o nome aponta. Nas mensagens de erro são mascaradas e são enviadas em cabeçalhos. Exceção: a chave opcional do MyMemory só pode ser transmitida aí como parâmetro de consulta.
  • O comando local executa um programa e, por isso, está bloqueado até que o parâmetro de sistema ai_translation_consensus.allow_command seja definido como True. O comando é invocado sem shell e é executado numa pasta temporária vazia.
  • Injeção de prompts: as tarefas identificam o texto como dados. As instruções contidas no texto traduzido não são seguidas, e um resultado que viole etiquetas ou marcadores de posição é rejeitado.
  • Os serviços gratuitos têm limites. O Pollinations permite, de forma anónima, uma resposta a cada 45 segundos. A opção de fornecedor min_interval respeita esse intervalo, e as respostas «Tente novamente mais tarde» são tidas em conta.

Instalação

git clone https://github.com/Alex0176/odoo-ai-translation-consensus.git
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus /pfad/addons/
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus_website /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i ai_translation_consensus --stop-after-init

São necessários o Odoo 19 e o pacote Python requests. Acompanha uma tradução alemã. O módulo de ligação ai_translation_consensus_website é instalado automaticamente se website estiver presente. Após a instalação, o serviço Odoo tem de ser reiniciado, porque o módulo contém código Python. Quem gere um sistema de produção deve instalar primeiro o módulo numa cópia da base de dados.

Os primeiros passos: abrir o menu Tradução com IA → Fornecedores, testar e ativar os serviços, depois Começar aqui e criar a primeira regra. Com Procurar textos são geradas as sugestões, com Processar um lote os fornecedores são chamados. Comece com uma regra pequena, por exemplo um único artigo de blogue e dois idiomas, e analise o resultado e os custos antes de colocar na fila um sítio Web inteiro.

Limitações

  • A qualidade depende dos modelos que ativar. A verificação cruzada reduz os erros de modelos individuais, mas não dá qualquer garantia. Para textos juridicamente ou criticamente relevantes para a segurança, o módulo não substitui um falante nativo.
  • Os custos crescem depressa. Um texto custa uma chamada por tradutor, uma chamada de verificação por revisor e, em caso de votação dividida, uma segunda ronda. O contexto da página aumenta a entrada de cada chamada. Uma regra com 45 idiomas de destino multiplica o número de textos. Limite as execuções com Registos por pesquisa, Novas sugestões por pesquisa e Sugestões por execução do cron, e inclua modelos económicos ou locais como revisores.
  • Apenas campos com translate=True. O texto formatado é processado por bloco (mecanismo de termos do Odoo).
  • Os preços e os nomes dos modelos mudam. Os valores predefinidos não são uma lista de preços atualizada.
  • Desenvolvido para o Odoo 19.0 Community. Outras versões não são suportadas.

Perguntas frequentes

Algo é traduzido ou substituído sem a minha autorização?

Não, desde que não ative Aceitar consenso automaticamente. Mesmo nesse caso, só são escritas as sugestões com consenso. Os fornecedores e a ação agendada ficam desativados após a instalação.

Preciso de chaves para fornecedores pagos?

Apenas para os fornecedores que exijam uma. Com o Pollinations, o MyMemory ou um modelo executado localmente (por exemplo, o Ollama), é possível sem chave. Os serviços gratuitos são frequentemente limitados e lentos; para um sítio Web inteiro, costumam servir apenas como complemento.

Quanto custa uma tradução?

Depende do fornecedor, do modelo, da extensão do texto e do número de idiomas, por isso o módulo não indica valores fixos. O painel mostra o consumo e os custos assim que tiver introduzido os preços, e estima o custo restante dos textos em fila.

Posso manter os textos confidenciais?

Sim, com a opção de regra Confidencial. Nesse caso, só trabalham os fornecedores marcados como estando em execução na sua própria infraestrutura, por exemplo um Ollama local.

Isto substitui a tradução nativa do Odoo?

Não. O módulo utiliza o suporte multilingue do Odoo e escreve nas mesmas traduções que de outro modo manteria manualmente.

Sob que licença está?

Sob a AGPL-3. Erros e melhorias são bem-vindos como issue no repositório GitHub .

Apoio da Biricon IT Services

Acompanhamos instalações Odoo para pequenas e médias empresas: da implementação, passando por personalizações e migrações, até à operação contínua. Se pretende gerir o seu sítio Web Odoo em vários idiomas, validar traduções com IA ou colocar um módulo em segurança na sua instância de produção, teremos todo o gosto em ajudar. Outros desenvolvimentos próprios: Arquivar empresa juntamente com os utilizadores do portal, Números de documento a partir de prefixo, ano e contador e Firmenbuch e verificação de moradas para clientes austríacos.

Contacte-nos agora

Data: 3 de novembro de 2026. Versão do módulo 19.0.1.0.0. As imagens mostram dados de exemplo fictícios.