Blogul Splync are 42 de limbi
Acesta este al 23-lea articol de pe blogul meu pentru Splync, un tracker de buget comun pentru cupluri, prieteni și familii. Poate te întrebi cum public fiecare postare în 42 de limbi, deși sunt un inginer solo. Așa cum menționează disclaimerul din partea de sus a fiecărui articol, acest site este tradus automat în mai multe limbi folosind un software creat de mine. Pentru a fi clar: nu scriu manual nici măcar o propoziție în altă limbă decât engleza. Din acest motiv, rog cititorii să consulte versiunea originală în engleză atunci când acuratețea sensului contează cu adevărat. Totuși, după multe runde de încercare și eroare pentru a îmbunătăți fluxul de traducere, cred că calitatea generală a traducerii este destul de bună. În acest articol, voi împărtăși ce face software-ul meu pentru a transforma blogul Splync în unul multilingv.
Python și OpenAI API lucrează împreună
Întotdeauna încep prin a scrie fiecare articol în engleză simplă, inclusiv metadatele legate de SEO. După aceea, scriptul meu Python trimite textul în engleză către OpenAI API, împreună cu un prompt și un mic fișier de referință. Pe serverele OpenAI, ChatGPT-4o citește cererea și returnează articolul tradus — de exemplu, versiunea în arabă — în format JSON. Odată ce MacBook-ul meu primește acea traducere, scriptul trimite imediat o altă cerere, de data aceasta pentru bengaleză. Scriptul parcurge automat toate cele 42 de limbi țintă. La finalul procesului, computerul meu are 42 de fișiere JSON traduse. Un alt script Python integrează apoi fiecare traducere într-un șablon HTML și generează 42 de fișiere HTML în mai puțin de o secundă. Toate fișierele sunt încărcate pe serverul unde este găzduit acest blog, iar fiecare versiune în limba respectivă este plasată în propriul dosar. În final, un script server-side Python actualizează indexul articolelor și linkurile „Următorul post” astfel încât navigarea să rămână consistentă în toate limbile. Cu articolul original în engleză scris în text simplu, întregul proces durează de obicei 5 minute sau chiar mai puțin. Când trebuie să fac modificări, actualizez simultan mai multe fișiere HTML folosind scripturi Python server-side.
Ce este API
Dacă nu ești familiarizat cu termenii tehnici, te-ai putea întreba cum „vorbește” computerul meu cu serverul OpenAI. Răspunsul este ceva numit API, Interfață de Programare a Aplicațiilor. Poți să te gândești la un API ca la o fereastră de mesagerie între două programe: un program trimite o cerere, iar celălalt trimite un răspuns înapoi. De exemplu, scriptul meu Python trimite un mesaj de genul „Vă rog să traduceți acest articol în germană.” OpenAI primește mesajul prin API, pregătește traducerea și trimite rezultatul înapoi. Funcționează exact ca atunci când dai o comandă la un restaurant: îi spui chelnerului ce vrei, bucătăria pregătește și chelnerul îți aduce la masă. Și de ce ai nevoie de un chelner? Pentru că nu intri în bucătărie să vorbești direct cu bucătarul — nu știi cum funcționează bucătăria și nici nu trebuie. Poți spune „Pot să primesc un cheeseburger?” chelnerului, iar el poate striga „Comandă! T21, Chihuahua!” într-un format complet diferit. Un API are același rol. Conectează două sisteme diferite fără a le cere să înțeleagă limbajul sau fluxul de lucru intern al celuilalt.
De ce am nevoie de OpenAI API
Acum că am văzut ce este un API, iată de ce mă bazez pe el pentru acest blog. Practic, știu să „vorbesc” cu ChatGPT singur — dar am 42 de limbi de procesat. Să chemi un chelner de 42 de ori ar fi obositor (programul sare peste traducerea din engleză în engleză, dar converteste textul în JSON). Utilizarea OpenAI API permite scriptului meu Python să trimită toate acele cereri automat, economisindu-mi munca repetitivă, astfel încât să mă pot concentra pe alte lucruri. Sunt un dezvoltator solo, așa că trebuie să-mi folosesc timpul cât mai eficient posibil. Ori de câte ori văd o sarcină repetitivă și cu reguli clare, o automatizez. Rezultatul este de obicei un proces de un milion de ori mai rapid și complet lipsit de erori. De aceea, automatizarea prin API este esențială — permite scriptului meu să plaseze toate cele 42 de „comenzi” instantaneu și fiabil.
De ce 42 de limbi
Tehnic vorbind, aș putea adăuga multe alte limbi; ar dura doar câteva minute în plus să ruleze în timp ce spăl vasele. Dar personal îmi place numărul 42, „Răspunsul la întrebarea supremă despre viață, univers și tot ce există” din cartea lui Douglas Adams. Dincolo de atașamentul meu față de numărul 42, adăugarea unor limbi foarte minore poate fi riscantă, deoarece traducerea AI poate deveni mai puțin fiabilă pentru limbile cu date de instruire limitate.
Temperatura ChatGPT 4o
Când am experimentat pentru prima dată cu această abordare de traducere multilingvă, rezultatele erau decente, dar nu perfecte. Unele propoziții erau traduse greșit, prea literal sau subtil înșelătoare în anumite limbi. Eram de asemenea îngrijorat că aș putea crea fără să vreau expresii nepotrivite sau insensibile în anumite contexte culturale. Și, bineînțeles, nu voiam ca traducerile mele să sune robotic sau mecanic. Unul dintre factorii cheie din spatele calității traducerii este setarea de temperatură — un parametru care controlează cât de „creativ” sau „strict” ar trebui să fie AI-ul. O temperatură ridicată face AI-ul mai imaginativ, dar și mai imprevizibil. O temperatură scăzută îl face să rămână aproape de sensul original, dar uneori poate părea rigid. A durat multe încercări și erori pentru a găsi echilibrul potrivit: suficient de scăzută pentru a asigura acuratețea, dar nu atât de scăzută încât textul să devină lipsit de viață. După multe experimente, am simțit că temperatura = 0.8 era cea mai potrivită pentru nevoile acestui blog: suficient de precisă pentru a rămâne fidelă originalului în engleză, dar suficient de flexibilă pentru a suna natural în alte limbi.
ChatGPT 5.x nu suportă temperatura
Modele mai noi, cum ar fi ChatGPT 5 și 5.1, nu mai suportă setările de temperatură deloc — parametru a fost eliminat și înlocuit de concepte precum raționament și efort, care influențează modul în care gândeste modelul, mai degrabă decât cât de „creativ” devine. Cu alte cuvinte, ChatGPT 4o mi-a oferit un buton fizic pe care îl puteam întoarce pentru a regla stilul traducerii, dar familia 5.x urmează o filozofie complet diferită. Dacă ceri noului model să „traducă asta cu temperatura = 0.8”, s-ar putea să încerce să se comporte ca și cum un astfel de setare ar mai exista, dar intern parametru a dispărut. Modelul doar aproximează intenția. Pe măsură ce OpenAI continuă să își actualizeze modelele, s-ar putea să ajustez într-o zi fluxul meu de traducere. Deocamdată, ChatGPT 4o rămâne alegerea mea pentru traduceri multilingve — nu doar pentru că înțelege bine contextul în multe limbi, ci și pentru că prețul API-ului său este rezonabil pentru un dezvoltator solo ca mine. De fapt, 4o ar putea rămâne în istorie ca unul dintre cele mai iubite modele din istoria OpenAI.
Lucrătorii OpenAI API
Un lucru uimitor despre OpenAI API — comparativ cu utilizarea directă a ChatGPT într-un browser — este că poți folosi mai mult de un „lucrător” ChatGPT în același timp. Când trimit cereri de traducere pentru 42 de limbi, nu le trimit unul câte unul într-o linie lentă. În schimb, API-ul poate procesa multe cereri în paralel, ca și cum aș fi angajat brusc o sală plină de traducători care încep să lucreze în același timp. Scriptul meu Python gestionează fluxul de lucru ca o mică linie de producție: pregătește articolul în engleză, trimite cererile, așteaptă răspunsurile și procesează rezultatele în fișiere JSON. Între timp, serverele OpenAI rulează multiple instanțe ale modelului simultan, fiecare traducând o limbă diferită în paralel. Acest lucru este ceva ce site-ul sau aplicația ChatGPT nu poate face — acele interfețe îți oferă un model, o conversație, o sarcină la un moment dat. Dar cu API-ul, poți scala sarcina de lucru cât de larg îți permite scriptul. Pentru un dezvoltator solo ca mine, asta se simte ca și cum aș avea o echipă mică de asistenți cei mai inteligenți și fără ego. Depinde parțial de viteza internetului, dar de obicei setez workers = 12.
Ce fac pentru a multilingviza blogul meu este să spăl vase
Am lucrat ca spălător de vase în cantina studențească pe vremea când studiam matematica la Universitatea Kyoto. Deși plata era de aproximativ 5 USD pe oră, mereu mi-a plăcut munca manuală repetitivă după ce petreceam câteva ore — sau uneori câteva zile — în concentrare intelectuală profundă. Mai târziu, când am lucrat la o fabrică de usturoi din Hokkaido, sarcina mea era pur și simplu să lustruiesc mii de bulbi de usturoi alb pentru a arăta mai strălucitori pe banda transportoare. Opt ore pe zi — concentrare totală, ritm constant. Era ciudat de satisfăcător. Acum, revenind din acele amintiri, mă ocup de muncă intelectuală — scriu software, proiectez sisteme, compun aceste articole. Dar echilibrul nu s-a schimbat. Dacă mă întrebi cum reușesc să public un articol de blog în 42 de limbi de unul singur, răspunsul sincer este: o fac spălând vase.