Przejdź do zawartości

Odoo 19: tłumaczenie AI z weryfikacją krzyżową – moduł ai_translation_consensus, w którym kilka AI wzajemnie się kontroluje

3 listopada 2026 | Odoo 19 Community | Własne oprogramowanie
3 listopada 2026 przez
Odoo 19: tłumaczenie AI z weryfikacją krzyżową – moduł ai_translation_consensus, w którym kilka AI wzajemnie się kontroluje

Moduł Odoo 19 ai_translation_consensus: kilka AI tłumaczy, ocenia się anonimowo, a człowiek zatwierdza

Przetłumaczenie strony internetowej na dziesięć, dwadzieścia czy czterdzieści języków za pomocą jednej AI jest szybkie. Trudniejsze jest pytanie, czy można zaufać wynikowi. Pojedynczy model językowy od czasu do czasu wymyśla słowa, tłumaczy nazwy produktów lub zmienia liczbę, i sam tego nie zauważa. Dlatego napisaliśmy dla Odoo 19 moduł, w którym kilka AI i usług tłumaczeniowych pracuje nad tym samym tekstem, wzajemnie anonimowo ocenia swoje wyniki i uzgadnia sformułowanie, które brzmi jednocześnie dokładnie i naturalnie. To, co nie jest jednoznaczne, trafia do decyzji człowieka.

Moduł nazywa się ai_translation_consensus i jest dostępny jako wolne oprogramowanie na licencji AGPL-3 na GitHubie:

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

Idea: weryfikacja krzyżowa zamiast zaufania

Moduł potrafi dwie rzeczy:

  • Tłumaczyć: uzupełniać brakujące (lub nieaktualne) tłumaczenia każdego tłumaczalnego pola w Odoo, czyli wpisów blogowych, stron internetowych, menu, produktów i wszystkiego innego, co Odoo przechowuje w wielu językach. AI widzą przy tym nie tylko pojedyncze zdanie, ale także sąsiednie bloki i fragment całej strony. Dzięki temu pojedyncze słowa są rozumiane we właściwym kontekście.
  • Korekta: sprawdzać tekst w jego własnym języku i proponować lepsze sformułowania lub poprawki. Oryginał jest przy tym zawsze jednym z kandydatów. Jeśli wygra oryginał, nic nie zostaje zmienione.

Sednem jest wzajemna kontrola. Każda AI dobrze radzi sobie z oceną cudzych tekstów, nawet jeśli sama czasem się myli. Moduł to wykorzystuje: kilku dostawców pisze po jednej wersji, a ci sami dostawcy oceniają potem wszystkie wersje, nie wiedząc, od kogo pochodzą. Własnej wersji dostawca nie ocenia.

Tak powstaje propozycja

Przebieg: tłumaczenie, kontrola, ocena, uzgodnienie, zatwierdzenie przez człowieka

  1. Tłumaczenie. Każdy tłumacz równolegle pisze jedną wersję.
  2. Stałe kontrole. Bez AI sprawdzane jest, czy tagi HTML, encje, symbole zastępcze takie jak %s lub {}, liczby i linki pozostały niezmienione. Wersja, która to narusza, nigdy nie może wygrać, nawet jeśli brzmi bardzo płynnie.
  3. Ocena. Pozostałe wersje są mieszane i anonimizowane. Każdy oceniający przyznaje dla każdej z nich notę za dokładność i za naturalność (od 1 do 10), wskazuje faworyta i może zaproponować poprawkę.
  4. Uzgodnienie. Ranga wersji to 0,5 × średnia ocena + 5 × udział głosów na faworyta. Za uzgodnienie uznaje się sytuację, gdy najlepsza wersja ma co najmniej 60 % głosów na faworyta i średnią ocenę co najmniej 7,0.
  5. Druga runda. Bez uzgodnienia najlepsze wersje wraz z propozycjami poprawek oceniających trafiają jeszcze raz do oceny.
  6. Człowiek. Jeśli także wtedy nie będzie jednoznacznie, propozycja czeka na decyzję.

