Discourse AI falhando ao traduzir grande número de posts e tópicos

Olá,

Ativei o Discourse AI em nosso fórum da comunidade e comecei a preencher dados em vários idiomas. Cerca de 60% das postagens e tópicos foram traduzidos, mas, no processo, estou recebendo MUITOS erros no console (ai_translation_verbose_logs está ativado) e agora o preenchimento de dados parou em grande parte:

DiscourseAi::Translation: Falha ao traduzir tópico 563 para de: Falha na validação: Título não pode ficar em branco, Título elegante não pode ficar em branco /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/

DiscourseAi::Translation: Falha ao traduzir postagem 582 para pl_PL: Falha na validação: Raw não pode ficar em branco, Cooked não pode ficar em branco /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/lib/a

O estranho é que:

  • As postagens e tópicos mencionados parecem normais, eles têm diferentes tipos de títulos e corpos, tanto simples quanto complexos. Postagens semelhantes foram traduzidas com sucesso.
  • Em uma segunda ou terceira tentativa, eles geralmente são traduzidos com sucesso.
  • Estou usando uma persona personalizada para Postagens, mas isso acontece com a persona integrada de Tradutor de Postagens, bem como com a persona integrada de tradução de títulos de tópicos.
  • Isso acontece em todos os modelos que testei: Gemini-2.5-flash (sem pensar), Gemini-2.5-flash (pensando), GPT5 e GPT5-mini.
  • Isso acontece em todos os locais igualmente (en, es, pt, de, pl_PL, fr, nl).

É possível registrar os prompts completos e as respostas do modelo para depurar isso ainda mais?

Estou testando os mesmos prompts manualmente em todos esses modelos e eles sempre respondem com sucesso.

Encontrei ai_api_audit_logs e acho que encontrei o problema.

Quando a tradução é enviada, há uma função get_max_tokens que atribui o número máximo de tokens com base no comprimento do texto.

O problema é que ele é consumido principalmente pelo raciocínio. Veja este log de auditoria, o limite foi definido para 1000 e o raciocínio consumiu todo o 1000 antes mesmo de começar a gerar a saída.

O limite para modelos de raciocínio deve ser muito maior.

data: {"id":"chatcmpl-CQ7XU4Ep16RClb7OZQAxOXN9JWgIG","object":"chat.completion.chunk","created":1760341544,"model":"gpt-5-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null}}],"usage":null,"obfuscation":"dPNNK7ojEf"}

data: {"id":"chatcmpl-CQ7XU4Ep16RClb7OZQAxOXN9JWgIG","object":"chat.completion.chunk","created":1760341544,"model":"gpt-5-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"length"}],"usage":null,"obfuscation":"dM2r"}

data: {"id":"chatcmpl-CQ7XU4Ep16RClb7OZQAxOXN9JWgIG","object":"chat.completion.chunk","created":1760341544,"model":"gpt-5-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":1075,"completion_tokens":1000,"total_tokens":2075,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1000,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"j4"}

data: [DONE]

Eu simplesmente não recomendo o uso de nenhum tipo de modelo de pensamento para tarefas de tradução.

https://www.reddit.com/r/LocalLLaMA/comments/1g7y74t/adding_a_thinking_turn_to_extend_llms_reasoning/

2 curtidas

Minha experiência é exatamente a oposta. Tenho um conjunto de instruções que quero que sejam seguidas, que exigem a compreensão do contexto, as quais são ignoradas por modelos que não pensam, ou aplicadas em situações erradas. Acabei de traduzir um aplicativo inteiro dessa forma - mais de 3000 strings, com modelos de raciocínio dando resultados muito melhores.

Reduzi o esforço de pensamento para baixo com base em minhas descobertas e obtive todas as traduções. Mas acredito que limitar os tokens de saída dessa forma é contraproducente, pois os modelos de pensamento não são impedidos de serem usados em traduções, e o usuário não tem ideia do porquê está falhando.

A solução pode ser tão simples quanto multiplicar por 2 se o LLM tiver o pensamento habilitado. Ou expor um multiplicador como uma opção de configuração.

2 curtidas

Tivemos que limitar max_tokens, pois nosso uso de saídas estruturadas significava que muitos modelos menores poderiam facilmente entrar em loops infinitos durante as traduções.

Acredito que a versão mais recente da API de Respostas da OpenAI aplica max_tokens sem contar os tokens de pensamento, o que resolve esse problema.

Estou testando o GPT-5 mais recente. Vi exatamente o mesmo problema com Gemini 2.5 Pro e 2.5 Flash. Por que não aumentar um pouco o limite?

Gastei bastante em tentativas falhas, sobre as quais eu nem saberia se não tivesse habilitado o registro de depuração e, em seguida, tive que investigar no Data Explorer para encontrar os logs. Tudo isso enquanto usei um criador de modelo predefinido.

Desativei o streaming e isso melhorou muito (e ainda está pensando)

1 curtida

Acabamos de mesclar uma atualização que lhe dá acesso a uma nova configuração ai_translation_max_tokens_multiplier que tem o valor padrão de 1.

Você poderá aumentar isso para qualquer número que desejar para lidar com o limite que você está vendo.

Este tópico foi automaticamente fechado após 3 dias. Novas respostas não são mais permitidas.