Hoppa till innehåll

Odoo 19: AI-översättning med korskontroll – modulen ai_translation_consensus, där flera AI-modeller kontrollerar varandra

3 november 2026 | Odoo 19 Community | Egenutveckling
3 november 2026 av
Odoo 19: AI-översättning med korskontroll – modulen ai_translation_consensus, där flera AI-modeller kontrollerar varandra

Odoo 19-modulen ai_translation_consensus: flera AI-modeller översätter, bedömer varandra anonymt och en människa godkänner

Att översätta en webbplats till tio, tjugo eller fyrtio språk går snabbt med en enda AI. Svårare är frågan om man kan lita på resultatet. En enskild språkmodell hittar ibland på ord, översätter produktnamn eller ändrar ett tal, och märker det inte själv. Vi har därför skrivit en modul för Odoo 19 där flera AI-modeller och översättningstjänster arbetar med samma text, bedömer varandras resultat anonymt och enas om den formulering som låter både exakt och naturlig. Det som inte är entydigt får en människa att avgöra.

Modulen heter ai_translation_consensus och finns som fri programvara under AGPL-3-licensen på GitHub:

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

Idén: korskontroll i stället för förtroende

Modulen kan två saker:

  • Översätta: komplettera saknade (eller föråldrade) översättningar för varje översättningsbart fält i Odoo, alltså blogginlägg, webbsidor, menyer, produkter och allt annat som Odoo lagrar flerspråkigt. AI-modellerna ser då inte bara den enskilda meningen, utan grannblocken och ett utsnitt av hela sidan. På så sätt förstås enskilda ord i rätt sammanhang.
  • Korrekturläsa: granska texten på dess eget språk och föreslå bättre formuleringar eller rättelser. Originalet är då alltid en av kandidaterna. Vinner originalet ändras ingenting.

Kärnan är den ömsesidiga granskningen. Varje AI-modell är bra på att bedöma främmande texter, även om den själv ibland missar. Det utnyttjar modulen: Flera leverantörer skriver var sin version, och samma leverantörer bedömer därefter alla versioner, utan att veta vem de kommer från. En leverantör bedömer inte sin egen version.

Så uppstår ett förslag

Förlopp: Översätta, kontrollera, bedöma, enas, godkännande av människor

  1. Översätta. Varje översättare skriver parallellt en version.
  2. Fasta kontroller. Utan AI kontrolleras om HTML-taggar, entiteter, platshållare som %s eller {}, tal och länkar har förblivit oförändrade. En version som bryter mot det kan aldrig vinna, hur flytande den än låter.
  3. Bedöma. De övriga versionerna blandas och anonymiseras. Varje granskare ger för var och en ett betyg för Exakthet och för Naturlighet (1 till 10), anger en favorit och kan föreslå en förbättring.
  4. Enas. En versions rang är 0,5 × medelbetyg + 5 × andel favoritröster. Som enighet räknas det om den bästa versionen har minst 60 % av favoritrösterna och ett medelbetyg på minst 7,0.
  5. Andra omgången. Utan enighet går de bästa versionerna tillsammans med granskarnas förbättringsförslag en gång till in i bedömningen.
  6. Människa. Blir det inte entydigt ens då väntar förslaget på ett beslut.

Finns det bara rena översättningstjänster utan granskningsfunktion (till exempel DeepL) räknas ett resultat bara som överenskommet om minst två tjänster har levererat exakt samma text. Vid korrekturläsning måste resultaten förbli märkbart lika originalet (likhet minst 0,6, samma tal). Små kostnadsfria modeller besvarar ibland en hel omgång med förskjutna eller främmande texter. Sådana svar förkastas i stället för att röstas om. En ordlista håller fast varumärkesnamn och fasta begrepp.

Leverantörer: med och utan nyckel

Kostnadsfria och betaltjänster kan sitta i samma omröstning. Modulen levereras med förinställningar för många leverantörer; alla är efter installationen avstängda.

TypÖversätterKontrollerar / korrigerarExempel
OpenAI-kompatibelt gränssnittjajaOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
OpenAI-kompatibelt utan nyckeljajaOllama på den egna servern, Pollinations
AnthropicjajaClaude
Google Gemini, Coherejaja
Lokalt kommandojajaclaude -p eller vilket program som helst som läser från stdin och skriver ut svaret
ÖversättningstjänsterjanejDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Man anger nyckeln (eller namnet på en miljövariabel som innehåller den), trycker på Testa anslutningen och slår på leverantören. Modellnamnen i förinställningarna är utgångspunkter; den som använder dem bör jämföra dem med leverantörens aktuella lista. Med två eller flera leverantörer finns en riktig korskontroll, med bara en granskar ingen dennes arbete. Guiden påpekar det.

