Sari la conținut
megapromotingHai să discutăm

Expertiză · Acces la modele AI

Un singur punct de intrare către modelele AI, cu chei pe echipă, plafoane și factură locală.

Punem între aplicațiile companiei și furnizorii de modele un singur punct de intrare, compatibil cu interfața OpenAI. De acolo se emit chei separate pe proiect, cu plafon de cheltuială, listă de modele permise și listă de adrese IP, iar consumul se vede pe cheie.

Construit dejaPoarta rulează și se poate verifica din afară azi, fără să ne credeți pe cuvânt: catalogul public de modele răspunde 200 și listează 106 modele marcate active, iar interogarea de modele fără cheie întoarce 401. Sub ea sunt două implementări proprii: serviciul de facturare și administrare (98 de fișiere TypeScript) care emite cheile, sincronizează plafoanele cu poarta și ține registrele, și platforma noastră de asistenți, care își trece în producție recunoașterea vocii și sinteza prin aceeași poartă, nu direct la furnizor. Rezervele, spuse aici și nu la subsol: catalogul se schimbă de la o oră la alta, deci orice cifră se scrie cu data lângă ea; nu există niciun model Anthropic în poartă azi, deși propriul nostru README promite altceva; iar trimiterea automată a facturii în sistemul de stat rămâne în regim de probă până la instalarea certificatului.

Problema apare a doua oară, nu prima. Prima integrare cu un furnizor de modele e simplă: o cheie, o bibliotecă, gata. A cincea aplicație, a treia echipă și a doua factură în valută sunt momentul în care nimeni nu mai poate răspunde la trei întrebări banale — cine consumă, cât, și ce se întâmplă dacă un script scapă de sub control într-o noapte de sâmbătă. Poarta rezolvă exact asta: aplicațiile nu mai vorbesc cu furnizorii, vorbesc cu un singur punct de intrare care are aceeași interfață ca API-ul OpenAI, deci în majoritatea bibliotecilor schimbi adresa de bază și cheia, nu codul.

Ce poți verifica singur, chiar acum, fără cont: catalogul public de modele al porții răspunde și spune ce are înăuntru. La verificarea de azi erau 106 modele, toate marcate active — 77 de modele de text, dintre care 48 declară capacități de raționament, 10 de audio, 7 de imagine, 7 în timp real, 3 de vectorizare și 2 de video. Aceeași verificare făcută de un coleg cu o oră și jumătate mai devreme întorcea 107. De aceea cifra se scrie mereu cu ora lângă ea, iar pe site ar trebui citită din endpoint, nu bătută la mașină.

Controlul costului nu e un tablou de bord, e o piedică. O cheie are plafon de cheltuială, perioadă de plafon la alegere dintre patru, listă de modele permise, listă de adrese IP acceptate — până la douăzeci, IPv4, IPv6 sau blocuri — și un steag de blocare. Când un plafon e depășit, cheia se blochează automat și motivul se scrie pe ea, ca interfața să poată spune de ce, în loc să arate o stare mută. Există și o corecție pe care puțini o fac: modelele care „gândesc” înainte să răspundă consumă la furnizor mai mult decât vede poarta, așa că plafonul brut trimis mai jos se împarte la un factor de raționament calculat ca mediană pe ultimele treizeci de zile ale utilizatorului, limitat între unu și douăzeci. Fără corecția asta, un plafon de cheltuială ar fi decorativ exact pe modelele scumpe.

Partea locală. Cursul valutar se citește din fișierul XML oficial al Băncii Naționale a Moldovei pentru ziua curentă, cu timeout de cinci secunde și o valoare de rezervă din configurație atunci când sursa nu răspunde — o poartă nu are voie să se oprească pentru că un site de curs valutar e indisponibil. Factura fiscală se construiește ca XML și se stochează, cu un ciclu de stări de la ciornă la acceptată sau respinsă. Trimiterea propriu-zisă către sistemul de stat se face cu certificat; cât timp certificatul nu e instalat, serviciul rămâne în regim de probă: XML-ul se generează și se salvează, dar nu pleacă. Asta e starea reală și o scriem, pentru că e diferența dintre „avem factură fiscală” și „avem tot ce trebuie ca să o trimitem”.

Ce cuprinde

Lucrarea, pe componente

Un punct de intrare compatibil cu interfața OpenAI

