Discourse AI が多数の投稿とトピックを翻訳できない

こんにちは、

コミュニティフォーラムでDiscourse AIを有効にし、複数の言語にバックフィルを開始しました。投稿とトピックの約60%が翻訳されましたが、その過程でコンソールに多くのエラーが発生しています(ai_translation_verbose_logsが有効になっています)。現在、バックフィルはほとんど停止しています。

DiscourseAi::Translation: Failed to translate topic 563 to de: Validation failed: Title can't be blank, Fancy title can't be blank /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/

DiscourseAi::Translation: Failed to translate post 582 to pl_PL: Validation failed: Raw can't be blank, Cooked can't be blank /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-8.0.3/lib/a

奇妙な点は次のとおりです。

  • 言及された投稿やトピックはごく普通に見えます。タイトルや本文は、単純なものも複雑なものも様々ですが、同様のものは正常に翻訳されています。
  • 2回目または3回目の試行で、多くの場合正常に翻訳されます。
  • 投稿にはカスタムペルソナを使用していますが、これは組み込みの投稿翻訳ペルソナや組み込みのトピックタイトル翻訳ペルソナでも発生します。
  • テストしたすべてのモデル(Gemini-2.5-flash(思考なし)、Gemini-2.5-flash(思考あり)、GPT5、GPT5-mini)で発生します。
  • すべてのロケール(en、es、pt、de、pl_PL、fr、nl)で均等に発生します。

この問題をさらにデバッグするために、完全なプロンプトとモデルの応答をログに記録することは可能ですか?

これらのモデルすべてで同じプロンプトを個別にテストしていますが、常に正常に応答します。

ai_api_audit_logs を見つけ、問題を発見したと思われます。

翻訳が送信されると、テキストの長さに基づいて最大トークンを割り当てる get_max_tokens 関数があります。

問題は、それが主に推論によって消費されていることです。この監査ログを見ると、制限は1000に設定されていましたが、出力の生成が開始される前に、推論がその1000全体を占めていました。

推論モデルの制限は、はるかに高く設定する必要があります。

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]

翻訳タスクに思考モデルを使用することは一切お勧めしません。

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

「いいね!」 2

私の経験はまったく逆です。従ってもらいたい一連の指示があり、それには文脈の理解が必要ですが、思考モデルを使用しないモデルでは無視されるか、間違った状況で適用されます。私はこの方法でアプリケーション全体を翻訳しました。3000以上の文字列で、推論モデルは はるかに 良い結果をもたらしました。

私の調査結果に基づき、思考の労力を low に減らしましたが、すべての翻訳が完了しました。しかし、思考モデルが翻訳に使用できないわけではなく、ユーザーは失敗する理由がわからないため、このように出力トークンを制限することは逆効果だと思います。

解決策は、LLMで思考が有効になっている場合に単純に2倍にするだけで十分かもしれません。または、設定オプションとして乗数を公開することです。

「いいね!」 2

構造化された出力を使用すると、多くの小型モデルが翻訳中に無限ループに陥りやすくなるため、max_tokens を制限する必要がありました。

OpenAI Responses API の新しいバージョンでは、思考トークンをカウントせずに max_tokens が適用されるため、この問題は解決されると考えています。

最新の GPT-5 を試しています。Gemini 2.5 Pro および 2.5 Flash でも全く同じ問題が発生しました。制限を少し増やすだけではだめなのでしょうか?

デバッグログを有効にしていなかったら気づくこともなかったであろう失敗した試みにかなりの金額を費やしました。そして、ログを見つけるために Data Explorer を調べる必要がありました。すべて、事前に定義されたモデルクリエイターを使用していたにもかかわらずです。

ストリーミングを無効にしたところ、大幅に改善されました(現在も思考中です)。

「いいね!」 1

新しい設定 ai_translation_max_tokens_multiplier が利用可能になるアップデートをマージしました。この設定のデフォルト値は 1 です。

表示されている制限に対処するために、この値を好きな数に引き上げることができます。

このトピックは3日後に自動的に閉じられました。新しい返信はもう許可されていません。