CAI Technology
Menu ☰
bid365 · · 14 min citire

Engine deviz HG907 fără LLM: precizie determinist-legală

De ce engine-ul nostru pentru devize HG907 nu folosește LLM deloc — precizie Decimal, ROUND_HALF_UP și 14 reguli de validare pentru audit-pass garantat.

CAI Technology · Ultima revizuire: 30.04.2026
Engine deviz HG907 fără LLM: precizie determinist-legală

De ce engine-ul de devize HG907 nu folosește deloc LLM (și asta e feature)

Trei consultanți de achiziții ne-au întrebat aceeași întrebare în prima săptămână de demo Bid365: „Ce model AI rulează în spate pentru devize?” Răspunsul i-a surprins: niciunul. Engine-ul de devize din Bid365 este integral algoritmic, fără un singur token generat de un model lingvistic. În acest articol explicăm de ce această decizie nu este un compromis tehnic, ci o cerință legală.

TL;DR

Ce este un deviz HG907 și de ce contează precizia

HG 907/2016 este actul normativ care stabilește cum se calculează devizul general pentru lucrările de investiții publice în România. Documentul are zeci de articole care prescriu exact cum se grupează cheltuielile, cum se aplică cota de cheltuieli indirecte, cum se calculează profitul, cum se aplică TVA-ul.

Pentru un ofertant care răspunde la o licitație publică, devizul nu este un calcul aproximativ. Este un obiect legal: dacă valoarea totală nu se reconstituie din componente conform regulilor HG907, oferta poate fi respinsă pentru neconformitate. „Aproximativ” este o categorie inexistentă. „Aproximativ corect” este, în drept, „greșit”.

Această cerință elimină din start orice abordare bazată pe un model generativ. Nu există prompt suficient de strict ca un LLM să garanteze că 12.547,32 + 8.213,41 + 1.502,84 = 22.263,57 la fiecare apelare, pe miliarde de combinații posibile. Modelele lingvistice fac aritmetică prin aproximare statistică; chiar și modelele cu „chain of thought” și calculator extern introduc variabilitate la nivelul deciziilor de routing.

Anatomia unui deviz HG907 din perspectiva engine-ului

Engine-ul Bid365 modelează devizul ca o ierarhie de patru niveluri tabelare numite T1, T2, T3, T4. Fiecare nivel adaugă o componentă specifică peste suma nivelului anterior.

T1 — Costul direct. Suma celor trei capitole de bază: manoperă, materiale, utilaje. Datele de intrare sunt liste de articole cu cantitate și preț unitar.

T1 = Σ(cantitate_i × preț_unitar_i) pentru manoperă
   + Σ(cantitate_j × preț_unitar_j) pentru materiale
   + Σ(cantitate_k × preț_unitar_k) pentru utilaje

T2 — T1 plus cheltuieli indirecte. Cheltuielile indirecte se aplică ca procent peste T1, conform politicii ofertantului declarată în formular.

T2 = T1 × (1 + cota_indirecte)

T3 — T2 plus profit. Profitul se aplică ca procent peste T2, nu peste T1, conform regulii ANAP.

T3 = T2 × (1 + cota_profit)

T4 — T3 plus asigurări obligatorii. În anumite categorii de lucrări se adaugă o componentă de cheltuieli pentru asigurări legate de execuție.

T4 = T3 + asigurări_obligatorii

Total deviz cu TVA = T4 × (1 + cota_TVA), unde cota TVA depinde de categoria lucrării.

Această ierarhie pare trivială în prezentare. Complexitatea apare când o aplici pe un deviz real cu 800 de articole, fiecare cu cantitate fracționară, preț unitar la patru zecimale, cu rotunjiri intermediare la fiecare subtotal de capitol.

De ce contează rotunjirea ROUND_HALF_UP

Standardul implicit de rotunjire în floating point IEEE 754 este „bankers’ rounding” (ROUND_HALF_EVEN): la jumătate exact, rotunjește spre numărul par cel mai apropiat. Această regulă este corectă statistic — nu introduce bias pe seturi mari de calcule.

Pentru un deviz HG907, ROUND_HALF_EVEN este greșit. ANAP cere rotunjirea aritmetică standard (ROUND_HALF_UP): 0,5 se rotunjește mereu în sus. Dacă engine-ul folosește ROUND_HALF_EVEN, vor apărea diferențe sistematice de câțiva bani pe fiecare subtotal față de calculul referință al comisiei.

Diferența de un ban pe un subtotal nu pare gravă; pe un deviz cu 800 de articole, după agregarea pe capitole și aplicarea procentelor, devine o diferență de zeci de lei pe T4. Este suficient pentru ca verificatorul comisiei, care reconstituie totalul cu aritmetică standard, să raporteze „neconformitate matematică”.