Aplicațiile păstrează bibliotecile cu care sunt scrise și schimbă adresa de bază și cheia. Poarta cere cheie: interogarea listei de modele fără antet de autorizare întoarce 401, verificat azi din exterior. Verificarea de disponibilitate a serviciului răspunde public, cu antete de securitate puse (`X-Frame-Options: DENY`, politică de conținut care interzice încadrarea).

Chei separate pe proiect, cu plafon și perioadă

Fiecare cheie are alias derivat din utilizator și din numele dat, plafon de cheltuială, perioadă de plafon aleasă dintre o zi, șapte, treizeci sau nouăzeci, listă de modele permise și cheltuială curentă. Cheia se creează prin interfața de administrare a porții și se persistă local, ca cele două să nu se despartă.

Blocare automată la depășire, cu motivul scris pe cheie

Când plafonul e depășit, cheia se blochează și pe ea rămân momentul aplicării, începutul perioadei și motivul. Comentariul din cod spune de ce a fost adăugat: ca interfața să poată arăta de ce e blocată o cheie, în loc de o stare mută pe care nimeni nu o poate explica.

Restricție pe adresă IP, impusă de poartă

Până la douăzeci de intrări per cheie, fiecare IPv4, IPv6 sau bloc CIDR, validate la intrare. Lista nu rămâne doar în baza noastră: se trimite mai departe către poartă, care o aplică efectiv la fiecare cerere.

Corecția pentru modelele care raționează

Modelele care produc pași de gândire înainte de răspuns sunt facturate de furnizor pentru acei pași, dar poarta nu îi vede. Plafonul brut trimis porții se calculează împărțind plafonul clientului la marja aplicată și la un factor de raționament — mediana observată pe ultimele treizeci de zile pentru acel utilizator, cu prag minim unu și limitare la douăzeci. Fără el, un plafon ar fi respectat pe modelele ieftine și depășit exact pe cele scumpe.

Curs valutar din sursa oficială, cu rezervă

Cursul se citește din XML-ul oficial al Băncii Naționale a Moldovei pentru data curentă, cu întrerupere după cinci secunde. Dacă sursa nu răspunde, se folosește valoarea de rezervă din configurație. Conversia nu e o aproximare făcută la birou; e o citire dintr-un document public, cu comportament definit la avarie.

Factură fiscală construită în sistem, cu ciclu de stări

Documentul se generează ca XML dintr-o tranzacție plătită, se stochează și trece prin stări: ciornă, în așteptare de trimitere, trimisă, acceptată sau respinsă. Există declanșare manuală și una programată zilnic pentru utilizatorii care au cod fiscal completat.

Jurnal de audit și export al datelor personale

Jurnalul e doar-adăugare și acoperă 64 de tipuri de evenimente numite — autentificări reușite și eșuate, verificare în doi pași, rotații de parolă, creare, blocare, ștergere de chei, modificare de plafon. Exportul cerut de Regulamentul general privind protecția datelor produce o arhivă cu tabelele legate de un utilizator, JSON pentru date imbricate și CSV pentru cele voluminoase, cu o excepție scrisă în cod: din chei se exportă metadatele, niciodată materialul jetonului.

Poarta e folosită de propriile noastre produse, nu doar oferită

Platforma noastră de asistenți își trece în producție recunoașterea vocii și sinteza prin aceeași poartă, nu direct la furnizor, cu sufixul de versiune impus în cod. Când poarta cade, cădem și noi — ceea ce e singurul aranjament în care merită să o recomandăm altcuiva.

Cum arată

În mijloc, un singur nod: poarta. În stânga, aplicațiile companiei, fiecare cu propria cheie — plafon, perioadă, modele permise, adrese acceptate. În dreapta, furnizorii de modele, care rămân vizibili și numiți, pentru că devin subprocesatori. Sub nodul central, cele două registre care nu se amestecă: consumul pe cheie și jurnalul de audit.

01

Inventariem cine cheamă modele azi și cu ce chei

De obicei ies la iveală chei personale în fișiere de configurare, două conturi de furnizor pe aceeași echipă și cel puțin un serviciu despre care nimeni nu-și amintește că mai rulează. Rezultatul e o listă cu aplicație, cheie, model, volum estimat — punctul de la care se poate discuta despre plafoane.

02

Punem poarta în fața unei singure aplicații, nu a tuturor

Se schimbă adresa de bază și cheia într-un singur loc, se compară răspunsurile cu cele de dinainte și se verifică fluxul de erori: model inexistent, cheie blocată, plafon depășit, furnizor indisponibil. Abia după ce prima aplicație se comportă identic, urmează restul.

