Skip to Content

Odoo 19: ШІ-переклад із перехресною перевіркою – модуль ai_translation_consensus, у якому кілька ШІ контролюють одне одного

3 листопада 2026 року | Odoo 19 Community | Власна розробка
3 листопада 2026 р. від
Odoo 19: ШІ-переклад із перехресною перевіркою – модуль ai_translation_consensus, у якому кілька ШІ контролюють одне одного

Модуль Odoo 19 ai_translation_consensus: кілька ШІ перекладають, анонімно оцінюють одне одного, а людина затверджує

Перекласти вебсайт на десять, двадцять чи сорок мов за допомогою одного ШІ можна швидко. Складніше питання, чи можна довіряти результату. Окрема мовна модель іноді вигадує слова, перекладає назви продуктів або змінює число, і сама цього не помічає. Тому ми написали для Odoo 19 модуль, у якому кілька ШІ та сервісів перекладу працюють над одним і тим самим текстом, анонімно оцінюють результати одне одного і погоджують формулювання, яке водночас звучить точно й природно. Те, що неоднозначне, людина вирішує сама.

Модуль називається ai_translation_consensus і доступний на GitHub як вільне програмне забезпечення за ліцензією AGPL-3:

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

Ідея: перехресна перевірка замість довіри

Модуль уміє дві речі:

  • Переклад: доповнювати відсутні (або застарілі) переклади кожного придатного до перекладу поля в Odoo, тобто дописи блогу, вебсторінки, меню, продукти та все інше, що Odoo зберігає багатомовно. При цьому ШІ бачать не лише окреме речення, а й сусідні блоки та фрагмент усієї сторінки. Так окремі слова розуміються в правильному контексті.
  • Коректура: перевіряти текст його власною мовою й пропонувати кращі формулювання або виправлення. Оригінал при цьому завжди є одним із кандидатів. Якщо перемагає оригінал, нічого не змінюється.

Ядро — це взаємна перевірка. Кожен ШІ добре оцінює чужі тексти, навіть якщо сам іноді помиляється. Модуль використовує це: кілька постачальників пишуть по одній версії, а потім ті самі постачальники оцінюють усі версії, не знаючи, від кого вони. Власну версію постачальник не оцінює.

Як з’являється пропозиція

Перебіг: переклад, перевірка, оцінювання, погодження, затвердження людиною

  1. Переклад. Кожен перекладач паралельно пише одну версію.
  2. Фіксовані перевірки. Без ШІ контролюється, чи залишилися незмінними теги HTML, сутності, заповнювачі на кшталт %s або {}, числа та посилання. Версія, що це порушує, ніколи не може перемогти, хоч би якою плавною вона звучала.
  3. Оцінювання. Решта версій перемішуються й анонімізуються. Кожен рецензент ставить кожній оцінку за точність і за природність (від 1 до 10), називає фаворита й може запропонувати покращення.
  4. Погодження. Ранг версії — це 0,5 × середня оцінка + 5 × частка голосів за фаворита. Погодженням вважається, коли найкраща версія має щонайменше 60 % голосів за фаворита та середню оцінку не нижче 7,0.
  5. Другий раунд. Без погодження найкращі версії разом із пропозиціями рецензентів щодо покращення ще раз потрапляють на оцінювання.
  6. Людина. Якщо й тоді однозначності немає, пропозиція очікує на рішення.

Якщо є лише чисті сервіси перекладу без функції перевірки (наприклад, DeepL), результат вважається погодженим лише тоді, коли щонайменше два сервіси видали точно той самий текст. Під час коректури результати мають залишатися помітно схожими на оригінал (схожість щонайменше 0,6, однакові числа). Невеликі безкоштовні моделі іноді відповідають на пакет зміщеними або чужими текстами. Такі відповіді відкидаються, а не виносяться на голосування. Глосарій фіксує назви брендів і сталі терміни.

Постачальники: з ключем і без

Безкоштовні та платні сервіси можуть брати участь в одному голосуванні. Модуль постачається з попередніми налаштуваннями для багатьох постачальників; усі вони після встановлення вимкнені.

ТипПерекладаєПеревіряє / коригуєПриклади
Інтерфейс, сумісний з OpenAIтактакOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
Сумісний з OpenAI без ключатактакOllama на власному сервері, Pollinations
AnthropicтактакClaude
Google Gemini, Cohereтактак
Локальна командатактакclaude -p або будь-яка програма, що читає зі stdin і виводить відповідь
Сервіси перекладутакніDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Вносять ключ (або назву змінної середовища, що його містить), натискають Перевірити з’єднання та вмикають постачальника. Назви моделей у попередніх налаштуваннях — це відправні точки; хто їх використовує, має звірити їх з актуальним списком постачальника. З двома чи більше постачальниками є справжня перехресна перевірка, а з одним ніхто не перевіряє його роботу. Майстер на це вказує.

