Перакласці сайт на дзесяць, дваццаць ці сорак моў з дапамогай адной сістэмы ШІ можна хутка. Складаней адказаць на пытанне, ці можна давяраць выніку. Асобная моўная мадэль часам выдумляе словы, перакладае назвы прадуктаў або змяняе лік і сама гэтага не заўважае. Таму мы напісалі для Odoo 19 модуль, у якім некалькі сістэм ШІ і сэрвісаў перакладу працуюць над адным тэкстам, ананімна ацэньваюць вынікі адна адной і ўзгадняюць фармулёўку, якая адначасова дакладная і натуральная. Калі адназначнага выніку няма, рашэнне прымае чалавек.
Модуль называецца ai_translation_consensus і даступны на GitHub як свабоднае праграмнае забеспячэнне пад ліцэнзіяй AGPL-3:
github.com/Alex0176/odoo-ai-translation-consensus
Змест артыкула
Ідэя: узаемная праверка замест даверу
Модуль умее дзве рэчы:
- Перакладаць: дадаваць адсутныя або абнаўляць састарэлыя пераклады любога перакладальнага поля ў Odoo: артыкулаў блога, вэб-старонак, меню, тавараў і ўсяго іншага, што Odoo захоўвае на некалькіх мовах. Пры гэтым сістэмы ШІ бачаць не толькі асобны сказ, але і суседнія блокі ды фрагмент усёй старонкі. Так асобныя словы разумеюцца ў правільным кантэксце.
- Вычытваць: правяраць тэкст на яго ўласнай мове і прапаноўваць лепшыя фармулёўкі або выпраўленні. Арыгінал заўсёды застаецца адным з кандыдатаў. Калі перамагае арыгінал, нічога не змяняецца.
Аснова — узаемная праверка. Кожная сістэма ШІ добра ацэньвае чужыя тэксты, нават калі сама часам памыляецца. Модуль выкарыстоўвае гэта: некалькі правайдараў ствараюць па адным варыянце, а затым тыя ж правайдары ацэньваюць усе варыянты, не ведаючы, хто іх аўтар. Уласны варыянт правайдар не ацэньвае.
Як ствараецца прапанаваны варыянт
- Пераклад. Кожны перакладчык паралельна стварае свой варыянт.
- Праверкі паводле зададзеных правіл. Без удзелу ШІ правяраецца, ці засталіся нязменнымі HTML-тэгі, сутнасці, запаўняльнікі кшталту
%sабо{}, лікі і спасылкі. Варыянт, які парушае гэтыя патрабаванні, ніколі не можа перамагчы, наколькі б натуральна ён ні чытаўся. - Ацэнка. Астатнія варыянты перамешваюцца і ананімізуюцца. Кожны правяральнік выстаўляе кожнаму варыянту ацэнкі за дакладнасць і натуральнасць (ад 1 да 10), выбірае найлепшы і можа прапанаваць паляпшэнне.
- Einigen. Der Rang einer Fassung ist 0,5 × Durchschnittsnote + 5 × Anteil der Favoritenstimmen. Als Einigung zählt, wenn die beste Fassung mindestens 60 % der Favoritenstimmen und eine Durchschnittsnote von mindestens 7,0 hat.
- Другі раўнд. Калі згоды няма, найлепшыя варыянты разам з прапановамі правяральнікаў па паляпшэнні зноў накіроўваюцца на ацэнку.
- Чалавек. Калі і пасля гэтага вынік неадназначны, прапанаваны варыянт чакае рашэння чалавека.
Калі выкарыстоўваюцца толькі сэрвісы перакладу без функцыі праверкі (напрыклад, 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). Токены паказваюцца заўсёды, а грашовая сума — толькі калі ў наладах правайдара вы ўвялі цану за мільён токенаў або сімвалаў. Гатовыя налады не змяшчаюць цэн, бо яны змяняюцца. Для сэрвісаў, якія не паведамляюць колькасць токенаў, яна ацэньваецца паводле даўжыні тэксту і пазначаецца як прыблізная.
- Прагноз: сярэднія выдаткі і час апрацоўкі аднаго тэксту памнажаюцца на колькасць тэкстаў у чарзе. Гэта прыблізная ацэнка, якая становіцца дакладнейшай пасля апрацоўкі першых пакетаў.
- Аўтаматычны запуск: правілы з опцыяй Запускаць аўтаматычна пры змене запісу пры кожным запуску запланаванага дзеяння шукаюць толькі запісы, змененыя пасля апошняга пошуку. Такім чынам, калі запланаванае дзеянне ўключанае, адрэдагаваная вэб-старонка перакладаецца зноў без ручнога ўмяшання.
- Verbrauch der Abos: Für Anbieter, die über ein angemeldetes Kommandozeilenprogramm laufen (Antigravity, Codex), fragt das Modul alle zehn Minuten ab, wie viel vom Abo-Fenster verbraucht ist und wann es sich zurücksetzt. Das Dashboard zeigt es je aktivem Anbieter als Balken mit Rücksetzzeit, dazu die Anfragen der letzten 24 Stunden und den Grund einer laufenden Pause. Ein Knopf liest die Werte sofort neu. So sieht man, dass ein Wochenkontingent in wenigen Stunden aufgebraucht sein kann, bevor Anfragen abgelehnt werden. Anbieter ohne Verbrauchsmeldung (zum Beispiel MyMemory) sagen das ausdrücklich, statt eine Zahl zu erfinden.
- Паведамленне аб завяршэнні: калі апрацаваны апошні незавершаны тэкст правіла, у канале AI Translation адзін раз з’яўляецца паведамленне «Перакладзена на ўсе мовы» (пры вычытванні — «Усе тэксты правераныя»).
Зацвярджэнне чалавекам
Па змаўчанні модуль нічога не запісвае ў вашы запісы без згоды. У кожнай прапанове паказаныя варыянты, іх аўтары, ацэнкі і заўвагі правяральнікаў. Вы можаце прыняць прапанову, выбраць іншы варыянт, увесці ўласную фармулёўку або адхіліць прапанову.
Тэкст і назвы правайдараў на гэтай ілюстрацыі выдуманыя, каб паказаць выгляд інтэрфейсу.
Калі вы давяраеце правілу, можна ўключыць Аўтаматычна прымаць узгоднены вынік. Прапановы без узгаднення і ў гэтым выпадку чакаюць рашэння чалавека. Пры прыняцці модуль яшчэ раз правярае, ці не змяніўся зыходны тэкст, паўтарае праверкі разметкі і захоўвае вынік без адсочвання змен і без апавяшчэння падпісчыкаў.
Бяспека і абарона даных
- Пасля ўсталявання ўсё выключана. Правайдары і запланаванае дзеянне адключаныя. Без вашага ўдзелу нічога не адпраўляецца.
- Тэксты пакідаюць ваш сервер, як толькі ў працы ўдзельнічае знешні сэрвіс. Правіла можна пазначыць як Канфідэнцыйнае; тады тэкст атрымаюць толькі правайдары, пазначаныя як запушчаныя на ўласнай інфраструктуры.
- Ключы захоўваюцца ў полі, якое бачаць толькі адміністратары, або ў зменнай асяроддзя, на якую спасылаюцца толькі па назве. У паведамленнях пра памылкі ключы маскіруюцца, а пры адпраўцы перадаюцца ў загалоўках. Выключэнне: неабавязковы ключ MyMemory можна перадаць толькі як параметр запыту.
- Лакальная каманда запускае праграму, таму гэтая функцыя заблакаваная, пакуль сістэмны параметр
ai_translation_consensus.allow_commandне будзе зададзены якTrue. Каманда выклікаецца без каманднай абалонкі і выконваецца ў пустым часовым каталогу. - Ін’екцыя ў промпт: у заданнях тэкст пазначаецца як даныя. Інструкцыі ў тэксце для перакладу не выконваюцца, а вынік з парушанымі тэгамі або запаўняльнікамі адхіляецца.
- Бясплатныя сэрвісы маюць абмежаванні. 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. Калі вы працуеце з рабочай сістэмай, спачатку ўсталюйце модуль на копіі базы даных.
Першыя крокі: адкрыйце меню Пераклад з ШІ → Пастаўшчыкі, праверце і ўключыце сэрвісы, затым выберыце Пачаць тут і стварыце першае правіла. Кнопка Шукаць тэксты стварае прапановы, а Апрацаваць пакет запускае звароты да пастаўшчыкоў. Пачніце з невялікага правіла, напрыклад для аднаго допісу ў блогу і дзвюх моў, і ацаніце вынік і выдаткі, перш чым ставіць у чаргу ўвесь сайт.
Абмежаванні
- Якасць залежыць ад мадэляў, якія вы ўключыце. Узаемная праверка памяншае колькасць памылак асобных мадэляў, але нічога не гарантуе. Для юрыдычна значных тэкстаў і тэкстаў, ад якіх залежыць бяспека, модуль не замяняе носьбіта мовы.
- Выдаткі хутка растуць. Кожны тэкст патрабуе аднаго выкліку на перакладчыка, аднаго праверачнага выкліку на правяральніка і другога раўнда, калі галасы падзяліліся. Кантэкст старонкі павялічвае аб’ём уваходных даных кожнага выкліку. Правіла з 45 мэтавымі мовамі шматкроць павялічвае колькасць тэкстаў. Абмяжоўвайце апрацоўку параметрамі Запісаў за адзін пошук, Новых прапаноў за адзін пошук і Прапаноў за адзін запуск Cron, а для праверкі дадавайце недарагія або лакальныя мадэлі.
- Толькі палі з
translate=True. Фарматаваны тэкст апрацоўваецца па блоках праз механізм тэрмінаў Odoo. - Цэны і назвы мадэляў змяняюцца. Папярэдне зададзеныя значэнні не з’яўляюцца прэйскурантам, які рэгулярна абнаўляецца.
- Распрацавана для Odoo 19.0 Community. Іншыя версіі не падтрымліваюцца.
Частыя пытанні
Ці будзе нешта перакладзена або перазапісана без маёй згоды?
Не, пакуль вы не ўключыце Аўтаматычна прымаць узгоднены варыянт. Нават тады запісваюцца толькі прапановы, па якіх дасягнута згода. Пасля ўсталявання пастаўшчыкі і запланаванае дзеянне выключаны.
Ці патрэбныя мне ключы для платных пастаўшчыкоў?
Толькі для тых пастаўшчыкоў, якія іх патрабуюць. З Pollinations, MyMemory або лакальна запушчанай мадэллю, напрыклад Ollama, можна працаваць без ключоў. Бясплатныя сэрвісы часта маюць абмежаванні і працуюць павольна, таму для цэлага сайта яны звычайна падыходзяць толькі як дадатак.
Колькі каштуе пераклад?
Гэта залежыць ад пастаўшчыка, мадэлі, даўжыні тэксту і колькасці моў, таму модуль не задае фіксаваных сум. Пасля ўводу цэн панэль паказвае спажыванне і выдаткі, а таксама ацэньвае астатні кошт апрацоўкі тэкстаў у чарзе.
Ці магу я захаваць канфідэнцыйнасць тэкстаў?
Так, з дапамогай параметра правіла Канфідэнцыйна. Тады выкарыстоўваюцца толькі пастаўшчыкі, пазначаныя як тыя, што працуюць у вашай уласнай інфраструктуры, напрыклад лакальны Ollama.
Ці замяняе гэта ўласны механізм перакладу Odoo?
Не. Модуль выкарыстоўвае шматмоўныя магчымасці Odoo і запісвае вынікі ў тыя ж пераклады, якія вы звычайна рэдагуеце ўручную.
Пад якой ліцэнзіяй распаўсюджваецца модуль?
Пад ліцэнзіяй AGPL-3. Паведамленні пра памылкі і прапановы паляпшэнняў у выглядзе зваротаў у рэпазіторыі GitHub вітаюцца.
Падтрымка ад Biricon IT Services
Мы суправаджаем усталёўкі Odoo для малых і сярэдніх прадпрыемстваў: ад укаранення, дапрацовак і міграцый да паўсядзённай эксплуатацыі. Калі вы хочаце весці сайт Odoo на некалькіх мовах, павысіць надзейнасць перакладаў з ШІ або бяспечна ўсталяваць модуль у працоўны асобнік, мы ахвотна дапаможам. Іншыя нашы распрацоўкі: Архіваванне кампаніі разам з карыстальнікамі партала, Нумары дакументаў з прэфікса, года і лічыльніка і Рэестр кампаній і праверка адрасоў для аўстрыйскіх кліентаў.
Станам на 8 лістапада 2026 года. Версія модуля 19.0.1.2.0. На ілюстрацыях паказаны выдуманыя даныя для прыкладу.