03

Emitem cheile pe proiect și le legăm de plafoane reale

O cheie per aplicație și per mediu, cu plafon, perioadă, listă de modele permise și, unde serverele au adrese fixe, listă de IP-uri. Plafonul se calculează cu corecția pentru modelele care raționează, altfel e o cifră care liniștește fără să oprească nimic.

04

Legăm facturarea locală și verificăm ce depinde de certificat

Curs din sursa oficială, factură generată din tranzacția plătită, ciclu de stări. Se verifică explicit dacă certificatul de trimitere e instalat: fără el, documentele se construiesc și rămân în așteptare. E o distincție pe care contabilitatea o descoperă oricum, mai bine în prima săptămână.

05

Predăm cu jurnalul, exportul și procedura de rotire a cheilor

Cine poate crea chei, cine poate ridica un plafon, ce se jurnalizează, cum se cere exportul datelor unui utilizator și ce se face în ziua în care o cheie ajunge unde nu trebuie.

DocumenteConversațiiSurseSintezăAcțiuneEchipăContexteazăSurse autorizate. Acțiuni revizuite.
În mijloc, un singur nod: poarta. În stânga, aplicațiile companiei, fiecare cu propria cheie — plafon, perioadă, modele permise, adrese acceptate. În dreapta, furnizorii de modele, care rămân vizibili și numiți, pentru că devin subprocesatori. Sub nodul central, cele două registre care nu se amestecă: consumul pe cheie și jurnalul de audit.

Datele

Ce atingem, unde stau și cât rămân

Întrebările pe care le pune oricine are un responsabil cu protecția datelor — puse aici înainte să le pună el.

Ce trece prin poartă și ce rămâne
Trec cererile către modele și răspunsurile lor. Rămân la noi evidența de consum pe cheie și pe zi, evenimentele de utilizare și jurnalul de audit. Conținutul conversațiilor se păstrează doar acolo unde produsul care le generează îl păstrează; poarta însăși e un punct de trecere cu contorizare, nu o arhivă de conversații.
Cheile și ce nu se exportă niciodată
Cheia se ține ca amprentă, iar exportul de date personale include metadatele cheilor — alias, plafon, perioadă, listă de modele, stare — și exclude explicit materialul jetonului. Restricția e scrisă ca regulă în cod, cu comentariu, nu lăsată la judecata celui care scrie următorul export.
Furnizorii din spate sunt subprocesatori și se declară
O poartă nu elimină furnizorii, îi ascunde în spatele unei singure adrese. Cine sunt, unde procesează și în ce condiții rămâne o întrebare la care trebuie răspuns în scris; există pagini publice dedicate pentru subprocesatori, acordul de prelucrare și protecția datelor, iar toate trei răspund azi.
Jurnalul de audit
Doar-adăugare, cu 64 de tipuri de evenimente numite, legate de identitate, chei și plafoane. E singura sursă care poate răspunde retroactiv la „cine a schimbat plafonul cheii acesteia și când”.
Ce nu putem arăta
Nu publicăm nicio cifră de disponibilitate. Sursa pe care documentele proprii o citează ca metodă de calcul nu răspunde la verificarea de azi, iar în cod nu există colector de disponibilitate. Până când există măsurătoare, orice procent ar fi un angajament, nu o observație — și noi facem diferența între cele două.

Un caz

O cheie pe proiect, un plafon care chiar oprește

Situația

Situația obișnuită într-o companie care a trecut de prima integrare: mai multe aplicații cheamă modele cu chei împrumutate, consumul apare într-o singură factură în valută, și nimeni nu poate spune care aplicație a produs vârful de săptămâna trecută.

Ce am construit

Am pus poarta în fața aplicațiilor, cu interfața compatibilă cu biblioteca pe care o foloseau deja, și am emis chei separate pe proiect. Fiecare cheie a primit plafon, perioadă de plafon, listă de modele permise și, unde serverele aveau adrese fixe, listă de IP-uri impusă de poartă. Plafonul brut trimis mai jos se calculează cu corecția pentru modelele care raționează: se împarte la marja aplicată și la factorul median al utilizatorului pe ultimele treizeci de zile, limitat între unu și douăzeci.

Ce a ieșit

