Gå til indhold

Odoo 19: AI-oversættelse med modkontrol – modulet ai_translation_consensus, hvor flere AI'er kontrollerer hinanden

3. november 2026 | Odoo 19 Community | Egenudvikling
3. november 2026 af
Odoo 19: AI-oversættelse med modkontrol – modulet ai_translation_consensus, hvor flere AI'er kontrollerer hinanden

Odoo 19-modulet ai_translation_consensus: flere AI'er oversætter, bedømmer hinanden anonymt, og et menneske godkender

At oversætte et websted til ti, tyve eller fyrre sprog er hurtigt gjort med en enkelt AI. Sværere er spørgsmålet, om man kan stole på resultatet. En enkelt sprogmodel opfinder af og til ord, oversætter produktnavne med eller ændrer et tal, og den bemærker det ikke selv. Vi har derfor skrevet et modul til Odoo 19, hvor flere AI'er og oversættelsestjenester arbejder på samme tekst, bedømmer hinandens resultater anonymt og bliver enige om den formulering, der på samme tid lyder præcis og naturlig. Det, der ikke er entydigt, får et menneske til at træffe afgørelsen.

Modulet hedder ai_translation_consensus og er tilgængeligt som fri software under AGPL-3-licensen på GitHub:

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

Idéen: modkontrol i stedet for tillid

Modulet kan to ting:

  • Oversætte: supplere manglende (eller forældede) oversættelser af ethvert oversætteligt felt i Odoo, altså blogindlæg, websider, menuer, produkter og alt andet, som Odoo gemmer flersprogligt. AI'erne ser her ikke kun den enkelte sætning, men nabo-blokkene og et udsnit af hele siden. Således forstås enkelte ord i den rigtige sammenhæng.
  • Korrekturlæse: kontrollere teksten på dens eget sprog og foreslå bedre formuleringer eller rettelser. Originalen er her altid en af kandidaterne. Vinder originalen, ændres der ingenting.

Kernen er den gensidige kontrol. Hver AI er god til at bedømme andres tekster, selv om den selv af og til tager fejl. Det udnytter modulet: Flere udbydere skriver hver en version, og de samme udbydere bedømmer derefter alle versioner uden at vide, hvem de stammer fra. Sin egen version bedømmer en udbyder ikke med.

Sådan opstår et forslag

Forløb: oversætte, kontrollere, bedømme, blive enige, godkendelse af mennesker

  1. Oversætte. Hver oversætter skriver parallelt en version.
  2. Faste kontroller. Uden AI kontrolleres, om HTML-tags, entiteter, pladsholdere som %s eller {}, tal og links er forblevet uændrede. En version, der overtræder det, kan aldrig vinde, uanset hvor flydende den lyder.
  3. Bedømme. De øvrige versioner blandes og anonymiseres. Hver kontrollant giver for hver en karakter for nøjagtighed og for naturlighed (1 til 10), nævner en favorit og kan foreslå en forbedring.
  4. Blive enige. En versions rang er 0,5 × gennemsnitskarakter + 5 × andel af favoritstemmer. Som enighed regnes det, når den bedste version har mindst 60 % af favoritstemmerne og en gennemsnitskarakter på mindst 7,0.
  5. Anden runde. Uden enighed går de bedste versioner sammen med kontrollanternes forbedringsforslag endnu en gang til bedømmelse.
  6. Menneske. Bliver det heller ikke da entydigt, venter forslaget på en afgørelse.

Findes der kun rene oversættelsestjenester uden kontrolfunktion (f.eks. DeepL), gælder et resultat kun som aftalt, hvis mindst to tjenester har leveret nøjagtig den samme tekst. Ved korrekturlæsning skal resultaterne forblive tydeligt lig originalen (lighed mindst 0,6, samme tal). Små gratis modeller besvarer en stak af og til med forskudte eller fremmede tekster. Sådanne svar kasseres i stedet for at blive stemt om. En ordliste fastholder mærkenavne og faste begreber.

Udbydere: med og uden nøgle

Gratis og betalte tjenester kan sidde i samme afstemning. Modulet leveres med forudindstillinger til mange udbydere; alle er efter installationen slået fra.

TypeOversætterKontrollerer / retterEksempler
OpenAI-kompatibel grænsefladejajaOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
OpenAI-kompatibel uden nøglejajaOllama på egen server, Pollinations
AnthropicjajaClaude
Google Gemini, Coherejaja
Lokal kommandojajaclaude -p eller ethvert program, der læser fra stdin og udskriver svaret
OversættelsestjenesterjanejDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Man indtaster nøglen (eller navnet på en miljøvariabel, som indeholder den), trykker på Test forbindelse og slår udbyderen til. Modelnavnene i forudindstillingerne er udgangspunkter; den, der bruger dem, bør afstemme dem med udbyderens aktuelle liste. Med to eller flere udbydere er der en ægte modkontrol, med kun én kontrollerer ingen dens arbejde. Guiden gør opmærksom på det.

