Преминете към съдържание

Odoo 19: превод с ИИ и взаимна проверка – модулът ai_translation_consensus, при който няколко ИИ се контролират взаимно

3 ноември 2026 г. | Odoo 19 Community | Собствена разработка
3 ноември 2026 г. от
Odoo 19: превод с ИИ и взаимна проверка – модулът ai_translation_consensus, при който няколко ИИ се контролират взаимно

Модул ai_translation_consensus за Odoo 19: няколко ИИ превеждат, оценяват се анонимно и човек одобрява

Да се преведе уебсайт на десет, двадесет или четиридесет езика е бърза работа с един-единствен ИИ. По-труден е въпросът дали може да се вярва на резултата. Един-единствен езиков модел понякога измисля думи, превежда и имената на продуктите или променя число, а сам не го забелязва. Затова написахме за Odoo 19 модул, при който няколко ИИ и преводачески услуги работят върху един и същ текст, оценяват анонимно резултатите си взаимно и се договарят за формулировката, която звучи едновременно точно и естествено. Онова, което не е еднозначно, получава човек за решение.

Модулът се казва ai_translation_consensus и е свободен софтуер под лиценза AGPL-3 в GitHub:

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 идва автоматично. Той добавя обхвата „Цял уебсайт с всичко, което е на него“: избира се уебсайтът и се оставя да се предложат съдържанията. Модулът разглежда всички модели с преводими полета, които принадлежат към уебсайта (страници, менюта, блогове, продукти, събития, форуми, курсове и други), и предлага по едно правило за всеки вид съдържание, с езиците на уебсайта като цел.

Стартов помощник с обхвата цял уебсайт и предложените видове съдържание

  • Което не е инсталирано (форуми, курсове, галерии), не се показва и ще бъде включено по-късно, щом бъде инсталирано.
  • Моделите на магазина се предлагат само ако уебсайтът има магазин. Обхващат се само публикувани записи.
  • Контакти, фирми, платежни доставчици, ценоразписи, начини на доставка, програми за лоялност и snippet филтри модулът умишлено не предлага.
  • Адресните имена на страниците (seo_name) не се превеждат.
  • Нежеланите видове могат да се премахнат преди създаването.

Създаването и търсенето не струват нищо: правилото само изброява кои текстове изискват работа. Едва при обработката се извикват доставчици и възникват разходи.

Табло, разходи и автоматичен старт

Таблото показва за всяко правило колко текста са готови, чакат потвърждение или човек, са наредени на опашка или са се провалили. Към това идват разбивката по език и доставчик, досегашните и още очакваните разходи, приблизителното оставащо време и превключвателят за планираната обработка.

Табло с напредък, разходи, токени и езици. Примерни данни.

Числата на тази фигура са примерни данни и не казват нищо за истинските разходи.

  • Разходите се изчисляват от това, което доставчиците действително отчитат: токени (OpenAI, Anthropic, Gemini, Cohere) или знаци (DeepL, Google, Azure). Токените се показват винаги, парите – само ако сте въвели цената за милион токена (или знака) при доставчика. Предварителните настройки не съдържат цени, защото те се променят. Услуги, които не отчитат токени, се оценяват по дължината на текста и се означават като приблизителна оценка.
  • Прогноза: средни разходи и работно време за текст по броя на наредените на опашка текстове. Това е приблизителна оценка, която се подобрява с първите пакети.
  • Автоматичен старт: правила с опцията Стартиране от само себе си, когато запис се промени при всяко изпълнение на планираното действие търсят само записи, променени след последното търсене. При включено планирано действие редактирана уебстраница се превежда отново без никакво действие.
  • Съобщение за готовност: Когато последният отворен текст по дадено правило е обработен, в канала AI Translation се появява еднократно съобщението „Всички езици са преведени“ (при коректурата — „Всички текстове са проверени“).

Одобрение от хора

По подразбиране модулът не записва нищо във Вашите записи без Ваше съгласие. Всяко предложение показва версиите, кой ги е написал, оценките и бележките на проверяващите. Можете да приемете предложението, да изберете друга версия, да въведете собствена формулировка или да го отхвърлите.

Предложение с трима кандидати, оценки, гласове за фаворит и решение, взето от човек. Примерният текст е напълно измислен.

Текстът и имената на доставчиците на тази илюстрация са напълно измислени, за да се покаже изгледът.

Който има доверие на дадено правило, може да включи Автоматично приемане при съгласие. Предложенията без съгласие и тогава чакат човек. При приемане модулът проверява още веднъж дали изходният текст междувременно не е променен, повторно изпълнява проверките на разметката и записва без проследяване и без уведомяване на последователите.