Engine-ul Bid365 folosește aritmetică zecimală pură (tip Decimal cu precizie controlată), nu floating point. Toate rotunjirile sunt explicite, ROUND_HALF_UP, la pasul prescris de HG907 (de regulă 2 zecimale pentru valori monetare, 4 zecimale pentru cantități). Această decizie a fost luată în fază 1 a proiectului și nu a fost niciodată renegociată.

Cele 14 reguli de validare

Calculul corect este condiție necesară, nu suficientă. Un deviz poate fi aritmetic perfect și complet inacceptabil pentru ANAP dacă ratează regulile structurale. Engine-ul Bid365 aplică 14 reguli de validare după calcul, pe care le-am extras lucrând cu trei comisii de evaluare de la trei autorități contractante diferite. Nu publicăm lista completă (este IP de produs), dar exemplificăm câteva categorii:

Fiecare regulă produce un mesaj de eroare textual cu trimitere la articolul HG907 sau ANAP relevant. Ofertantul vede exact ce trebuie corectat și de ce. Această trasabilitate este importantă: în cazul unui contestat, ofertantul are dovada că engine-ul a aplicat regulile cu trimitere normativă.

De ce un LLM nu poate face asta

Există o tentație evidentă pentru oricine construiește software de procurement: „Hai să folosim un LLM să genereze devizul din specificația textuală a lucrării.” Pe demo arată spectaculos. În producție eșuează din trei cauze structurale.

Variabilitatea. Același prompt cu aceleași date va produce, peste un milion de invocări, un număr semnificativ de ieșiri ușor diferite. Pentru un ofertant care depune oferta unică pe data X, este acceptabil. Pentru un sistem care trebuie să reproducă același deviz când comisia recalculează la verificare, este catastrofal.

Aritmetica. Modelele lingvistice nu sunt calculatoare. Pot părea că sunt, pe exemple simple. Pe 800 de articole cu rotunjiri lănțuite și aplicări de procente compuse, vor face erori. Folosirea unui tool extern de calcul (function calling) reduce dar nu elimină problema, pentru că modelul decide când și cum să cheme tool-ul.

Auditabilitatea. Un deviz respins în comisie trebuie reconstituit. Ofertantul trebuie să poată arăta, pas cu pas: aceste articole, înmulțite cu aceste cantități, însumate, cu această cotă, dau acest T1; T1 înmulțit cu această cotă dă T2 și așa mai departe. Un LLM produce o ieșire opacă: nu există un „lanț de calcul” verificabil în afara textului generat. Engine-ul algoritmic produce un audit trail explicit.

Unde folosim LLM în Bid365 (și unde nu)

Distincția importantă: respingem LLM-ul pentru calcul, dar îl folosim deliberat pentru sarcini lingvistice.

LLM-ul rulează pentru:

LLM-ul nu rulează niciodată pentru:

Linia este clară pentru noi: limbajul este responsabilitatea LLM-ului, aritmetica și legalitatea sunt responsabilitatea engine-ului determinist. Ofertantul citește ieșirea finală ca pe un singur document, dar arhitectura subiacentă păstrează fiecare componentă în zona ei de competență.

Ce înseamnă asta pentru un ofertant care evaluează software-ul

Trei întrebări pe care le recomandăm înainte de orice achiziție de software de devize:

  1. „Reproduce exact același rezultat la fiecare apelare?” Cereți să rulați aceeași intrare de două ori și să comparați ieșirile la nivel binar, nu doar vizual. Orice diferență este un semnal de alarmă.

  2. „Folosiți Decimal sau floating point?” Floating point pentru valori monetare în deviz este o problemă latentă care apare la verificare. Decimal cu rotunjire explicită este standardul.

  3. „Aveți audit trail per regulă?” La o respingere în comisie, ofertantul are nevoie să vadă exact care regulă a fost aplicată și ce normă a folosit. Un mesaj de eroare generic („deviz invalid”) nu este suficient pentru contestație.

Concluzie operațională

Pentru calcule legal-deterministe, engine-ul determinist nu este un fallback conservator pentru clienți care nu „înțeleg AI”. Este alegerea corectă, susținută de însăși natura sarcinii. AI-ul are loc în Bid365 — la generare lingvistică, traducere, asistență de redactare. Nu are loc în calculul matematic care trebuie să se reconstituie identic la audit.

Această disciplină arhitecturală este dificilă în public față de un competitor care promite „AI peste tot”. În producție însă, ofertanții care au pierdut o licitație din cauza unei erori de un ban pe T4 înțeleg imediat de ce.

Articole conexe

Surse externe

Următorul pas

Dacă echipa dumneavoastră lucrează pe oferte de procurement public și vreți o evaluare tehnică a engine-ului Bid365 pe un deviz real, vă oferim o consultație tehnică de 30 de minute fără cost.

Începem cu o conversație de 30 de minute.

Audit AI-readiness gratuit pentru companii peste 50 angajați. Răspundem în 24 de ore.