← Natrag
Tehnologija

Inženjerska disciplina u AI eri: zašto je AI complete najopasnija fraza

RiNET Engineering· 16. lipnja 2026.· 7 min čitanja· 20 pregleda
Inženjerska disciplina u AI eri: zašto je AI complete najopasnija fraza
🎧 Poslušaj članak

Kada čujem pojam AI complete u kontekstu softverskog inženjerstva, ne pomišljam na napredak, već na sistemski rizik koji se maskira u inovaciju. U RiNET-u smo izabrali da tu frazu tretiramo kao alarm, ne kao oznaku zrelosti. Problem nije u samim modelima jezika, već u načinu na koji ih integriramo u produkcijske sustave bez inženjerske discipline koja je desetljećima štitila kritičnu infrastrukturu. LLM-ovi su izvrsni u generiranju koda koji izgleda ispravno, ali njihova sklonost da kažu done bez stvarne verifikacije predstavlja produkcijski disaster koji tek počinjemo shvaćati. Ovo nije pitanje brzine razvoja, već pitanje povjerenja u sustave koji donose odluke na temelju neprovjerenih izlaza.

Razmotrimo temeljni paradoks: taj inženjeri koji bi se užasnuli nad ručno napisanim kodom bez testova, sada prihvaćaju AI generirani kod s minimalnom provjerom. To nije pitanje lijenosti, već kognitivne pristranosti prema tehnologiji koja djeluje inteligentno. No, inteligencija bez discipline nije ništa drugo doli sofisticirano nagađanje. U kontekstu javnog sektora, gdje regulatorni okviri poput EU AI Act-a zahtijevaju transparentnost i odgovornost, ovakav pristup je neodrživ. Kada LLM kaže da je zadatak complete, to često znači da je model zadovoljio vlastiti kriterij vjerojatnosti, ne da je kod provjeren, testiran i siguran za produkciju. Razlika je ključna, a ignoriranje je vodi prema akumulaciji tehničkog duga koji će se platiti u sigurnosnim propustima i operativnim kvarovima.

U RiNET-u smo implementirali ono što nazivamo pravilom tri udarca, ili three-strike rule, kao temeljni mehanizam obrane od površnog prihvaćanja AI izlaza. Pravilo je jednostavno: ako AI generirani kod prođe prvu provjeru bez ikakve intervencije, drugi put ga moramo namjerno izložiti stres testu, a treći put podvrgnuti forenzičkoj analizi. Forensic-first pristup znači da svaki komad koda koji dolazi iz AI sustava tretiramo kao potencijalno kontaminiran dok se ne dokaže suprotno. To nije nepovjerenje prema tehnologiji, već zdrava inženjerska praksa koja priznaje da LLM-ovi nemaju koncept istine, već samo koncept vjerojatnosti. Kada model kaže da je zadatak gotov, mi postavljamo pitanje: gotov prema kojim kriterijima? Bez eksplicitne verifikacije, odgovor je uvijek nepotpun.

Master zakon koji smo usvojili glasi: nothing hardcoded. Ovo zvuči kao banalna smjernica, ali u praksi predstavlja najsnažniji inženjerski štit protiv nestabilnosti koju AI unosi u sustave. Hardkodirani parametri, URL-ovi, ključevi ili čak očekivani formati podataka postaju vremenske bombe kada ih AI generira bez konteksta stvarnog okruženja. U RiNET-u smo razvili sustav pre-commit hookova koji automatski skeniraju svaki AI generirani kod za hardkodirane vrijednosti i označavaju ih za ljudsku provjeru. Ovo nije samo pitanje sigurnosti, već i pitanje održivosti. Sustav koji ovisi o hardkodiranim vrijednostima ne može se skalirati, ne može se lako migrirati i ne može se auditirati u skladu s regulatornim zahtjevima. EU AI Act, na primjer, zahtijeva da svaka odluka koju donosi AI sustav bude objašnjiva i ponovljiva. Hardkodirane vrijednosti to čine nemogućim.