Сигурност и защита на данните

  • След инсталацията всичко е изключено. Доставчиците и планираното действие са деактивирани. Без Ваша намеса не се изпраща нищо.
  • Текстовете напускат Вашия сървър, щом е включена хоствана услуга. Дадено правило може да се маркира като Поверително; тогава текстът се вижда само от доставчици, отбелязани като работещи на собствена инфраструктура.
  • Ключовете се съхраняват в поле, което се вижда само от администраторите, или в променлива на средата, към която сочи само името. В съобщенията за грешки те се маскират и се изпращат в хедъри. Изключение: незадължителният ключ на MyMemory може да се предава там само като параметър на заявката.
  • Локалната команда изпълнява програма и затова е блокирана, докато системният параметър ai_translation_consensus.allow_command не бъде зададен на True. Командата се извиква без обвивка (shell) и работи в празна временна директория.
  • Prompt injection: Заданията маркират текста като данни. Инструкции в преведения текст не се изпълняват, а резултат, който нарушава тагове или заместители, се отхвърля.
  • Безплатните услуги имат ограничения. 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 код. Който работи с продуктивна система, инсталира модула първо върху копие на базата данни.

Първите стъпки: отворете менюто AI превод → Доставчици, тествайте и включете услугите, след това Старт оттук и създайте първото правило. С Търсене на текстове се генерират предложенията, а с Обработка на пакет се извикват доставчиците. Започнете с малко правило, например една-единствена публикация в блога и два езика, и огледайте резултата и разходите, преди да включите цял уебсайт.

ограниченията

  • Качеството зависи от моделите, които включите. Кръстосаната проверка намалява грешките на отделните модели, но не дава гаранция. За юридически или критични за сигурността текстове модулът не заменя носител на езика.
  • Разходите растат бързо. Един текст струва по едно извикване на преводач, по едно проверяващо извикване на проверяващ и при разделено гласуване — втори кръг. Контекстът на страницата увеличава входа на всяко извикване. Правило с 45 целеви езика умножава броя на текстовете. Ограничавайте изпълненията с Записи на търсене, Нови предложения на търсене и Предложения на изпълнение на крон и добавяйте като проверяващи евтини или локални модели.
  • Само полета с translate=True. Форматираният текст се обработва блок по блок (механизмът на Odoo за термини).
  • Цените и имената на моделите се променят. Предварителните настройки не са поддържана ценова листа.
  • Създаден за Odoo 19.0 Community. Други версии не се поддържат.

Често задавани въпроси

Превежда ли се или презаписва ли се нещо без моето съгласие?

Не, докато не включите Автоматично приемане при съгласие. Дори тогава се записват само предложения със съгласие. Доставчиците и планираното действие са изключени след инсталацията.

Нужни ли са ми ключове за платените доставчици?

Само за доставчиците, които изискват такъв. С Pollinations, MyMemory или локално работещ модел (например Ollama) става и без. Безплатните услуги често са ограничени и бавни и за цял уебсайт обикновено са подходящи само като допълнение.

Колко струва един превод?

Зависи от доставчика, модела, дължината на текста и броя на езиците, затова модулът не задава твърди числа. Таблото показва потреблението и разходите, щом въведете цените, и оценява оставащите разходи за наредените на опашка текстове.

Мога ли да запазя текстовете поверителни?

Да, с опцията на правилото Поверително. Тогава работят само доставчици, отбелязани като работещи на Вашата собствена инфраструктура, например локален Ollama.

Заменя ли това собствения превод на Odoo?

Не. Модулът използва многоезичността на Odoo и записва в същите преводи, които иначе поддържате ръчно.

Под какъв лиценз е?

Под AGPL-3. Грешки и подобрения са добре дошли като issue в хранилището в GitHub .

Подкрепа от Biricon IT Services

Обслужваме инсталации на Odoo за малки и средни предприятия: от внедряването през персонализациите и миграциите до текущата експлоатация. Ако управлявате Вашия уебсайт на Odoo на няколко езика, искате да обезопасите преводите с изкуствен интелект или да внедрите модул безопасно във Вашата продуктивна инстанция, с удоволствие ще Ви помогнем. Други собствени разработки: Архивиране на фирма заедно с потребителите на портала, Номера на документи от префикс, година и брояч и Търговски регистър и проверка на адреси за австрийски клиенти.

Свържете се с нас

Към: 3 ноември 2026 г. Версия на модула 19.0.1.0.0. Илюстрациите показват измислени примерни данни.