Jeśli są tylko czyste usługi tłumaczeniowe bez funkcji kontroli (na przykład DeepL), wynik uznaje się za uzgodniony tylko wtedy, gdy co najmniej dwie usługi dostarczyły dokładnie ten sam tekst. Przy korekcie wyniki muszą pozostać rozpoznawalnie podobne do oryginału (podobieństwo co najmniej 0,6, te same liczby). Małe bezpłatne modele czasem odpowiadają na całą paczkę przesuniętymi lub obcymi tekstami. Takie odpowiedzi są odrzucane zamiast poddawane głosowaniu. Glosariusz przechowuje nazwy marek i stałe terminy.

Dostawcy: z kluczem i bez klucza

Usługi bezpłatne i płatne mogą uczestniczyć w tym samym głosowaniu. Moduł zawiera ustawienia wstępne dla wielu dostawców; wszystkie są po instalacji wyłączone.

RodzajTłumaczySprawdza / poprawiaPrzykłady
Interfejs zgodny z OpenAItaktakOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
Zgodny z OpenAI bez kluczataktakOllama na własnym serwerze, Pollinations
AnthropictaktakClaude
Google Gemini, Coheretaktak
Polecenie lokalnetaktakclaude -p lub dowolny program, który czyta ze stdin i wypisuje odpowiedź
Usługi tłumaczeniowetaknieDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Wpisuje się klucz (lub nazwę zmiennej środowiskowej, która go zawiera), naciska Przetestuj połączenie i włącza dostawcę. Nazwy modeli w ustawieniach wstępnych są punktami wyjścia; kto z nich korzysta, powinien porównać je z aktualną listą dostawcy. Przy dwóch lub więcej dostawcach istnieje prawdziwa weryfikacja krzyżowa, przy jednym nikt nie sprawdza jego pracy. Kreator na to zwraca uwagę.

Cała strona internetowa naraz

Kreator startowy (menu Tłumaczenie AI → Zacznij tutaj) wyjaśnia kroki i tworzy pierwszą regułę. Jeśli zainstalowany jest moduł website, automatycznie dołączany jest moduł pomostowy ai_translation_consensus_website. Dodaje on zakres „Cała strona internetowa ze wszystkim, co się na niej znajduje”: wybiera się stronę i pozwala zaproponować sobie treści. Moduł przegląda wszystkie modele z tłumaczalnymi polami należące do strony (strony, menu, blogi, produkty, wydarzenia, fora, kursy i więcej) i proponuje jedną regułę dla każdego rodzaju treści, z językami strony jako celem.

Kreator startowy z zakresem cała strona internetowa i proponowanymi rodzajami treści

  • To, co nie jest zainstalowane (fora, kursy, galerie), nie pojawia się i zostanie uwzględnione później, gdy zostanie zainstalowane.
  • Modele sklepu są proponowane tylko wtedy, gdy strona ma sklep. Uwzględniane są tylko opublikowane rekordy.
  • Kontaktów, firm, dostawców płatności, cenników, sposobów dostawy, programów lojalnościowych i filtrów snippetów moduł celowo nie oferuje.
  • Nazwy adresowe stron (seo_name) nie są tłumaczone.
  • Niepożądane rodzaje można usunąć przed utworzeniem.

Tworzenie i wyszukiwanie nic nie kosztują: reguła wylicza tylko, które teksty wymagają pracy. Dopiero przy przetwarzaniu wywoływani są dostawcy i powstają koszty.

Dashboard, koszty i automatyczny start

Dashboard pokazuje dla każdej reguły, ile tekstów jest gotowych, czeka na potwierdzenie lub człowieka, jest w kolejce albo zakończyło się niepowodzeniem. Do tego dochodzą podział według języka i dostawcy, dotychczasowe i jeszcze oczekiwane koszty, szacowany pozostały czas oraz przełącznik zaplanowanego przetwarzania.

Dashboard z postępem, kosztami, tokenami i językami. Dane przykładowe.