Et helt websted på én gang

En startguide (menuen AI-oversættelse → Start her) forklarer trinnene og opretter den første regel. Er modulet website installeret, følger brolaget ai_translation_consensus_website automatisk med. Det tilføjer omfanget »Et helt websted med alt, hvad der er på det«: Man vælger webstedet og lader sig foreslå indholdet. Modulet gennemgår alle modeller med oversættelige felter, der hører til webstedet (sider, menuer, blogs, produkter, arrangementer, fora, kurser og mere), og foreslår én regel pr. indholdstype, med webstedets sprog som mål.

Startguide med omfanget helt websted og de foreslåede indholdstyper

  • Det, der ikke er installeret (fora, kurser, gallerier), vises ikke og medtages senere, så snart det er installeret.
  • Shop-modeller foreslås kun, hvis webstedet har en shop. Der medtages kun offentliggjorte poster.
  • Kontakter, virksomheder, betalingsudbydere, prislister, leveringsmetoder, loyalitetsprogrammer og snippet-filtre tilbyder modulet bevidst ikke.
  • Sidernes adressenavne (seo_name) oversættes ikke.
  • Uønskede typer kan fjernes før oprettelsen.

Oprettelsen og søgningen koster ikke noget: Reglen opregner blot, hvilke tekster der kræver arbejde. Først ved behandlingen kaldes udbyderne, og der opstår omkostninger.

Dashboard, omkostninger og automatisk start

Dashboardet viser pr. regel, hvor mange tekster der er færdige, venter på en bekræftelse eller et menneske, er sat i kø eller er slået fejl. Dertil kommer opdelingen efter sprog og udbyder, de hidtidige og de endnu forventede omkostninger, den anslåede resterende tid og kontakten til den planlagte behandling.

Dashboard med fremdrift, omkostninger, tokens og sprog. Eksempeldata.

Tallene i denne illustration er eksempeldata og siger intet om rigtige omkostninger.

  • Omkostninger beregnes ud fra det, udbyderne faktisk melder: tokens (OpenAI, Anthropic, Gemini, Cohere) eller tegn (DeepL, Google, Azure). Tokens vises altid, penge kun, hvis du har indtastet prisen pr. million tokens (eller tegn) hos udbyderen. Forudindstillingerne indeholder ingen priser, fordi disse ændrer sig. Tjenester, der ikke melder tokens, anslås ud fra tekstlængden og markeres som skøn.
  • Prognose: gennemsnitlige omkostninger og arbejdstid pr. tekst gange antallet af tekster i kø. Det er et skøn, som bliver bedre med de første stakke.
  • Automatisk start: Regler med indstillingen Start af sig selv, når en post ændres søger ved hver kørsel af den planlagte handling kun poster, der er ændret siden den sidste søgekørsel. Med den planlagte handling slået til oversættes et redigeret websted altså påny uden håndgreb.
  • Afslutningsmeddelelse: Når den sidste åbne tekst i en regel er færdigbehandlet, vises én gang meddelelsen “Alle sprog oversat” (ved korrekturlæsning “Alle tekster kontrolleret”) i kanalen AI Translation.

Godkendelse af mennesker

Som standard skriver modulet intet i Deres poster uden samtykke. Hvert forslag viser versionerne, hvem der har skrevet dem, karaktererne og kontrollanternes bemærkninger. De kan acceptere forslaget, vælge en anden version, indtaste Deres egen formulering eller afvise det.

Forslag med tre kandidater, karakterer, favoritstemmer og et menneskes beslutning. Eksempeltekst er helt opdigtet.

Teksten og udbydernavnene i dette billede er helt opdigtede for at vise visningen.

Den, der stoler på en regel, kan slå Accepter enighed automatisk til. Forslag uden enighed venter også da på et menneske. Ved accepten kontrollerer modulet endnu en gang, om kildeteksten er ændret i mellemtiden, kører markup-kontrollerne igen og skriver uden sporing og uden at underrette følgere.