En hel webbplats på en gång

En startguide (menyn AI-översättning → Börja här) förklarar stegen och skapar den första regeln. Är modulen website installerad följer bryggmodulen ai_translation_consensus_website automatiskt med. Den kompletterar omfattningen ”En hel webbplats med allt som finns på den”: Man väljer webbplatsen och låter innehållet föreslås. Modulen tittar på alla modeller med översättningsbara fält som hör till webbplatsen (sidor, menyer, bloggar, produkter, evenemang, forum, kurser och mer) och föreslår en regel per innehållstyp, med webbplatsens språk som mål.

Startguide med omfattningen hel webbplats och de föreslagna innehållstyperna

  • Det som inte är installerat (forum, kurser, gallerier) visas inte och tas med senare, så snart det är installerat.
  • Shopmodeller föreslås bara om webbplatsen har en shop. Det är bara publicerade poster som omfattas.
  • Kontakter, företag, betalningsleverantörer, prislistor, leveranssätt, lojalitetsprogram och snippetfilter erbjuder modulen medvetet inte.
  • Sidornas adressnamn (seo_name) översätts inte.
  • Oönskade typer kan tas bort innan de skapas.

Att skapa och att söka kostar ingenting: Regeln listar bara vilka texter som behöver arbete. Först vid bearbetningen anropas leverantörer och kostnader uppstår.

Dashboard, kostnader och automatisk start

Dashboarden visar per regel hur många texter som är klara, väntar på en bekräftelse eller en människa, är köade eller har misslyckats. Dessutom kommer uppdelningen efter språk och leverantör, de hittillsvarande och de ännu väntade kostnaderna, den uppskattade återstående tiden och knappen för den schemalagda bearbetningen.

Dashboard med framsteg, kostnader, tokens och språk. Exempeldata.

Siffrorna i den här bilden är exempeldata och säger ingenting om verkliga kostnader.

  • Kostnader beräknas utifrån det som leverantörerna faktiskt rapporterar: tokens (OpenAI, Anthropic, Gemini, Cohere) eller tecken (DeepL, Google, Azure). Tokens visas alltid, pengar bara om du har angett priset per miljon tokens (eller tecken) hos leverantören. Förinställningarna innehåller inga priser, eftersom de ändras. Tjänster som inte rapporterar tokens uppskattas utifrån textlängden och markeras som uppskattning.
  • Prognos: genomsnittlig kostnad och arbetstid per text gånger antalet köade texter. Det är en uppskattning som blir bättre med de första omgångarna.
  • Automatisk start: Regler med alternativet Starta av sig själv när en post ändras söker vid varje körning av den schemalagda åtgärden bara poster som har ändrats sedan den senaste sökkörningen. Med påslagen schemalagd åtgärd översätts alltså en bearbetad webbplats på nytt utan handpåläggning.
  • Klarmeddelande: När den sista öppna texten i en regel är klar visas en gång meddelandet ”Alla språk översatta” (vid korrekturläsning ”Alla texter granskade”) i kanalen AI Translation.

Godkännande av människor

Som standard skriver modulen ingenting i dina poster utan ditt godkännande. Varje förslag visar versionerna, vem som har skrivit dem, betygen och granskarnas anmärkningar. Du kan godkänna förslaget, välja en annan version, skriva in en egen formulering eller avvisa det.

Förslag med tre kandidater, betyg, favoritröster och beslutet av en människa. Exempeltexten är helt påhittad.

Texten och leverantörsnamnen i den här bilden är helt påhittade för att visa vyn.

Den som litar på en regel kan slå på Godkänn enighet automatiskt. Förslag utan enighet väntar ändå på en människa. Vid godkännandet kontrollerar modulen en gång till om källtexten har ändrats under tiden, kör markup-kontrollerna igen och skriver utan spårning och utan att meddela följare.