Liczby na tej ilustracji to dane przykładowe i nic nie mówią o rzeczywistych kosztach.

  • Koszty są obliczane na podstawie tego, co dostawcy faktycznie zgłaszają: tokeny (OpenAI, Anthropic, Gemini, Cohere) lub znaki (DeepL, Google, Azure). Tokeny są pokazywane zawsze, pieniądze tylko wtedy, gdy wpisali Państwo u dostawcy cenę za milion tokenów (lub znaków). Ustawienia wstępne nie zawierają cen, ponieważ one się zmieniają. Usługi, które nie zgłaszają tokenów, są szacowane na podstawie długości tekstu i oznaczane jako szacunek.
  • Prognoza: średni koszt i czas pracy na tekst razy liczba tekstów w kolejce. Jest to szacunek, który poprawia się wraz z pierwszymi paczkami.
  • Automatyczny start: reguły z opcją Uruchamiaj samoczynnie, gdy rekord się zmieni przy każdym przebiegu zaplanowanej akcji wyszukują tylko rekordy zmienione od ostatniego przebiegu wyszukiwania. Przy włączonej zaplanowanej akcji edytowana strona internetowa jest więc tłumaczona ponownie bez żadnej ingerencji.
  • Komunikat o zakończeniu: Gdy ostatni otwarty tekst reguły zostanie załatwiony, na kanale AI Translation jednorazowo pojawi się komunikat „Wszystkie języki przetłumaczone” (przy korekcie: „Wszystkie teksty sprawdzone”).

Zatwierdzenie przez człowieka

Domyślnie moduł niczego nie zapisuje w Państwa rekordach bez zgody. Każda propozycja pokazuje wersje, ich autorów, oceny oraz uwagi recenzentów. Mogą Państwo zatwierdzić propozycję, wybrać inną wersję, wpisać własne sformułowanie albo ją odrzucić.

Propozycja z trzema kandydatami, ocenami, głosami na faworyta i decyzją podjętą przez człowieka. Tekst przykładowy jest całkowicie zmyślony.

Tekst i nazwy dostawców na tej ilustracji są zmyślone wyłącznie na potrzeby pokazania widoku.

Kto ufa danej regule, może włączyć opcję Przyjmuj zgodność automatycznie. Propozycje bez zgodności nadal czekają wtedy na człowieka. Przy zatwierdzaniu moduł ponownie sprawdza, czy tekst źródłowy się w międzyczasie nie zmienił, jeszcze raz wykonuje kontrole znaczników i zapisuje bez śledzenia zmian oraz bez powiadamiania obserwujących.

Bezpieczeństwo i ochrona danych

  • Po instalacji wszystko jest wyłączone. Dostawcy i zaplanowana akcja są dezaktywowani. Bez Państwa działania nic nie zostanie wysłane.
  • Teksty opuszczają Państwa serwer, gdy uczestniczy w tym usługa hostowana. Regułę można oznaczyć jako Poufna; wtedy tekst widzą tylko ci dostawcy, którzy są oznaczeni jako działający na własnej infrastrukturze.
  • Klucze znajdują się w polu widocznym tylko dla administratorów albo w zmiennej środowiskowej, do której odwołuje się wyłącznie jej nazwa. W komunikatach o błędach są maskowane, a przesyłane są w nagłówkach. Wyjątek: opcjonalny klucz MyMemory może tam być przekazywany wyłącznie jako parametr zapytania.
  • Polecenie lokalne uruchamia program i dlatego jest zablokowane do czasu ustawienia parametru systemowego ai_translation_consensus.allow_command na True. Polecenie jest wywoływane bez powłoki i działa w pustym katalogu tymczasowym.
  • Prompt injection: Zlecenia oznaczają tekst jako dane. Instrukcje zawarte w tłumaczonym tekście nie są wykonywane, a wynik naruszający tagi lub symbole zastępcze zostaje odrzucony.
  • Darmowe usługi mają ograniczenia. Pollinations pozwala anonimowo na jedną odpowiedź na 45 sekund. Opcja dostawcy min_interval dotrzymuje tego odstępu, a odpowiedzi „Spróbuj ponownie później” są uwzględniane.

Instalacja

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

Wymagane są Odoo 19 oraz pakiet Pythona requests. W zestawie jest tłumaczenie niemieckie. Moduł pomostowy ai_translation_consensus_website jest instalowany automatycznie, jeśli dostępny jest moduł website. Po instalacji usługę Odoo trzeba uruchomić ponownie, ponieważ moduł zawiera kod Pythona. Kto prowadzi system produkcyjny, powinien najpierw zainstalować moduł na kopii bazy danych.

