Maija vidū viens no Visma ilggadējiem darbiniekiem, Visma grupas Klientu pieredzes direktors Edgars Dzenuška, publicēja savu brīvajā laikā izveidoto portālu lietotu grāmatu tirdzniecībai luta.lv. Tā radīšanai tika liktas lietā gan Visma plaši izmantotās metodes labas klientu pieredzes nodrošināšani, produktu attīstībai, kā arī jaunās iespējas, ko mums sniedz mākslīgā intelekta (MI) risinājumu izmantošana.
Šajā rakstā Edgars Dzenuška dalās ar savu pieredzi par darba gaitu, izmantotajiem MI rīkiem un svarīgākajiem aspektiem, kas tika ņemti vērā portāla izstrādē.
Viss sākas un bieži arī beidzas ar ideju
Kā esam dzirdējuši, idejai nav vērtības, kamēr tā nav īstenota. Uz izstrādes procesu šis teiciens attiecas pilnībā, jo pati ideja iegūst realizējamas aprises tikai pēc pamatīga darba. Ir jāpārdomā, kas būs platformas lietotājs un kāds būs lietotāja ceļš. Mūsu gadījumā, piemēram, pārdevēja ceļš ļoti atšķiras no pircēja ceļa. Svarīgi aprakstīt galvenos soļus. Šis uzdevums palīdzēs ne tikai pašam apzināties darba apjomu, bet radīs informāciju, kuru vēlāk var izmantot MI aģenta instrukcijām. Kad ideja un risinājuma kopējās aprises ir aprakstītas, MI aģents palīdzēs saprast, kādas tehnoloģijas vislabāk noderēs izstrādei un kādi būs galvenie soļi. Man ar šo uzdevumu lieliski palīdzēja Anthropic Claude 3.5 Sonnet, liekot padomāt par svarīgiem arhitektūras un veiktspējas jautājumiem.
Izvēle: Izstrādāt “no nulles” vai e-komercijas platformās
Gatavās platformas (piem., WordPress, Shopify) ļauj ērti izveidot savu e-veikalu, izmantojot jau gatavas veidnes un vienkāršu lietotāja saskarni. Ja mērķis ir ātri izveidot e-veikalu savu preču tirdzniecībai, tad šāda pieeja visdrīzāk noderēs lielākajai daļai jauno tirgotāju.
Ņemot vērā grāmatu kā preču kategorijas specifiku un nepieciešamību nodrošināt ātru un vienkāršu tirdzniecību tieši starp privātpersonām (C2C jeb “consumer-to-consumer”), Luta.lv izstrādājām bez gatavām veidnēm. Šāda pieeja mums ļauj īstenot idejas bez platformu uzliktiem ierobežojumiem, kā arī pilnībā pārzināt platformas loģiku un kodu.
Kādas zināšanas ir nepieciešamas?
Lai gan neesmu profesionāls programmētājs, priekšzināšanas programmēšanā ļoti noder arī tad, ja izstrādei talkā ņem MI rīkus. Es tās ieguvu pirms dažiem gadiem Riga Coding School kursā Programmēšanas pamati. Ja nav izpratnes par to, kas ar mainīgais vai algoritms, izstrādes process būs ilgāks un risinājuma testēšana grūtāka. MI aģenti spēj ātri radīt pirmo koda versiju funkciju ieviešanai, tomēr izstrādātāja pienākums ir testēt un atklāt vietas, kur MI radītais kods neatbilst prasībām vai labajām praksēm. Ideālā gadījumā izstrādātājam ir jāsaprot, ko katra koda rinda dara. Labā ziņa – MI aģenti spēj ievietot kodā komentārus, izskaidrojot kaut katru rindiņu.
Vienkāršoti ieskicējot, kā programmēšana notiek: Izstrādātājs strādā integrētā izstrādes vidē (piemēram, Cursor), kur var gan rakstīt kodu, gan sniegt uzdevumus MI aģentam. Šādā vidē var viegli sekot līdz šim radītajam kodam, kā arī pašam veikt tajā labojumus vai lūgt to darīt MI aģentam. Paralēli var interneta pārlūkā testēt, kā risinājums strādā.
Kā rakstīt MI aģenta uzdevumus
Līdzīgi kā cilvēkam, arī MI aģentam ir nepieciešams konteksts, lai saprastu uzdevumu. Ja izstrādātājs jau nedēļām ir plānojis risinājumu, MI aģentam šī informācija ir pieejama tikai tad, ja izstrādātājs to sniedz saprotamā veidā.
Aprakstiet pašu projektu un tā daļas atsevišķos dokumentos, kas strukturēti līdzīgi kā lietošanas instrukcijas (jā, ar saturu, ievadu, virsrakstiem, utt.). Sāciet ar dokumentu, kurš apraksta projekta mērķi, lietotājus, galvenos soļus, lietotās izstrādes tehnoloģijas. Pievienojiet šo dokumentu pie uzdevuma, paskaidrojot MI aģentam kopējo kontekstu. Tad sagatavojiet, piemēram, dokumentu, kurš apraksta pircēju, viņa mērķus, galvenos soļus. Šis dokuments sniedz kontekstu uzdevumiem, ja jāizstrādā kāda funkcija tieši pircēja ceļam. Saglabājiet dokumentu formātā, kuru atbalsta izvēlētais MI aģents (par tiem vēlāk). Kopumā Luta.lv dokumentācija sastāv no pāris desmitiem dokumentu, kas apraksta dažādas portāla daļas un funkcijas, kā arī paša koda ar tajā esošajiem komentāriem.
Neaizmirstiet, ka MI aģenti spēj apstrādāt arī attēlus, tādēļ nekautrējieties zīmēt vai lejupielādēt attēlus, kas vizualizē jūsu idejas. Tie kalpo par lielisku papildu kontekstu MI aģenta instruēšanai.
Ak, nebeidzamie testi!
Jau minēju, ka MI aģenti spēj aši radīt kodu – izstrādātāja atbildība ir to saprast, testēt un labot (lielākoties ar MI aģenta palīdzību). Kā notiek testēšana?
Luta.lv ir tiešsaistes portāls, tādēļ testēšana notiek turpat pārlūkā (piemēram, Google Chrome). Tur ir redzami datu pieprasījumi, apstrāde un kļūdas. Lūdziet MI aģentam kodā ievietot skaidrus konsoles žurnāla ierakstus, kurus jāattēlo konsolē pirms un pēc svarīgākajiem procesa soļiem. Ar to palīdzību jūs varat gan saprast norises, gan arī kopēt ierakstus, lai kļūdas gadījumā paskaidrotu MI aģentam, kas nogāja greizi.
Atkarībā no risinājuma specifikas, būs jālieto vēl papildu rīki testu veikšanai.
Nevajag vēlreiz izgudrot divriteni
Jo vairāk vairāk konteksta un detalizētākas instrukcijas, jo labāku rezultātu (lasi: kodu) MI aģenti radīs. Tomēr nevajag pārcensties ar rakstīšanu. Lai arī jūsu projekts ir unikāls, tomēr ir ļoti liela iespēja, ka kāds jau iepriekš daudzas tā funkcijas ir detalizēti aprakstījis.
Piemēram, ja vēlaties portālā ieviest svītrkoda skeneri, noteikti nav nepieciešams detalizēti aprakstīt tā darbības principus. Google jums atradīs daudz piemēru – jūsu uzdevums ir atrast to, kurš atbilst jūsu gaidītajam rezultātam, un tad iedot MI aģentam aprakstu vai kodu ar norādi “šis ir tas, ko es gribu šeit, lai tas lietotājam ļauj skenēt …, lai …”.
Stack Overflow un citi portāli ir pilni ar visdažādāko problēmu un funkciju risinājumiem. Nekautrējieties tos izmantot. Neaizmirstiet, ka MI modeļi ir apmācīti ar milzīgu datu kopu, kurā visdrīzāk ir arī kādi jūsu meklētās funkcijas piemēri. Tādēļ, ja jūs labi aprakstīsiet, ko jūs gribat, rezultāts jūs patīkami pārsteigs.
Svarīgi: Obligāti sniedziet MI aģentam ieskatu kodā, kas risinājumā jau ir ieviests. Tādējādi MI aģents zinās, kā integrēt turpmākās funkcijas, kāda ir jūsu pieeja komentāru rakstīšanai un kopējai struktūrai. Integrētajās izstrādes platformās tas ir ļoti viegli izdarāms.
Kurš domās par drošību?
Ir ļoti maz lietu pasaulē, kas var aizraut tik ļoti kā sava risinājuma būvēšana. Vai ik nedēļu portāls iegūst kādu jaunu funkciju, un pašu auklētā ideja kļūst par realitāti! Bet… kā ar drošību? Par to sākumā negribas domāt. Piemēram, raksts “Vibe Coder’s Security Blueprint” var būt kā auksta duša, lai kritiski paskatītos uz sava risinājuma drošību.
Atcerieties par Mērfija likumu “Ja kaut kas var saiet grīstē, tā arī notiks.”, turklāt visnepiemērotākajā laikā. Vai publiski lietotāji nevar izdzēst jūsu datus caur API saskarni? Vai padomājāt par datu rezerves kopijām? Kā atjaunosiet datus, ja kāds tos izdzēsīs?
Apkopojumā
Šis projekts liek saprast, ka vismaz šīs divas prasmes informācijas tehnoloģiju jomā turpmākajos gados būs kritiski svarīgas:
- Spēja aprakstīt uzdevumus tā, lai tos saprastu gan cilvēks, gan MI aģents.
- Spēja testēt risinājumu atbilstību prasībām, iejūtoties lietotāja ādā un saprotami aprakstot rezultātu un nepieciešamos labojumus.
Ja jūs domājat, ka tās ir triviālas prasmes, padomājiet par internetā klejojošo jociņu, ka “Lai mākslīgais intelekts atņemtu darbu programmētājiem, klientiem vajadzēs iemācīties precīzi aprakstīt, ko viņi grib. Programmētāji ir drošībā.”
Šobrīd portālā ir jau vairāki simti lietotāju un vairāk kā 30 tūkstoši grāmatu. Izstrādes process nekad nebeidzas – tiek labotas kļūdiņas, ieviestas jaunas funkcijas. Līdzīgi kā ar iegādātu lauku īpašumu vai dzīvokļa remontu, darbu pie tā var tikai pārtraukt – ne pabeigt.
Izmantotie MI rīki un platformas:
Projekta plānošana, konceptu izstrāde – Anthropic Claude Sonnet 3.5
Satura vadības sistēma Strapi 5, klienta lietojumprogramma Next.js, koda glabātuve Github
Integrētā izstrādes vide – Cursor ar MI modeļiem Gemini 2.5 Pro, Anthropic Claude Sonnet 4, OpenAI o3 un o4-mini
Sākotnējais dizains Figma
API platforma – Postman
Izvēršanas platforma – DigitalOcean