Discourse AI ne parvient pas à traduire un grand nombre de messages et de sujets

Bonjour,

J’ai activé Discourse AI sur notre forum communautaire et j’ai commencé à remplir rétroactivement plusieurs langues. Environ 60 % des publications et des sujets sont traduits, mais dans le processus, j’obtiens BEAUCOUP d’erreurs dans la console (ai_translation_verbose_logs est activé) et maintenant le remplissage rétroactif est largement bloqué :

DiscourseAi::Translation: Échec de la traduction du sujet 563 vers de : Échec de la validation : Le titre ne peut pas être vide, Le titre fantaisie ne peut pas être vide /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/

DiscourseAi::Translation: Échec de la traduction de la publication 582 vers pl_PL : Échec de la validation : Raw ne peut pas être vide, Cooked ne peut pas être vide /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/lib/a

La chose étrange à ce sujet est :

  • Les publications et les sujets mentionnés semblent tout à fait normaux, ils ont différents types de titres et de corps, simples et complexes. Des publications similaires ont été traduites avec succès.
  • Lors d’une deuxième ou troisième tentative, ils sont souvent traduits avec succès.
  • J’utilise un persona personnalisé pour les publications, mais cela se produit avec un persona intégré de traducteur de publications ainsi qu’avec celui de traduction de titres de sujets intégrés.
  • Cela se produit sur tous les modèles que j’ai testés : Gemini-2.5-flash (sans réflexion), Gemini-2.5-flash (avec réflexion), GPT5 et GPT5-mini.
  • Cela se produit sur tous les locales de manière égale (en, es, pt, de, pl_PL, fr, nl).

Est-il possible d’enregistrer les invites complètes et les réponses du modèle pour déboguer cela davantage ?

Je teste les mêmes invites manuellement sur tous ces modèles et ils répondent toujours avec succès.

J’ai trouvé ai_api_audit_logs et je pense avoir trouvé le problème.

Lorsque la traduction est envoyée, il y a une fonction get_max_tokens qui attribue le nombre maximum de tokens en fonction de la longueur du texte.

Le problème est qu’il est en grande partie utilisé par le raisonnement. Voir ce journal d’audit, la limite a été fixée à 1000, et le raisonnement a consommé l’intégralité des 1000 avant même de commencer à générer la sortie.

La limite pour les modèles de raisonnement devrait être beaucoup plus élevée.

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]

Je ne recommande tout simplement pas d’utiliser de modèles de réflexion pour les tâches de traduction.

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

2 « J'aime »

Mon expérience est tout le contraire. J’ai un ensemble d’instructions que je veux voir suivies et qui nécessitent la compréhension du contexte, lesquelles sont soit ignorées par les modèles qui ne réfléchissent pas, soit appliquées dans de mauvaises situations. Je viens de traduire une application entière de cette façon - plus de 3000 chaînes, avec des modèles de raisonnement donnant de bien meilleurs résultats.

J’ai réduit l’effort de réflexion à faible sur la base de mes découvertes et j’ai obtenu toutes les traductions. Mais je pense que limiter les jetons de sortie de cette façon est contre-productif, car les modèles de réflexion ne sont pas empêchés d’être utilisés dans les traductions, et l’utilisateur n’a aucune idée de pourquoi cela échoue.

La solution pourrait être aussi simple que de multiplier par 2 si l’IA générative a la réflexion activée. Ou d’exposer un multiplicateur comme option de configuration.

2 « J'aime »

Nous avons dû limiter max_tokens car notre utilisation des sorties structurées signifiait que de nombreux petits modèles pouvaient facilement tomber dans des boucles infinies lors des traductions.

Je crois que la nouvelle version de l’API OpenAI Responses applique max_tokens sans compter les jetons de réflexion, ce qui résout ce problème.

J’essaie le dernier GPT-5. J’ai constaté exactement le même problème avec Gemini 2.5 Pro et 2.5 Flash. Pourquoi ne pas simplement augmenter un peu la limite ?

J’ai dépensé pas mal d’argent en tentatives échouées, dont je n’aurais même pas eu connaissance si je n’avais pas activé la journalisation de débogage, puis j’ai dû fouiller dans l’Explorateur de données pour trouver les journaux. Tout cela alors que j’utilisais un créateur de modèle prédéfini.

J’ai désactivé le streaming et cela l’a beaucoup amélioré (et cela continue de réfléchir)

1 « J'aime »

Nous venons de fusionner une mise à jour qui vous donne accès à un nouveau paramètre ai_translation_max_tokens_multiplier qui est défini par défaut à 1.

Vous devriez pouvoir augmenter ce nombre à votre guise pour gérer la limite que vous rencontrez.

Ce sujet a été automatiquement fermé après 3 jours. Les nouvelles réponses ne sont plus autorisées.