Environment audit je sljedeći kritični sloj obrane. U tradicionalnom inženjerstvu, environment varijable su standard, ali u AI eri one postaju prva linija obrane od katastrofalnih pogrešaka. Problem nastaje kada LLM generira kod koji pretpostavlja specifično okruženje bez eksplicitne provjere. U RiNET-u smo implementirali obavezne environment audit checkove koji se izvode prije svakog deploymenta. Ovi checkovi ne provjeravaju samo postojanje varijabli, već i njihovu valjanost u kontekstu stvarnog okruženja. Ako AI generirani kod pretpostavlja da postoji varijabla DATABASE_URL, ali je ona postavljena na lokalni development server, sustav će odbiti deployment dok se ne izvrši eksplicitna verifikacija. Ovo zvuči kao osnovna praksa, ali iznenađujuće mali broj organizacija je implementirao ovakvu razinu zaštite. Posljedice su vidljive u sve većem broju incidenata gdje AI generirani kod slučajno targetira produkcijske baze podataka umjesto testnih okruženja.

Exhaustive scan je treći stup naše obrambene strategije. Dok standardni code review procesi traže greške u logici, mi smo uveli skeniranje koje traži obrasce karakteristične za AI generirani kod. Obrasci poput prekomjerne upotrebe generičkih varijabli, nedostatka error handlinga na rubnim slučajevima, ili pretjeranog oslanjanja na defaultne vrijednosti postaju crvene zastavice. U RiNET-u smo razvili heuristike koje detektiraju kada kod izgleda previše savršeno, jer savršenstvo u AI generiranom kodu često maskira nedostatak razumijevanja stvarnog konteksta. LLM-ovi su izvrsni u generiranju koda koji prolazi unit testove, ali ne i integracijske testove koji simuliraju stvarne uvjete. Zato smo uveli obavezne integracijske testove za svaki AI generirani modul, s naglaskom na rubne slučajeve koji su statistički najmanje vjerojatni, a time i najčešće zanemareni.

Pitanje tehničkog duga u AI eri dobiva potpuno novu dimenziju. Tradicionalni tehnički dug nastaje kada donosimo svjesne odluke u zamjenu za brzinu. AI generirani tehnički dug je drugačiji – on je nevidljiv, jer dolazi u obliku koda koji izgleda ispravno, ali sadrži skrivene pretpostavke koje će se manifestirati tek u produkciji. U RiNET-u smo uveli metrike koje prate omjer AI generiranog koda i ljudski pregledanog koda, s ciljem da taj omjer nikada ne padne ispod 1:3. Drugim riječima, za svaku liniju AI generiranog koda, tri linije moraju biti ljudski pregledane i potvrđene. Ovo nije samo pitanje kvalitete, već i pitanje odgovornosti. Kada AI generirani kod uzrokuje incident, tko je odgovoran? Bez jasnog procesa verifikacije, odgovornost postaje difuzna, a time i nemoguća za regulatorne okvire koji zahtijevaju jasne linije odgovornosti.

Ovaj pristup razvijamo na rinet.one — za detalje slobodno se javi.

Industrija cloud computinga je prošla kroz sličan proces sazrijevanja. Kada su se pojavili prvi cloud provideri, mnoge organizacije su usvojile cloud bez ikakve discipline, što je dovelo do ogromnih računa i sigurnosnih propusta. Danas je cloud governance standard, a organizacije koje ga ignoriraju su izuzetak. Ista stvar se događa s AI generiranim kodom. Oni koji sada usvoje inženjersku disciplinu bit će u prednosti, dok će oni koji prihvate AI complete kao gotov proizvod platiti cijenu u obliku nestabilnih sustava i regulatornih kazni. U RiNET-u smo izabrali da budemo među prvima koji definiraju standarde, ne zato što smo protiv AI, već zato što vjerujemo da je disciplina preduvjet za održivu inovaciju.

Regulatorni okvir EU AI Act-a dodatno pojačava potrebu za ovakvim pristupom. Akt zahtijeva da sustavi visokog rizika, u koje spada i softver za kritičnu infrastrukturu, budu transparentni, objašnjivi i podložni auditu. Kako možete osigurati transparentnost ako ne možete reći koji dio koda je generiran od strane AI, a koji je ljudski napisan? Kako možete osigurati objašnjivost ako AI generirani kod sadrži logiku koju nitko ne razumije? U RiNET-u smo implementirali automatsko označavanje svakog komada koda prema izvoru, s mogućnošću da se u svakom trenutku rekonstruira povijest odluka. Ovo nije samo pitanje usklađenosti, već i pitanje povjerenja. Bez ovakvih mehanizama, povjerenje u sustave koji koriste AI generirani kod bit će narušeno, što će imati dugoročne posljedice za usvajanje tehnologije u javnom sektoru.

