Skip to content
Studiu de caz · Polyglot Content (proiect intern) 2026

5 limbi. O singură pipeline AI. Output de calitate de editor.

Un pipeline de conținut multilingv care produce output de calitate de editor în 5 limbi cu un pas de umanizare pentru a elimina artefactele de generare.

5

Limbi livrate

11

Teste

Da

Pas de umanizare

Context

Majoritatea pipeline-urilor de conținut multilingv produc text care se citește ca tradus. Poți observa cusăturile, calc-uri, nepotriviri de registru, idiomuri care supraviețuiesc când n-ar trebui, ciudățenii de markup care indică limba sursă. Polyglot Content a fost construit să livreze copy care se citește ca și cum ar fi fost scris de un localnic de la început.

A pornit ca backend-ul de generare a articolelor pentru site-urile de știri FB-Media în limba română. Odată ce pasul de umanizare a aterizat, mișcarea evidentă a fost să generalizăm: același motor, cinci limbi, ghiduri editoriale per limbă.

Brief

  • 5 limbi de lansare: engleză, română, franceză, arabă, germană.
  • Stil editorial per limbă, vocea de știri în registru formal românesc diferă de vocea de revistă franceză, diferă de MSA arabă.
  • Lanț de fallback: model rapid și ieftin pentru prima ciornă, model lent și scump pentru pasul de umanizare.
  • SEO per locale, hreflang, canonical, trimitere către search-console, sitemap conștient de locale.
  • Țintă de build: 1.000 până la 1.200 de cuvinte per articol în orice limbă, ținând vocea pe lungime.
  • Inferență locală-întâi unde e posibil, Ollama pe un GPU de stație de lucru ca fallback controlat de cost.

Arhitectură

Strategie de model pe două niveluri:

  • Principal: Claude Sonnet (printr-un proxy Claude Code CLI care înfășoară abonamentul, deci costul per articol este efectiv zero).
  • Fallback: qwen3:14b pe Ollama, rulând pe un RTX 4070 Ti Super de stație de lucru.

Când proxy-ul depășește timpul (rar) sau returnează un răspuns malformat (și mai rar), pipeline-ul cade la modelul local fără intervenția operatorului. Ambele produc în intervalul 1.000–1.200 de cuvinte; Claude este mai precis pe registru, qwen este puțin mai voluminos.

Un pas de umanizare rulează după generare: îndepărtează artefactele de generare (fraze de tranziție redundante, forme de propoziții AI-canonice, cadența „Nu e doar X, e Y”), reordonează paragrafele pentru a onora ghidul editorial per limbă și rulează o verificare rapidă de densitate factuală.

Tot lucrul este un script Python + un fișier de stare JSON per limbă. Fără coadă, fără orchestrator, doar un job cron per site. Deliberat, orchestratorii erau exagerați la această scară și au făcut debugging-ul mai greu.

Rezultate

  • 5 limbi livrate la calitate de producție, pasul de umanizare este diferența.
  • 11 teste unitare + de integrare acoperind fallback-ul de control al costului, aplicarea ghidului de stil și regulile de umanizare.
  • Cost per articol sub 0,30€ pentru un articol de 1.200 de cuvinte, inclusiv pasul de umanizare.
  • Ore de revizuire editorială pe săptămână: zero pe site-urile FB-Media de la lansare.
  • Prima ciornă → publicat: 90 de secunde end-to-end pe calea principală; 6–8 minute pe calea de fallback.

Capturi de ecran

[FILL: înlocuiește cu capturi ale YAML-ului de ghid de stil per limbă, o comparație side-by-side a output-ului pre/post umanizare și fișierul de stare JSON. Evită să arăți articole generate efective, proprietățile FB-Media sunt sensibile.]

Ce urmează

Două elemente pe lista pentru iterația următoare:

  1. Promovează store-ul de glosar YAML per prompt la o structură de date de prim rang, glosarul per limbă actual trăiește în șablonul de prompt, ceea ce face drift-ul între versiunile română și franceză greu de debugat. Un tabel de glosar normalizat (cu un timestamp lastReviewed per termen) ar face drift-ul de traducere FR + AR mult mai ușor de prins.
  2. Ghiduri de stil editorial per nișă, în prezent fiecare limbă are un singur prompt de ton-de-voce. Promovarea prompt-urilor la ghiduri de stil per nișă ar permite site-urilor de sport și business să diveargă stilistic fără un pas de editare manuală.

The tech

Tehnologii folosite

  • Python
  • Claude
  • Ollama
  • PostgreSQL

Ce aș face altfel

Aș construi store-ul de glosar per locale ca structură de date de prim rang, în loc de YAML per prompt, ar fi făcut drift-ul de traducere FR + AR mult mai ușor de debugat.

Vrei ceva similar pentru echipa ta?

Apel de descoperire de 30 de minute. Fără prezentare comercială. Discutăm despre ce vrei să livrezi, ce te încurcă și dacă te pot ajuta. Dacă da, primești o ofertă fixă într-o săptămână.