Consumul se citește pe cheie, deci pe aplicație. La depășire, cheia se blochează singură și motivul rămâne scris pe ea, așa că întrebarea „de ce nu mai merge” are răspuns fără să deschidă cineva jurnalele. Facturarea în lei se face după cursul oficial citit din XML-ul zilei. Din exterior se poate verifica oricând că poarta cere cheie: lista de modele fără autorizare întoarce 401.

Ce nu spune cazul

Un punct unic de intrare este și un punct unic de cădere — se proiectează de la început ce fac aplicațiile când poarta nu răspunde. Catalogul de modele se schimbă de la o oră la alta, deci orice listă tipărită îmbătrânește; în ziua verificării nu exista niciun model Anthropic, deși documentația noastră mai veche îl promitea. Iar trimiterea automată a facturii către sistemul de stat depinde de un certificat instalat pe server: fără el, documentele se construiesc și așteaptă.

Întrebări

Ce ne întreabă oamenii înainte să sune

Ce modele sunt disponibile prin poartă chiar acum?

La verificarea de azi, 106, toate marcate active: 77 de text (48 dintre ele declară raționament), 10 de audio, 7 de imagine, 7 în timp real, 3 de vectorizare și 2 de video. Catalogul e public și se poate citi fără cont. Spunem „la verificarea de azi” pentru că un coleg a măsurat 107 cu o oră și jumătate mai devreme, în aceeași zi. Un număr fără oră lângă el nu înseamnă nimic.

Există modele Anthropic Claude prin poartă?

Nu, niciunul. Am filtrat catalogul live după toate denumirile din familia respectivă: zero rezultate. Spunem asta deși propriul nostru README promite altceva — documentul e vechi, poarta e adevărul. Modelele Gemini, în schimb, sunt prezente, la fel și sinteza vocală a unui furnizor specializat și modelele de video.

Trebuie să-mi rescriu aplicațiile?

În cazul obișnuit, nu: poarta expune interfața compatibilă OpenAI, deci se schimbă adresa de bază și cheia. Cazurile care cer atenție sunt cele care folosesc particularități ale unui furnizor anume — noi am întâlnit deja unul, unde biblioteca specifică Azure construia adrese pe care poarta nu le înțelegea, și s-a rezolvat trecând la clientul standard. De asta prima aplicație se mută singură, nu toate odată.

Cum mă opresc dintr-o factură scăpată de sub control?

Cu plafon pe cheie și perioadă de plafon, plus blocare automată la depășire, cu motivul scris pe cheie. În plus, plafonul ține cont de faptul că modelele care raționează costă la furnizor mai mult decât vede poarta: plafonul brut se împarte la un factor calculat ca mediană pe ultimele treizeci de zile ale utilizatorului. Fără corecția asta, plafoanele funcționează pe modelele ieftine și cedează pe cele scumpe.

Ce garanție de disponibilitate oferiți?

Niciuna exprimată în cifre, și e o poziție deliberată. Nu avem colector de disponibilitate în cod, iar sursa pe care propriile noastre materiale o citează ca metodă de calcul nu răspunde la verificarea de azi. Ce se poate arăta acum: verificarea de viață a serviciului răspunde public, iar pagina de stare face sonde live, fără istoric. Un procent l-am putea scrie oricând; ar fi un angajament contractual deghizat în măsurătoare.

Pot factura consumul în lei, cu factură fiscală?

Conversia din valută se face după cursul oficial al Băncii Naționale, citit din XML-ul zilei, cu întrerupere după cinci secunde și valoare de rezervă la indisponibilitate. Factura se construiește ca document fiscal și trece printr-un ciclu de stări. Trimiterea automată către sistemul de stat cere un certificat: cât timp nu e instalat, documentele se generează și rămân în așteptare, fără să plece. Verificăm împreună în ce regim e sistemul în ziua în care începem, pentru că e o setare de server, nu una de cod.

Ce vedeți voi din traficul meu?

Metadate de consum: cheia, modelul, volumul, costul, momentul. Poarta contorizează, nu arhivează conversații; ce se păstrează din conținut e decizia aplicației care îl generează, iar dacă aplicația e a noastră, se scrie în contract. Exportul de date personale al unei persoane produce o arhivă cu ce e legat de ea, iar din chei exportă metadatele, niciodată materialul jetonului.

Cine sunt furnizorii din spate?