Pogledajmo konkretan anti-pattern koji smo identificirali u RiNET-u: LLM-ovi često generiraju kod koji pretpostavlja da su svi ulazni podaci validni, bez ikakve provjere. Ovo je direktna posljedica načina na koji modeli uče – oni su trenirani na čistim podacima, ne na stvarnim uvjetima gdje su podaci često nepotpuni, netočni ili zlonamjerni. Kada LLM kaže da je kod complete, on često misli da je zadovoljio sintaksne zahtjeve, ali ne i semantičke. U produkciji, ovo znači da će sustav pasti čim naiđe na neočekivani ulaz. Zato smo uveli obaveznu validaciju ulaza za svaki AI generirani endpoint, s eksplicitnim testovima za null vrijednosti, prazne stringove i maliciozne payloadove. Ovo nije opcionalno, već je dio našeg inženjerskog standarda koji se provodi automatski.

Drugi anti-pattern je pretjerano oslanjanje na defaultne vrijednosti. LLM-ovi često generiraju kod koji koristi defaultne parametre bez razmatranja njihovih implikacija. U RiNET-u smo uveli pravilo da svaka defaultna vrijednost mora biti eksplicitno opravdana u komentaru, a ako opravdanje ne postoji, kod se vraća na reviziju. Ovo zvuči kao mikromenadžment, ali u praksi sprječava situacije gdje defaultna vrijednost uzrokuje neočekivano ponašanje u specifičnom kontekstu. Defaultne vrijednosti su često naslijeđene iz primjera na kojima je model treniran, a ti primjeri rijetko odgovaraju stvarnim produkcijskim uvjetima. Bez eksplicitne verifikacije, defaultne vrijednosti postaju skriveni izvori bugova koji se manifestiraju tek u produkciji, kada je najskuplje i najteže popraviti ih.

Treći anti-pattern je nedostatak kontekstualnog razumijevanja. LLM-ovi su izvrsni u generiranju koda koji funkcionira u izolaciji, ali ne i u interakciji s postojećim sustavima. Kada LLM kaže da je zadatak complete, on često nije uzeo u obzir postojeće dependencyje, verzije libraryja ili specifične konfiguracije okruženja. U RiNET-u smo implementirali automatsku provjeru kompatibilnosti koja uspoređuje AI generirani kod s postojećim dependency grafom. Ako kod zahtijeva library ili verziju koja nije prisutna, deployment se automatski blokira dok se ne izvrši ručna provjera. Ovo je posebno važno u kontekstu javnog sektora, gdje su sustavi često stariji i specifično konfigurirani, a svaka promjena može imati dalekosežne posljedice na interoperabilnost.

Zaključak je jasan: AI complete nije cilj, već upozorenje. U RiNET-u smo izabrali da tu frazu koristimo kao podsjetnik da inženjerska disciplina mora evoluirati zajedno s tehnologijom, a ne biti žrtvovana u ime brzine. Naš pristup forensic-first, s pravilom tri udarca, environment auditom i exhaustive scanom, nije samo tehnološka odluka, već strateška pozicija koja osigurava da AI služi ljudima, a ne obrnuto. Pozivamo CTO-e, CIO-e i donositelje odluka u javnom sektoru da razmotre vlastite procese i postave pitanje: je li vaš AI sustav stvarno complete, ili samo izgleda tako? Bez discipline, odgovor je uvijek potonje, a posljedice su preozbiljne da bismo ih ignorirali.

Ako te zanima ovakva arhitektura ili gradiš nešto slično za svoju instituciju — javi se preko rinet.one.

software engineeringAI disciplinecode qualitytechnical debtLLM opsRi.NETsovereign AIAI operativni sustavCroatian AItehnologija

Zanima vas ovakva AI tehnologija?

RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.

Kontaktirajte nas →
0 komentara

Komentari