Pierwsze kroki: otworzyć menu Tłumaczenie AI → Dostawcy, przetestować i włączyć usługi, następnie Zacznij tutaj i utworzyć pierwszą regułę. Przez Wyszukaj teksty generowane są propozycje, a przez Przetwórz jedną partię wywoływani są dostawcy. Proszę zacząć od małej reguły, na przykład pojedynczego wpisu na blogu i dwóch języków, i sprawdzić wynik oraz koszty, zanim zakolejkują Państwo całą stronę internetową.

ograniczeniach

  • Jakość zależy od modeli, które Państwo włączą. Weryfikacja krzyżowa zmniejsza liczbę błędów pojedynczych modeli, ale niczego nie gwarantuje. W przypadku tekstów istotnych prawnie lub dla bezpieczeństwa moduł nie zastępuje rodzimego użytkownika języka.
  • Koszty szybko rosną. Jeden tekst kosztuje jedno wywołanie na tłumacza, jedno wywołanie weryfikacyjne na recenzenta, a przy podzielonym głosowaniu także drugą rundę. Kontekst strony zwiększa dane wejściowe każdego wywołania. Reguła z 45 językami docelowymi mnoży liczbę tekstów. Proszę ograniczać przebiegi opcjami Rekordy na przebieg wyszukiwania, Nowe propozycje na przebieg wyszukiwania i Propozycje na przebieg crona oraz dodać jako recenzentów tanie lub lokalne modele.
  • Tylko pola z translate=True. Tekst sformatowany jest przetwarzany blok po bloku (mechanizm terminów Odoo).
  • Ceny i nazwy modeli się zmieniają. Ustawienia domyślne nie są aktualizowanym cennikiem.
  • Zbudowany dla Odoo 19.0 Community. Inne wersje nie są obsługiwane.

Najczęstsze pytania

Czy coś jest tłumaczone lub nadpisywane bez mojej zgody?

Nie, dopóki nie włączą Państwo opcji Przyjmuj zgodność automatycznie. Nawet wtedy zapisywane są tylko propozycje, w których osiągnięto zgodność. Dostawcy i zaplanowana akcja są po instalacji wyłączeni.

Czy potrzebuję kluczy do płatnych dostawców?

Tylko dla tych dostawców, którzy ich wymagają. Z Pollinations, MyMemory lub modelem uruchamianym lokalnie (na przykład Ollama) da się obejść bez nich. Darmowe usługi są często ograniczone i wolne, więc dla całej strony internetowej nadają się zwykle tylko jako uzupełnienie.

Ile kosztuje tłumaczenie?

To zależy od dostawcy, modelu, długości tekstu i liczby języków, dlatego moduł nie podaje stałych kwot. Dashboard pokazuje zużycie i koszty, gdy tylko wprowadzą Państwo ceny, oraz szacuje pozostałe koszty zakolejkowanych tekstów.

Czy mogę zachować poufność tekstów?

Tak, dzięki opcji reguły Poufna. Wtedy pracują tylko ci dostawcy, którzy są oznaczeni jako działający na Państwa własnej infrastrukturze, na przykład lokalna Ollama.

Czy to zastępuje własne tłumaczenie Odoo?

Nie. Moduł korzysta z wielojęzyczności Odoo i zapisuje w tych samych tłumaczeniach, które w przeciwnym razie utrzymują Państwo ręcznie.

Na jakiej licencji jest udostępniony?

Na licencji AGPL-3. Błędy i ulepszenia są mile widziane jako issue w repozytorium GitHub .

Wsparcie ze strony Biricon IT Services

Opiekujemy się instalacjami Odoo dla małych i średnich przedsiębiorstw: od wdrożenia przez dostosowania i migracje po bieżącą eksploatację. Jeśli chcą Państwo prowadzić stronę Odoo w wielu językach, zabezpieczyć tłumaczenia za pomocą AI lub bezpiecznie wprowadzić moduł do instancji produkcyjnej, chętnie pomożemy. Dalsze własne rozwiązania: Archiwizacja firmy wraz z użytkownikami portalu, Numery dokumentów z prefiksu, roku i licznika i Firmenbuch i weryfikacja adresów dla austriackich klientów.

Skontaktuj się z nami

Stan na: 3 listopada 2026. Wersja modułu 19.0.1.0.0. Ilustracje przedstawiają zmyślone dane przykładowe.