Säkerhet och dataskydd

  • Allt är avstängt efter installationen. Leverantörer och schemalagd åtgärd är inaktiverade. Utan din medverkan skickas ingenting.
  • Texter lämnar din server så snart en hostad tjänst är inblandad. En regel kan markeras som Konfidentiell; då ser bara leverantörer som är markerade som körande på egen infrastruktur texten.
  • Nycklar lagras i ett fält som bara administratörer ser, eller i en miljövariabel som bara namnet pekar på. I felmeddelanden maskeras de och de skickas i headers. Undantag: den valfria nyckeln för MyMemory kan där bara överföras som frågeparameter.
  • Lokalt kommando kör ett program och är därför spärrat tills systemparametern ai_translation_consensus.allow_command sätts till True. Kommandot anropas utan shell och körs i en tom temporär katalog.
  • Prompt injection: Uppdragen markerar texten som data. Instruktioner i den översatta texten följs inte, och ett resultat som bryter mot taggar eller platshållare förkastas.
  • Gratistjänster har begränsningar. Pollinations tillåter anonymt ett svar per 45 sekunder. Leverantörsalternativet min_interval håller avståndet, och svar av typen ”Försök igen senare” beaktas.

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

Det som krävs är Odoo 19 och Python-paketet requests. En tysk översättning medföljer. Bryggmodulen ai_translation_consensus_website installeras automatiskt om website finns. Efter installationen måste Odoo-tjänsten startas om, eftersom modulen innehåller Python-kod. Den som driver ett produktionssystem installerar modulen först på en kopia av databasen.

De första stegen: öppna menyn AI-översättning → Leverantörer, testa och slå på tjänsterna, välj sedan Starta här och skapa den första regeln. Med Sök efter texter skapas förslagen, med Bearbeta en omgång anropas leverantörerna. Börja med en liten regel, till exempel ett enskilt blogginlägg och två språk, och titta på resultat och kostnad innan du köar en hel webbplats.

Begränsningar

  • Kvaliteten beror på de modeller du slår på. Korsgranskningen minskar fel hos enskilda modeller men ger ingen garanti. För juridiskt eller säkerhetskritiska texter ersätter modulen inte en person med språket som modersmål.
  • Kostnaderna växer snabbt. En text kostar ett anrop per översättare, ett granskningsanrop per granskare och vid delad omröstning en andra omgång. Sidkontext ökar inmatningen i varje anrop. En regel med 45 målspråk mångfaldigar antalet texter. Begränsa körningarna med Poster per sökning, Nya förslag per sökning och Förslag per cron-körning, och lägg till billiga eller lokala modeller som granskare.
  • Bara fält med translate=True. Formaterad text bearbetas block för block (Odoos term-mekanism).
  • Priser och modellnamn ändras. Förinställningarna är ingen underhållen prislista.
  • Byggd för Odoo 19.0 Community. Andra versioner stöds inte.

Vanliga frågor

Översätts eller skrivs något över utan mitt godkännande?

Nej, så länge du inte slår på Godkänn enighet automatiskt. Inte heller då skrivs något annat än förslag med enighet. Leverantörerna och den schemalagda åtgärden är avstängda efter installationen.

Behöver jag nycklar för betalleverantörer?

Bara för de leverantörer som kräver en. Med Pollinations, MyMemory eller en lokalt driven modell (till exempel Ollama) går det utan. Kostnadsfria tjänster är ofta begränsade och långsamma, och för en hel webbplats lämpar de sig oftast bara som komplement.

Vad kostar en översättning?

Det beror på leverantör, modell, textlängd och antal språk, därför anger modulen inga fasta siffror. Dashboarden visar förbrukning och kostnader så snart du har angett priserna, och uppskattar återstående kostnad för de köade texterna.

Kan jag hålla texter konfidentiella?

Ja, med regelalternativet Konfidentiell. Då arbetar bara leverantörer som är markerade som körande på din egen infrastruktur, till exempel en lokal Ollama.

Ersätter det Odoos egen översättning?

Nej. Modulen använder Odoos flerspråkighet och skriver i samma översättningar som du annars underhåller för hand.

Under vilken licens står den?

Under AGPL-3. Fel och förbättringar är välkomna som issue i GitHub-repositoryt .

Stöd från Biricon IT Services

Vi sköter Odoo-installationer för små och medelstora företag: från införande via anpassningar och migreringar till löpande drift. Om du driver din Odoo-webbplats på flera språk, vill säkra översättningar med AI eller vill få in en modul på ett säkert sätt i din produktionsinstans, hjälper vi gärna till. Fler egenutvecklingar: Arkivera företag inklusive portalanvändare, Dokumentnummer av prefix, år och räknare och Företagsregister och adresskontroll för österrikiska kunder.

Kontakta oss nu

Version per den 3 november 2026. Modulversion 19.0.1.0.0. Bilderna visar påhittade exempeldata.