Увесь вебсайт одразу

Стартовий майстер (меню ШІ-переклад → Почніть тут) пояснює кроки й створює перше правило. Якщо встановлено модуль website, автоматично додається модуль-міст ai_translation_consensus_website. Він доповнює обсяг «Увесь вебсайт з усім, що на ньому є»: обирають вебсайт і дають запропонувати вміст. Модуль переглядає всі моделі з придатними до перекладу полями, що належать до вебсайту (сторінки, меню, блоги, продукти, заходи, форуми, курси та інше), і пропонує по одному правилу на тип вмісту, із мовами вебсайту як цільовими.

Стартовий майстер з обсягом «увесь вебсайт» і запропонованими типами вмісту

  • Те, що не встановлено (форуми, курси, галереї), не з’являється й буде додане пізніше, щойно буде встановлене.
  • Моделі магазину пропонуються лише тоді, коли вебсайт має магазин. Враховуються лише опубліковані записи.
  • Контакти, компанії, постачальників платежів, прайс-листи, способи доставки, програми лояльності та фільтри сніпетів модуль навмисно не пропонує.
  • Адресні назви сторінок (seo_name) не перекладаються.
  • Небажані типи можна вилучити перед створенням.

Створення та пошук нічого не коштують: правило лише перелічує, які тексти потребують роботи. Лише під час опрацювання викликаються постачальники й виникають витрати.

Панель, витрати й автоматичний запуск

Панель показує для кожного правила, скільки текстів готово, очікує на підтвердження чи людину, поставлено в чергу або завершилося помилкою. Додатково — розподіл за мовами та постачальниками, досі понесені й ще очікувані витрати, приблизний залишок часу та перемикач запланованого опрацювання.

Панель із прогресом, витратами, токенами та мовами. Приклади даних.

Числа на цій ілюстрації є прикладами даних і нічого не кажуть про реальні витрати.

  • Витрати розраховуються з того, що постачальники фактично повідомляють: токени (OpenAI, Anthropic, Gemini, Cohere) або символи (DeepL, Google, Azure). Токени показуються завжди, гроші лише тоді, коли ви внесли в постачальника ціну за мільйон токенів (або символів). Попередні налаштування не містять цін, бо вони змінюються. Сервіси, які не повідомляють токенів, оцінюються за довжиною тексту й позначаються як оцінка.
  • Прогноз: середні витрати та робочий час на текст помножені на кількість текстів у черзі. Це оцінка, яка покращується з перших пакетів.
  • Автоматичний запуск: правила з опцією Запускати самі, коли запис змінюється під час кожного запуску запланованої дії шукають лише записи, змінені після останнього пошуку. Тож за ввімкненої запланованої дії відредагована вебсторінка перекладається знову без жодних зусиль.
  • Повідомлення про завершення: щойно останній відкритий текст правила опрацьовано, в каналі AI Translation один раз з’являється повідомлення «Усі мови перекладено» (під час вичитування — «Усі тексти перевірено»).

Затвердження людиною

За замовчуванням модуль нічого не записує у ваші записи без вашої згоди. Кожна пропозиція показує варіанти, їхніх авторів, оцінки та зауваження рецензентів. Ви можете прийняти пропозицію, вибрати інший варіант, ввести власне формулювання або відхилити її.

Пропозиція з трьома кандидатами, оцінками, голосами за фаворита та рішенням людини. Приклад тексту повністю вигаданий.

Текст і назви постачальників на цьому зображенні повністю вигадані — лише для демонстрації вигляду.

Хто довіряє правилу, може ввімкнути Автоматично приймати за згодою. Пропозиції без згоди й тоді чекають на людину. Під час прийняття модуль ще раз перевіряє, чи не змінився вихідний текст, повторно виконує перевірки розмітки та записує без відстеження й без сповіщення підписників.