Se declară în scris, cu nume, pentru că devin subprocesatori pentru datele care trec prin ei. Există pagini publice pentru subprocesatori, acordul de prelucrare și protecția datelor, verificate azi. O poartă care ascunde furnizorii de operatorul de date nu rezolvă o problemă de conformitate, o mută mai adânc.

Ce se întâmplă dacă poarta cade?

Cad aplicațiile care depind de ea, inclusiv ale noastre — platforma noastră de asistenți își trece recunoașterea vocii și sinteza prin aceeași poartă. Nu are rost să pretindem altceva: e compromisul unui punct unic de intrare, plătit în schimbul controlului, al cheilor separate și al unei singure facturi. Pentru aplicații critice se discută de la început ce se întâmplă în lipsa ei — răspuns degradat, coadă sau eroare curată — pentru că ăsta e un comportament de proiectat, nu de sperat.

Pe ce se sprijină fiecare afirmație de mai sus (14 surse)
  1. Catalogul public al porții: 106 modele, toate active, la 2026-09-06T13:31:49Zhttps://longday.io/api/public/models · 2026-09-06
  2. Zero modele Anthropic în poartă, contrar propriului READMEhttps://longday.io/api/public/models · 2026-09-06
  3. Poarta cere cheie; verificarea de viață răspunde public, cu antete de securitatehttps://api.megapromoting.com/health/liveliness (200) și /v1/models fără antet (401) · 2026-09-06
  4. NU SE PUBLICĂ nicio cifră de disponibilitate; sursa citată de propriile materiale nu răspundehttps://status.longday.io/ · 2026-09-06
  5. Cheile au plafon, perioadă, listă de modele, listă de IP-uri, stare de blocare și motivkey.service.ts:26-43 (interfața ApiKey, inclusiv last_enforced_at, enforcement_period_start, enforcement_reason), 61-70 (crearea cheii și forma aliasului)
  6. Perioada de plafon se alege dintre patru valori; lista de IP-uri admite până la 20 de intrări IPv4/IPv6/CIDR și e impusă de poartăkeys.routes.ts:37 (enum 1d/7d/30d/90d), 39 (validarea IP-urilor, max 20, fiecare max 64 de caractere), 303-304 (lista se trimite mai departe către poartă, cu comentariul „LiteLLM /key/update supports allowed_ips — push it so the gateway enforces”)
  7. Corecția pentru modelele care raționează: mediană pe 30 de zile, prag 1, limitare la 20litellm-budget-sync.service.ts:14-23 (computeLitellmBudget; `Math.max(1.0, Math.min(factor, 20.0))` la 21)
  8. Curs BNM din XML-ul zilei, timeout 5 secunde, valoare de rezervă din configurațiebnm.service.ts:18-29 (URL cu data în format zi.lună.an, `AbortSignal.timeout(5000)`, rezerva din variabilă de mediu)
  9. Factura fiscală: XML generat și stocat, ciclu de stări, trimitere doar cu certificat instalatpush.service.ts:1-23 (ciclul ciornă → în așteptare → trimisă → acceptată/respinsă; declanșare manuală și cron zilnic; regimul de probă când calea certificatului nu e setată)
  10. Jurnal de audit doar-adăugare, 64 de tipuri de evenimente numiteaudit.service.ts:1 (doar-adăugare), 6-82 (tipul AuditAction, 64 de valori)
  11. Export de date personale conform Regulamentului general, cu metadate de cheie și fără materialul jetonuluiexport-data.service.ts:1-6 (Art. 15 și Art. 20, arhivă ZIP, JSON pentru date imbricate și CSV pentru volume mari), 78 (excluderea explicită a materialului jetonului din chei)
  12. Paginile publice de conformitate răspundhttps://longday.io/ro/legal/sub-processors, /ro/dpa, /ro/gdpr, /ro/cum-gestionezi-cheile · 2026-09-06
  13. Poarta e consumată în producție de propriul nostru produs de asistențiwhisper.py:17-29 (comentariul „ZERO Azure direct. All calls go through https://api.megapromoting.com/v1” și impunerea sufixului /v1)
  14. Serviciul de facturare și administrare are 98 de fișiere TypeScript:numărare de fișiere .ts

Citările interne arată numele fișierului și linia. Calea completă rămâne în depozitul nostru; o putem parcurge împreună, la cerere.

Ce ai vrea să funcționeze mai bine?

Povestește-ne despre procesul tău. Împreună stabilim ce merită construit, ce putem conecta și cum verificăm rezultatul.

Hai să discutăm