Dette websted er automatisk oversat til flere sprog med software udviklet af Kohei Koyanagi. Se den originale version på engelsk for størst nøjagtighed.

Hvordan denne blog oversættes til 42 sprog

Splync-bloggen har 42 sprog

Dette er den 23. artikel på min blog for Splync, en fælles budgettracker for par, venner og familier. Du undrer dig måske over, hvordan jeg udgiver hvert indlæg på 42 sprog, selvom jeg er en solo-ingeniør. Som ansvarsfraskrivelsen øverst på hver artikel siger, oversættes denne hjemmeside automatisk til flere sprog ved hjælp af software, jeg selv har bygget. For at være klar: Jeg skriver ikke manuelt en eneste sætning på andre sprog end engelsk. Derfor beder jeg venligt læserne om at henvise til den originale engelske version, når nøjagtigheden af betydningen virkelig betyder noget. Alligevel mener jeg, efter mange runder af forsøg og forbedringer af oversættelsesprocessen, at den samlede oversættelseskvalitet er rimelig god. I denne artikel vil jeg dele, hvad min software gør for at gøre Splync-bloggen flersproget.

Python og OpenAI API gør det sammen

Jeg starter altid med at skrive hver artikel på almindeligt engelsk, inklusive SEO-relateret metadata. Derefter sender mit Python-script den engelske tekst til OpenAI API sammen med en prompt og en lille referencefil. På OpenAI's servere læser ChatGPT-4o forespørgslen og returnerer den oversatte artikel — for eksempel den arabiske version — i JSON-format. Når min MacBook modtager den oversættelse, sender scriptet straks en ny forespørgsel, denne gang efterspørger det bengalsk. Scriptet går automatisk gennem alle 42 målsprog. Ved slutningen af processen har min computer 42 oversatte JSON-filer. Et andet Python-script indlejrer derefter hver oversættelse i en HTML-skabelon og genererer 42 HTML-filer på mindre end et sekund. Alle filerne uploades til serveren, hvor denne blog hostes, og hver sprogversion placeres i sin egen mappe. Endelig opdaterer et server-side Python-script artikelindekset og "Næste indlæg"-linksene, så hver sprogs navigation forbliver konsistent. Med den originale engelske artikel skrevet i almindelig tekst tager hele processen typisk 5 minutter eller mindre. Når jeg har brug for at foretage ændringer, opdaterer jeg flere HTML-filer samtidigt ved hjælp af server-side Python-scripts.

Hvad er API

Hvis du ikke er bekendt med tekniske termer, undrer du dig måske over, hvordan min computer "taler" med OpenAI's server i første omgang. Svaret er noget, der kaldes en API, Application Programming Interface. Du kan tænke på en API som et messenger-vindue mellem to programmer: et program sender en forespørgsel, og det andet sender et svar tilbage. For eksempel sender mit Python-script en besked som "Vær venlig at oversætte denne artikel til tysk." OpenAI modtager den besked gennem API'en, forbereder oversættelsen og sender resultatet tilbage. Det fungerer ligesom at bestille på en restaurant: du fortæller tjeneren, hvad du vil have, køkkenet forbereder det, og tjeneren bringer det tilbage til dit bord. Og hvorfor har du brug for en tjener i første omgang? Fordi du ikke går ind i køkkenet eller taler direkte til kokken — du ved ikke, hvordan køkkenet fungerer, og du har ikke brug for det. Du kan sige til tjeneren: "Kan jeg få en cheeseburger?", og tjeneren kan råbe: "Bestilling! T21, Chihuahua!" i et helt andet format. En API spiller den samme rolle. Den forbinder to forskellige systemer uden at kræve, at de forstår hinandens interne sprog eller arbejdsprocesser.

Hvorfor har jeg brug for OpenAI API

Nu hvor vi har set, hvad en API er, er her hvorfor jeg faktisk stoler på den for denne blog. Praktisk talt ved jeg godt, hvordan jeg "taler" med ChatGPT selv — men jeg har 42 sprog at håndtere. At kalde en tjener 42 gange ville være kedeligt (programmet springer over at oversætte engelsk til engelsk, men konverterer stadig teksten til JSON). Ved at bruge OpenAI API kan mit Python-script sende alle de forespørgsler automatisk, hvilket sparer mig for gentagende arbejde, så jeg kan fokusere på andre ting. Jeg er en solo-udvikler, så jeg skal bruge min tid så effektivt som muligt. Når jeg ser en opgave, der er gentagende og har klare regler, automatiserer jeg den. Resultatet er normalt en proces, der er tusind gange hurtigere og fuldstændig fejlfri. Det er derfor, at automatisering gennem API'en er afgørende — det giver mit script mulighed for at placere alle 42 "bestillinger" øjeblikkeligt og pålideligt.

Hvorfor 42 sprog

