AI Translation пропускает локаль португальского языка (pt) — пост переведён на все языки, кроме португальского

У меня включён AI-перевод с 14 языками, включая португальский (pt). При создании нового поста все языки переводятся автоматически, кроме португальского — он просто отсутствует в списке переводов. Другие локали (ru, de, fr, es, it, nl, pl, uk, fi, sv, da, nb_NO) генерируются корректно.

Версия Discourse: 2026.1.3 Плагин AI: последняя версия Модель перевода: Mistral Large/Small

Шаги для воспроизведения:

  1. Включите AI-перевод с португальским (pt) в списке локалей

  2. Создайте новый пост на английском языке

  3. Проверьте переводы — PT отсутствует

Ожидаемый результат: перевод на PT генерируется автоматически
Фактический результат: PT не генерируется, его нужно добавлять вручную

1 лайк

Не могли бы вы, пожалуйста, посмотреть на это? Локаль португальского языка (pt) постоянно пропускается при автоматическом переводе с помощью ИИ. Все остальные 13 языков переводятся корректно. Это критическая проблема для нашего сообщества, так как мы обслуживаем португалоязычных пользователей на Мадейре, Португалия.

Какое именно настройка показана на этом скриншоте? Content localization supported locales?

А на втором скриншоте, какой язык у поста? И, соответственно, какой язык по умолчанию установлен на вашем сайте, то есть настройка default locale?

1 лайк

Да, на первом скриншоте показана настройка «Поддерживаемые локали для локализации контента» с 14 языками, включая PT.

Пост на втором скриншоте был написан на английском языке. Язык по умолчанию на сайте также английский (en). Все 14 языков включены, в том числе PT, однако перевод на PT постоянно пропускается, тогда как остальные 13 языков генерируются корректно.

1 лайк

Хм, интересно. Это сайт, который мы хостим? Если да, я бы хотел посмотреть конфигурацию и понять, что происходит. Можете отправить мне личное сообщение с URL сайта?

Здесь, на meta, португальский язык включен, и всё работает отлично.

1 лайк

Возвращаюсь к публичной теме, возникшей в ходе краткого разговора в личных сообщениях:

Это интересный результат.

В разделе ИИ > Переводы > Настройки перевода есть несколько соответствующих параметров, но они не совсем то, что вам нужно. Я не думаю, что запланированная задача отправляет 14 одновременных запросов на перевод.

Интересно, сталкивался ли @nat с этим в процессе разработки и тестирования функции.

1 лайк

Хм, насколько мне известно, нет. Я помню, что некоторые сайты поддерживали более 10 языков, но ранее не сталкивался с этой проблемой.

Указывают ли /logs на что-либо? У нас есть скрытая настройка подробного ведения журналов ai_translation_verbose_logs, которую можно включить на некоторое время.

2 лайка

Обновление: проблема не специфична для португальского языка. При трёх локалях (EN, RU, PT) любая локаль может быть случайно пропущена — иногда RU, иногда PT. Кроме того, заголовок и тело сообщения переводятся независимо и непоследовательно: заголовок может быть переведён, а тело пропущено, или наоборот. Тестирование проводилось с Mistral Small, Mistral Large и GPT gpt mini. Проблема сохраняется во всех моделях.
Все публикации публикуются на английском языке (локаль сайта по умолчанию — английский). Перевод на другие локали осуществляется непоследовательно и случайно, независимо от содержания или длины публикации.
Я не могу понять, что вызывает это и почему это происходит.

Я не могу найти настройку ai_translation_verbose_logs в нашей установке. Она не отображается в поиске по настройкам администратора.

Это ожидаемое поведение.

2 лайка

@Denis_Kovalenko Я включил ai_translation_verbose_logs

2 лайка

В этом случае Мойн недавно сообщил мне о проблеме на meta, где заголовок был переведён, но текст сообщения пропущен, потому что он был слишком большим.

Существует настройка сайта «Лимит на количество постов», но я сомневаюсь, что это причина данной проблемы — в противном случае перевод не работал бы для всех языков, а лишь спорадически для одного или двух.

Ещё один параметр, который можно проверить, — это окно контекста вашей LLM в настройках LLM.