Безпека та захист даних

  • Після встановлення все вимкнено. Постачальники та запланована дія деактивовані. Без вашої участі нічого не надсилається.
  • Тексти залишають ваш сервер, щойно задіяно хостингову службу. Правило можна позначити як Конфіденційне; тоді текст бачать лише постачальники, позначені як такі, що працюють на власній інфраструктурі.
  • Ключі зберігаються в полі, яке бачать лише адміністратори, або в змінній середовища, на яку вказує лише її ім’я. У повідомленнях про помилки вони маскуються і надсилаються в заголовках. Виняток: необов’язковий ключ MyMemory можна передати лише як параметр запиту.
  • Локальна команда запускає програму, тому заблокована, доки системний параметр ai_translation_consensus.allow_command не буде встановлено в True. Команда викликається без оболонки й виконується в порожньому тимчасовому каталозі.
  • Prompt-ін’єкція: завдання позначають текст як дані. Інструкції в перекладеному тексті не виконуються, а результат, що порушує теги або заповнювачі, відкидається.
  • Безкоштовні служби мають обмеження. Pollinations дозволяє анонімно одну відповідь на 45 секунд. Опція постачальника min_interval дотримується цього інтервалу, а відповіді «Спробуйте пізніше» враховуються.

Встановлення

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

Потрібні Odoo 19 і пакет Python requests. Німецький переклад додається. Модуль-міст ai_translation_consensus_website встановлюється автоматично, якщо є website. Після встановлення службу Odoo потрібно перезапустити, оскільки модуль містить код Python. Хто керує продуктивною системою, спершу встановлює модуль на копії бази даних.

Перші кроки: відкрийте меню KI-Übersetzung → Anbieter, перевірте та ввімкніть служби, потім натисніть Hier starten і створіть перше правило. Кнопка Nach Texten suchen створює пропозиції, а Einen Stapel verarbeiten викликає постачальників. Почніть з невеликого правила, наприклад з однієї публікації блогу й двох мов, і перегляньте результат та витрати, перш ніж ставити в чергу цілий вебсайт.

обмеження

  • Якість залежить від моделей, які ви вмикаєте. Перехресна перевірка зменшує помилки окремих моделей, але не дає гарантії. Для юридично або з погляду безпеки критичних текстів модуль не замінює носія мови.
  • Витрати швидко зростають. Один текст коштує один виклик на перекладача, один виклик перевірки на рецензента, а за розділеного голосування — ще й другий раунд. Контекст сторінки збільшує вхідні дані кожного виклику. Правило з 45 цільовими мовами помножує кількість текстів. Обмежуйте запуски за допомогою Datensätze je Suchlauf, Neue Vorschläge je Suchlauf та Vorschläge je Cron-Lauf і додайте як рецензентів вигідні або локальні моделі.
  • Лише поля з translate=True. Форматований текст обробляється поблочно (механізм термів Odoo).
  • Ціни та назви моделей змінюються. Типові налаштування не є актуальним прайс-листом.
  • Створено для Odoo 19.0 Community. Інші версії не підтримуються.

Поширені запитання

Чи перекладається або перезаписується щось без моєї згоди?

Ні, доки ви не ввімкнете Автоматично приймати за згодою. Навіть тоді записуються лише пропозиції, щодо яких досягнуто згоди. Постачальники та запланована дія після встановлення вимкнені.

Чи потрібні мені ключі для платних постачальників?

Лише для тих постачальників, які їх вимагають. З Pollinations, MyMemory або локально запущеною моделлю (наприклад, Ollama) можна обійтися без ключа. Безкоштовні служби часто обмежені й повільні, для цілого вебсайту вони здебільшого підходять лише як доповнення.

Скільки коштує переклад?

Це залежить від постачальника, моделі, довжини тексту та кількості мов, тому модуль не задає фіксованих цифр. Панель показує використання та витрати, щойно ви внесете ціни, і оцінює залишкову вартість текстів у черзі.

Чи можу я зберігати тексти конфіденційними?

Так, за допомогою опції правила Конфіденційне. Тоді працюють лише постачальники, позначені як такі, що працюють на вашій власній інфраструктурі, наприклад локальний Ollama.

Чи замінює це власний переклад Odoo?

Ні. Модуль використовує багатомовність Odoo та записує в ті самі переклади, які ви інакше підтримуєте вручну.

Під якою ліцензією він поширюється?

Під ліцензією AGPL-3. Повідомлення про помилки та вдосконалення у вигляді issue в репозиторії GitHub вітаються.

Підтримка від Biricon IT Services

Ми супроводжуємо інсталяції Odoo для малих і середніх підприємств: від впровадження через доопрацювання та міграції до поточної експлуатації. Якщо ви хочете зробити свій вебсайт на Odoo багатомовним, убезпечити переклади за допомогою ШІ або безпечно впровадити модуль у продуктивний екземпляр, ми з радістю допоможемо. Інші власні розробки: Архівування компанії разом із користувачами порталу, Номери документів із префікса, року та лічильника і Firmenbuch і перевірка адрес для австрійських клієнтів.

Зв’язатися з нами

Станом на 3 листопада 2026 року. Версія модуля 19.0.1.0.0. На зображеннях показано вигадані приклади даних.