Teknisk set kunne jeg tilføje mange flere sprog; det ville blot tage et par minutter mere at køre, mens jeg vasker op. Men jeg kan personligt godt lide tallet 42, svaret på det ultimative spørgsmål om liv, universet og alt fra Douglas Adams' bog. Udover min tilknytning til tallet 42 kan det være risikabelt at tilføje meget små sprog, fordi AI-oversættelsen kan blive mindre pålidelig for sprog med begrænset træningsdata.

Temperatur for ChatGPT 4o

Da jeg først eksperimenterede med denne flersprogede oversættelsesmetode, var resultaterne rimelige, men ikke perfekte. Nogle sætninger blev fejloversat, var for bogstavelige eller subtilt misvisende på visse sprog. Jeg var også bekymret for uforvarende at generere udtryk, der kunne være upassende eller ufølsomme i bestemte kulturelle sammenhænge. Og selvfølgelig ønskede jeg ikke, at mine oversættelser skulle lyde robotagtige eller mekaniske. En af nøglefaktorerne bag oversættelseskvaliteten er temperature-indstillingen — en parameter, der styrer, hvor "kreativ" eller "striks" AI'en skal være. En høj temperatur gør AI'en mere fantasifuld, men også mere uforudsigelig. En lav temperatur gør den tættere på den oprindelige betydning, men kan nogle gange føles stiv. Det krævede mange forsøg at finde den rette balance: lav nok til at sikre nøjagtighed, men ikke så lav, at teksten blev livløs. Efter mange eksperimenter følte jeg, at temperature = 0,8 var den bedste pasform til behovene for denne blog: nøjagtig nok til at være tro mod den engelske original, men fleksibel nok til at lyde naturlig på andre sprog.

ChatGPT 5.x understøtter ikke temperatur

Nyere modeller som ChatGPT 5 og 5.1 understøtter ikke længere temperature-indstillinger overhovedet — parameteren er fjernet og erstattet med begreber som ræsonnering og indsats, der påvirker hvordan modellen tænker fremfor hvor "kreativ" den bliver. Med andre ord gav ChatGPT 4o mig en fysisk knap, jeg kunne dreje for at finjustere oversættelsesstilen, men 5.x-familien følger en helt anden filosofi. Hvis du tilfældigt beder den nyeste model om at "oversætte dette med temperature = 0,8," kan den forsøge at opføre sig, som om en sådan indstilling stadig eksisterer, men internt er parameteren væk. Modellen approximere bare intentionen. Som OpenAI fortsætter med at opdatere deres modeller, kan jeg justere min oversættelsesproces en dag. For nu forbliver ChatGPT 4o mit valg til flersprogede oversættelser — ikke kun fordi den forstår kontekst godt på mange sprog, men også fordi dens API-pris er rimelig for en solo-udvikler som mig. Faktisk kan 4o blive en af de mest elskede modeller i OpenAIs historie.

OpenAI API-arbejdere

En fantastisk ting ved OpenAI API — sammenlignet med at bruge ChatGPT direkte i en browser — er, at du kan bruge mere end én ChatGPT "arbejder" på samme tid. Når jeg sender oversættelsesforespørgsler for 42 sprog, sender jeg dem ikke én efter én i en langsom række. I stedet kan API'en behandle mange forespørgsler parallelt, som om jeg pludselig havde hyret et rum fuld af oversættere, der alle begynder at arbejde på én gang. Mit Python-script håndterer arbejdsprocessen som en lille produktionslinje: det forbereder den engelske artikel, sender forespørgslerne ud, venter på svarene og behandler resultaterne til JSON-filer. Imens kører OpenAI-serverne flere modelinstanser samtidigt, hver oversætter et andet sprog parallelt. Dette er noget, som ChatGPT-webstedet eller appen ikke kan gøre — de interfaces giver dig én model, én samtale, én opgave ad gangen. Men med API'en kan du skalere din arbejdsbyrde så bredt, som dit script tillader. For en solo-udvikler som mig føles det som at have et lille team af de klogeste og mest ego-frie assistenter. Det afhænger delvist af internethastighed, men jeg sætter normalt workers = 12.

Hvad jeg gør for at gøre min blog flersproget er at vaske op

Jeg arbejdede tidligere som opvasker i kantinen, mens jeg studerede matematik på Kyoto Universitet. Selvom betalingen var omkring 5 USD i timen, har jeg altid kunne lide gentagne manuelle opgaver efter at have brugt flere timer — eller nogle gange flere dage — i dyb intellektuel koncentration. Senere, da jeg arbejdede på en hvidløgsfabrik i Hokkaido, var mit job simpelthen at polere tusindvis af hvide hvidløgsfed, så de så lysere ud på transportbåndet. Otte timer om dagen — fuld fokus, støt rytme. Det var underligt tilfredsstillende. Nu, tilbage fra de minder, udfører jeg i øjeblikket intellektuelt arbejde — skriver software, designer systemer, komponerer disse artikler. Men balancen har ikke ændret sig. Hvis du spørger mig, hvordan jeg klarer at udgive en blogartikel på 42 sprog alene, er det ærlige svar: Jeg gør det ved at vaske op.