Sikkerhed og databeskyttelse

  • Alt er slået fra efter installationen. Udbydere og planlagt handling er deaktiveret. Uden Deres medvirken sendes der intet af sted.
  • Tekster forlader Deres server, så snart en hostet tjeneste er involveret. En regel kan markeres som Fortrolig; så ser kun udbydere, der er markeret som kørende på egen infrastruktur, teksten.
  • Nøgler står i et felt, som kun administratorer kan se, eller i en miljøvariabel, hvor kun navnet henvises til. I fejlmeddelelser maskeres de, og de sendes i headere. Undtagelse: MyMemorys valgfrie nøgle kan kun overgives som forespørgselsparameter.
  • Lokal kommando kører et program og er derfor spærret, indtil systemparameteren ai_translation_consensus.allow_command sættes til True. Kommandoen kaldes uden shell og kører i en tom midlertidig mappe.
  • Prompt-injektion: Opgaverne markerer teksten som data. Instruktioner i den oversatte tekst følges ikke, og et resultat, der overtræder tags eller pladsholdere, kasseres.
  • Gratis tjenester har grænser. Pollinations tillader anonymt ét svar pr. 45 sekunder. Udbyderindstillingen min_interval overholder afstanden, og svar af typen “Prøv igen senere” tages i betragtning.

Installation

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

Der kræves Odoo 19 og Python-pakken requests. En tysk oversættelse medfølger. Bromodulet ai_translation_consensus_website installeres automatisk, hvis website er til stede. Efter installationen skal Odoo-tjenesten genstartes, fordi modulet indeholder Python-kode. Den, der driver et produktivt system, installerer først modulet på en kopi af databasen.

De første skridt: Åbn menuen KI-Übersetzung → Anbieter, test tjenesterne og slå dem til, derefter Hier starten, og opret den første regel. Med Nach Texten suchen oprettes forslagene, med Einen Stapel verarbeiten kaldes udbyderne. Begynd med en lille regel, f.eks. et enkelt blogindlæg og to sprog, og se på resultat og omkostninger, før De sætter en hel webside i kø.

begrænsninger

  • Kvaliteten afhænger af de modeller, De slår til. Modkontrollen reducerer fejl fra enkelte modeller, men giver ingen garanti. For juridisk eller sikkerhedsmæssigt kritiske tekster erstatter modulet ikke en modersmålstaler.
  • Omkostningerne vokser hurtigt. En tekst koster ét kald pr. oversætter, ét kontrolkald pr. kontrollant og ved delt afstemning en ekstra runde. Sidekontekst øger input i hvert kald. En regel med 45 målsprog mangedobler antallet af tekster. Begræns kørslerne med Datensätze je Suchlauf, Neue Vorschläge je Suchlauf og Vorschläge je Cron-Lauf, og tag billige eller lokale modeller med som kontrollanter.
  • Kun felter med translate=True. Formateret tekst behandles blok for blok (Odoos term-mekanisme).
  • Priser og modelnavne ændrer sig. Standardindstillingerne er ikke en vedligeholdt prisliste.
  • Bygget til Odoo 19.0 Community. Andre versioner understøttes ikke.

Ofte stillede spørgsmål

Bliver noget oversat eller overskrevet uden mit samtykke?

Nej, så længe De ikke slår Einigung automatisch übernehmen til. Selv da skrives kun forslag med enighed. Udbyderne og den planlagte handling er slået fra efter installationen.

Har jeg brug for nøgler til betalte udbydere?

Kun til de udbydere, der kræver en. Med Pollinations, MyMemory eller en lokalt drevet model (for eksempel Ollama) går det uden. Gratis tjenester er ofte begrænsede og langsomme, og til en hel webside egner de sig for det meste kun som supplement.

Hvad koster en oversættelse?

Det afhænger af udbyder, model, tekstlængde og antal sprog, og derfor angiver modulet ingen faste tal. Dashboardet viser forbrug og omkostninger, så snart De har indtastet priserne, og anslår restomkostningerne for de tekster, der er sat i kø.

Kan jeg holde tekster fortrolige?

Ja, med regelindstillingen Vertraulich. Så arbejder kun udbydere, der er markeret som kørende på Deres egen infrastruktur, for eksempel en lokal Ollama.

Erstatter det Odoos egen oversættelse?

Nej. Modulet bruger Odoos flersprogsfunktion og skriver i de samme oversættelser, som De ellers vedligeholder i hånden.

Under hvilken licens udgives det?

Under AGPL-3. Fejl og forbedringer er velkomne som issue i GitHub-repositoryet .

Støtte fra Biricon IT Services

Vi servicerer Odoo-installationer for små og mellemstore virksomheder: fra indførelse over tilpasninger og migreringer til den løbende drift. Hvis De driver Deres Odoo-webside flersproget, vil sikre oversættelser med KI eller ønsker at få et modul sikkert ind i Deres produktive instans, hjælper vi gerne. Flere egenudviklinger: Arkivér firma inklusive portalbrugere, Bilagsnumre af præfiks, år og tæller og Firmenbuch og adressekontrol for østrigske kunder.

Kontakt os nu

Status: 3. november 2026. Modulversion 19.0.1.0.0. Billederne viser opdigtede eksempeldata.