Кстати, я категорически не рекомендую использовать GPT mini для переводов. Многие клиенты сообщали, что качество перевода очень низкое, и наши ранние тесты это подтвердили.

3 лайка

Мы наблюдаем следующую ошибку

Failed to translate tag 31 to pt: {"object":"error","message":"Internal server error","type":"unreachable_backend","param":null,"code":"1100","raw_status_code":503}

/var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:206:in 'block (2 levels) in DiscourseAi::Completions::Endpoints::Base#perform_completion!'

Также встречаются ошибки «failed to translate topic» и «failed to translate post» с аналогичными сбоями на стороне бэкенда.

Я не углублялся в код, но меня интересует, почему у заданий DetectTranslatePost и DetectTranslateTopic указано sidekiq_options retry: false?

1 лайк

128000 контекстное окно

Моя проблема всё ещё не решена.
Это критически важно для меня и моего форума.
Многоязычность должна работать безупречно.
Языки по-прежнему пропускаются случайным образом, независимо от локальной модели.

Сбой AI-перевода при ошибках LLM 503 — отсутствует логика повторных попыток

Баг: Когда любой провайдер LLM (Mistral, OpenAI) возвращает ошибку 503, модуль DiscourseAi::Translation молча пропускает перевод без повторных попыток.

Пример лога:

DiscourseAi::Completions::Endpoints::Mistral: status: 503
{“type”:“unreachable_backend”,“code”:“1100”}
DiscourseAi::Translation: Не удалось перевести тему X на русский язык

Корневая причина: В модуле DiscourseAi::Completions::Endpoints отсутствует логика повторных попыток для временных ошибок сервера. Это не специфично для конкретного провайдера — аналогичное поведение ранее наблюдалось и с OpenAI.

Ожидаемое поведение: Выполнять повторные попытки с экспоненциальной задержкой при получении ответов 503/504 перед тем, как помечать перевод как неудачный.

Предлагаемое решение: Добавить логику повторных попыток в модуле DiscourseAi::Completions::Endpoints для всех провайдеров единообразно.

Это влияет на любые экземпляры Discourse, использующие AI-перевод с поддержкой нескольких языков.

Вам необходимо устранить корневую проблему, то есть ситуацию, когда бэкенд возвращает ошибку 503. Может показаться простым заставить Discourse бесконечно повторять одну и ту же попытку перевода, но имейте в виду, что каждый запрос к LLM влечёт за собой затраты на токены, и нам необходимо действовать осмотрительно, чтобы не исчерпать их. Как только вы исправите проблему с LLM, вы сможете вручную запланировать перевод темы и проверить, решится ли она.

Пожалуйста, скорректируйте свои ожидания. Вы используете бесплатное программное обеспечение, и мы помогаем вам максимально возможными способами.

3 лайка

Привет, pmusaraj,

Спасибо за ответ. Хочу уточнить: я использую не самую дешёвую модель LLM, чтобы сэкономить деньги. Я использую её, чтобы протестировать, как работает функция перевода на практике. Выбор модели не является сутью вопроса.

Суть в том, что когда Mistral возвращает ошибку 503, Discourse AI молча отбрасывает перевод без какого-либо уведомления администратора, без очереди повторных попыток и без возможности узнать, какие темы были пропущены. Именно об этой проблеме пользовательского опыта я и говорю — не о стоимости токенов.

Я понимаю, что это проект с открытым исходным кодом, и вы делаете всё возможное. Я это ценю. Но фраза «скорректируйте свои ожидания» немного демотивирует того, кто активно тестирует, сообщает об ошибках и пытается помочь улучшить продукт.

Я продолжу следить за этой темой и с нетерпением жду исправления.

Спасибо,
Денис

1 лайк

Поскольку вы используете версию ESR, вам потребуется гораздо больше терпения, чем просто ждать возвращения людей на работу после выходных. Выпуски ESR происходят только два раза в год.

1 лайк

Кстати, это не так. Раньше было, но на прошлой неделе они перешли на 4.0-latest, чтобы получить другие исправления ошибок.
(И в ESR действительно обратно портируют некоторые исправления ошибок).

4 лайка