Autor: Vedran Križek, Voditelj odjela poslovne analize u Undabotu
Zadnjih godina umjetna inteligencija (AI) znatno je napredovala u mogućnosti da generira specifikacije softverskih proizvoda. Jedan od najimpresivnijih primjera tog napretka upravo je GPT-3, jezični model baziran na umjetnoj inteligenciji koji je razvio OpenAI. U ovom tekstu vidjet ćemo kako i koliko nam GTP-3 može pomoći u pisanju specifikacija, posebice oko formalnih oblika specificiranja, poput use case-ova, acceptance kriterija i user story-a. Također ćemo razmotriti i odvagnuti potencijalne benefite i mane korištenja GPT-3-a u te svrhe.
________________________________________
Ovaj uvod nisam napisao ja.
Ja sam ga samo preveo s engleskog, a napisao ga je moj osobni BA asistent kad sam mu zadao sljedeći zadatak: “Write a short introduction to a blog post discussing how capable the GPT 3 is in helping produce software requirements specifications, especially when it comes to formal requirements formats such as use cases, acceptance criteria, and user stories“.
Istina, rezultat nije savršen, dobiveni tekst je ponešto generičan i općenito mu fali stila, ali kontekstualno i sadržajno u potpunosti odgovara zadanom zadatku. Generalno, izbor riječi i fraziranje su korektni, a kad se sve uzme u obzir, krajnji rezultat je otprilike onakve razine kvalitete koju možemo očekivati od stažista ili juniora kao odgovor na isti zadatak.
Razgovor sa strojem
GPT-3 (Generative Pre-trained Transformer) je napredni jezični model (točnije – neuronska mreža), treniran na nebrojenim *milijunima* tekstova s Interneta (a i šire), uključujući i tekstove s Wikipedije i knjige o svim mogućim temama.
Ukratko, GPT-3 ukratko funkcionira na način da tekstualni upit napisan na govornom engleskom (takozvani “prompt”) nadopuni nizom riječi za koji misli da najbolje odgovara i dovršava originalni upit, uzimajući u obzir sadržaj i kontekst cjelovitog teksta.
Posljedično, interakcija sa sustavom djeluje kao razgovor između dva inteligentna entiteta – iako tome nipošto nije tako. Bolji opis onoga što se stvarno dešava bi bio – “supernapredni autocomplete”.
Ono što je zanimljivo za nas, jest da kao rezultat treninga, model, osim razumijevanja jezične sintakse i općenitih semantičkih struktura specifičnih za govorni jezik, mora razviti i apstraktno razumijevanje koncepata opisanih u milijunima tekstova na kojima je treniran. Bez tog razumijevanja, model ne bi mogao generirati kontekstualno ispravne “odgovore” na zadani prompt, već samo proizvesti niz gramatički točnih, ali fundamentalno besmislenih nizova riječi.
Kako su ti milijuni tekstova uključivali i hrpu tekstova u kojima se raspravljalo i objašnjavalo sve o use caseovima, acceptance kriterijima, user storyjima i drugim temama vezanima za pisanje requirementsa, te kako su ti tekstovi tipično sadržavali i masu primjera konkretnih requirementsa, model je, kao nusprodukt učenja razvio “razumijevanje2 i tih koncepata – koncepata koji “život znače” svakom punokrvnom poslovnom analitičaru/ki.
To u praksi znači da bismo – dokle god smo spremni prihvatiti nesavršenosti u detaljima odgovora na naše promptove i dokle god nam je kristalno jasno da nema nikakve garancije da će dobiveni odgovori biti nužno u potpunosti točni, bez obzira na to koliko samouvjereno i uvjerljivo djeluju – trebali moći zatražiti od GPT-3 modela da kreira requirementse za zadani sustav, koristeći standardne formate i tako da to jednostavno zatražimo od njega na konverzacijskom engleskom.
Odlučio sam isprobati upravo to i utvrditi koliko je GPT-3 dobar kada su requirementsi u pitanju. Ovaj članak je posljedica moje impresioniranosti rezultatima koje sam dobio. U ostatku ovog poglavlja predočiti ću vam 2sirovi sinopsis” naših “razgovora” i tako vam pokušati demonstrirati neke od razloga zašto je GPT-3 ostavio takav utisak na mene.
Za interakciju s modelom koristio sam OpenAI playground, svi moji promptovi (pitanja/zadaci) bit će u nastavku teksta podebljani i u kurzivu, a odgovori koje sam dobio od sustava bit će u kurzivu odmah ispod pripadajućeg upita. Svi promptovi i odgovori zalijepljeni su točno onakvi kakvima ih je GPT-3 model AI-ja dao na zaslonu, bez ikakvih promjena i intervencija sa moje strane.
I na kraju, za postavke modela koristio sam default vrijednosti (text-davinci-003 model, temperatura na 0,7, dužina odgovora 256 tokena (riječi), itd.).
Sad kad smo razriješili sve “tehnikalije”, da vidimo što nam taj (sad već slavni) GPT-3 ima za reći.
1. Sažeci
Odlučio sam početi s klasičnim sažetkom, tj nečim što bih obično napisao na početku bilo kojeg SRS-a koji pišem kao poslovni analitičar ili funkcionalni dizajner.
Write a summary depicting the standard classifieds system, such as craigslist.
The classifieds system is an online marketplace for individuals to buy, sell, and trade goods and services. It is a platform for users to post classified ads, with categories ranging from jobs, housing, and items for sale. Users can search for listings by geographic location, type of product, or keyword. Items can be posted for free or for a fee. The listings typically include detailed descriptions of the item, along with photos, price, contact information, and other relevant details. Buyers and sellers can communicate through the website messaging system, allowing them to negotiate terms and arrange for payment and shipping. The classifieds system provides a safe and convenient way for individuals to buy, sell, and trade products and services.
Neloše… Na prvi pogled izgleda da nema problema s pisanjem korektnih sažetaka, ali ruku na srce, to je i prvo što bismo očekivali od jednog velikog NLP modela.
Prijeđimo stoga s “dječjih” zadataka na nešto ozbiljnije i preciznije. Pokušajmo s use caseovima.
2. Use caseovi
Write a use case for a registration process that uses the already existing google or Facebook accounts (a.k.a. “register with google” or “register via Facebook”). Use the writing style depicted in the book “Writing effective use cases” by Alistair Cockburn. Include all relevant extensions of a produced main success scenario.
Title: Register with Google or Facebook
Primary Actor: User
Goal in Context: The user is able to sign up for an account using their existing Google or Facebook account.
Stakeholders:
User: To create an account with minimal effort.
System: To securely store the user information.
Preconditions:
The user has a valid Google or Facebook account.
Main Success Scenario:
- User clicks on “Register with Google” or “Register via Facebook”.
- System authenticates the user’s Google or Facebook account.
- System displays a form with the user’s information pre-filled.
- User verifies and updates the information if needed, then clicks “Submit”.
- System stores the updated information and creates a user account.
Extensions:
4a. User does not want to use their existing information.
4a1. System displays an empty form.
4a2. User fills out the form and clicks “Submit”.
5a. System is not able to store the user information.
5a1. System displays an error message.
Ok, ovo već postaje ozbiljnije. Stil nije 100% pogođen, ali je sasvim prihvatljiv, a svi važni dijelovi koje sam tražio su uključeni. Uz to se čini da model razumije što su ekstenzije, kako se označavaju i kako se koraci u istima numeriraju prema pravilima iz knjige koju sam naveo u svojem promptu. Nije loše. Nije nimalo loše.
3. Acceptance kriteriji
Pokušajmo sada sa acceptance kriterijiima pisanima u gherkinu.
Write a comprehensive set of acceptance criteria describing all behaviors for the following user story: “As a visitor, I want to be able to register using my existing google account”. Use gherkin format.
Given a user is a visitor
When the user clicks on the “Register” button on the home page
Then the user is presented with a Google login form
Given the user has an existing Google account
When the user enters their Google credentials
Then the user is logged in to the site
Given the user is now logged in to the site
When the user enters their email address
Then the user is asked to enter a password
Given the user has entered a password
When the user clicks “Submit”
Then the user is registered to the site
Given the user is registered to the site
When the user visits the home page
Then the user is logged in to the site automatically
Given the user is registered to the site
When the user attempts to register with the same Google account
Then an error message is displayed informing the user that they are already registered
Izgleda da ni acceptance kriterij nije problem. Model razumije što su acceptance kriteriji, njihovu vezu sa širim korisničkim ciljem kojega opisuju i na kraju nema problema s gherkinom kao formatom. Dodatno proizvedeni set kriterija je prilično kompletan. Sve bolje i bolje.
Isprobajmo još jednu stvar. Provjerimo kako se nosi s generiranjem cjelovitog seta user storyja koji opisuju jedan veći epic.
4. User storyji (i epici)
Create a comprehensive set of user stories describing the process of a user achieving his or her ultimate goal of successfully selling their old bike using the online classifieds system such as craigslist.
- As a user, I want to be able to create and post an advertisement for my old bike on the online classifieds system so that potential buyers can find it.
- As a user, I want to be able to set the price of my bike in the advertisement so that potential buyers can have an idea of how much I am asking for it.
- As a user, I want to be able to provide detailed information about my bike such as its age, condition, and any other relevant information so that potential buyers can make an informed decision.
- As a user, I want to be able to respond to inquiries from potential buyers in a timely manner so that they can get the information they need to make a decision.
- As a user, I want to be able to set up a meeting with potential buyers so that I can show them the bike in person and negotiate a price.
- As a user, I want to be able to securely accept payment from potential buyers so that I can get paid for the bike.
- As a user, I want to be able to ensure that the bike is safely delivered to the buyer so that they can start using it.
OK, tu ću stati. Ovo nadilazi moja (skrivena) očekivanja. Model razumije odnose između story-a i epic-a, sposoban je razumjeti funkcionalni opseg zadanog šireg cilja i koncepte koji su ključni za tehnike kao što je story mapping i sl., a to je tipično nešto s čim bilo koji stažist ili junior ima problema, bar na početku.
Zaključak
Nadam se da vam je ovaj članak uspio demonstrirati da su NLP AI modeli kao što je GTP-3 evoluirali do točke u kojoj danas mogu ono što je do prije nekoliko godina bilo čista znanstvena fantastika.
Međutim, po mojem mišljenju, to NIJE najfascinantnija stvar vezana za GPT-3 (i sličnih generativnih modela poput DALL-E 2). Ono što JEST njihova glavna „distruptivna“ karakteristika, ako se mene pita, jest njihova slobodna dostupnost.
Razmislite o sljedećem, u ovom času, bez ikakvih bitnih prepreka imate (gotovo) besplatan pristup tehnologiji koja bi se prije 20 godina smatrala magijom, a prije nekoliko godina bleeding edge istraživanjem. I uz sve to, da bi ste ju koristili, ne morate se polomiti da naučite superkomplicirana korisnička sučelja ili postati data scientist.
Umjesto toga, na raspolaganju imate sustav koji može odrađivati neke (jednostavnije) segmente vašeg posla na razini koju bi mogli očekivati od tipičnog stažista/juniora i to putem interakcije koja nije ništa složenija od one koju bi imali sa spomenutim stažistom/juniorom.
Rijetko kad nam, ni krivima ni dužnima, u krilo padne tako moćna stvar. Ako ništa drugo, bilo bi nepristojno ne potruditi se iskoristiti njen puni potencijal.
Ako se i dalje pitate što je s našim poslom poslovnih analitičara / funkcionalnih dizajnera i hoće li nas GTP-3 zamijeniti, te ako vas sve ovo pomalo plaši, ne brinite se. Uz sve ovdje rečeno, AI modeli kao što je GPT-3 i dalje su daleko od toga da postanu drop-in zamjena za nas poslovne analitičare od krvi i mesa, i tako će bar još neko vrijeme i ostati.
Istina, GPT-3, može pisati korektne sažetke, generirati use caseove i acceptance kriterije i razumije kako user story-i funkcioniraju, ali ništa se neće dogoditi samo od sebe, bez uputa i kontrole od strane stručnjaka, a ti stručnjaci, na sreću, i dalje ostajemo mi.
Drugim riječima, umjetna inteligencija nije nam konkurencija, ona je naš alat.
Ali kao i sa svakim alatom, postojati će oni koji ga dobro razumiju i iz njega mogu iscijediti i zadnju kap “dodane vrijednosti”, kao i oni koji ga “samo koriste”. Neću reći ništa kontroverzno ako ustvrdim da je prva grupa tipično više cijenjena (a posljedično i bolje plaćena).
Poruka koju vam pokušavam prenijeti jest da ne brinete o tome hoće li vam AI modeli oteti posao – umjesto toga, radije naučite kako funkcioniraju.
Dobitak za vas biti će dvojak – kao prvo, ući ćete u prvu, bolje plaćenu, grupu ljudi o kojoj smo govorili u pretprošlom paragrafu. Kao drugo, kao poslovni analitičar (a posebice kao funkcionalni dizajner) trebali biste moći dodati AI modele na popis svojih standardnih rješenja koje možete znalački koristiti kada dizajnirate optimalna, moderna rješenja na koja ćete biti ponosni (i s kojima će vaši klijenti biti zadovoljni).
Nemojte pogriješiti misleći da možete cijelu ovu priču sa AI modelima “prosjediti i pustiti da prođe”. Zaista ne možete.