🚀 Brzi početak: Kako pokrenuti vašeg AI agenta u STUCC-u
Dobrodošli u svijet STUCC AI agenata! 🎉
Bez brige – ne morate biti tehnološki ninja da biste pokrenuli svog pametnog AI agenta. Za samo nekoliko klikova, vaš agent je spreman da podrži vaše pozive.
Tako je lako:
- Otvorite Voice Automation u STUCC meniju; ovdje se kreiraju i upravljaju svi AI agenti.
- Kliknite na New IVR u gornjem desnom uglu i odaberite svog AI agenta. Kreira se jednim klikom.
- Voilà: Vaš AI agent kreće sa primjerom šablona koji je spreman za upotrebu. Ovaj šablon već sadrži sve važne gradivne blokove za početak – savršen je za odmah izgradnju vlastitih prilagodbi.
🎓 Osnove promptinga – Počnite jednostavno, postanite pametno
Najvažnija stvar kod promptinga: Počnite malo i gradite korak po korak.
Kako uspjeti:
- Počnite sa minimalnom verzijom koja agentu samo grubo objašnjava šta namjeravate s njim. U prenesenom smislu: Recite agentu gdje da trči, ne kako da pomjera stopala. Testirajte šta agent već može sa tim – bit ćete iznenađeni.
- Zatim napravite verziju koja je taman dovoljna da ide uživo.
- Idite uživo sa upravljivim obimom poziva koji vam omogućava da pogledate svaki pojedinačni poziv.
- Popravite probleme koje identificirate u živoj operaciji – to su često veoma različiti problemi od onih koji su vam pravili probleme u "suvoj vožnji". Ovo je dio u koji treba da uložite najviše vremena.
Manje je često više:
- Postavite realna očekivanja: Ljudi griješe, AI takođe – 100% tačnosti ne postoji.
- Formulišite jasno i jednostavno.
- Izbjegavajte proturječna uputstva.
- Kad kažete šta bot ne treba da radi, recite i šta treba da radi umjesto toga.
- Koristite direktan govor samo tamo gdje je neophodno (npr. usklađenost). Bolje je opisati "Šta" agent treba da kaže, a ne "Kako".
- Izbjegavajte nepotrebno dodatno znanje.
- Ne fiksirajte se na pojedinačne greške i pokušavajte da ih kompenzujete.
- Dodatna uputstva često pogoršavaju performanse u drugim oblastima koje su prethodno dobro radile. Umjesto toga, tražite uputstva koja možete izbrisati, što je često mnogo efikasnije.
- Opisite svom agentu svoj plan kako bi razumio značenje iza pojedinačnih uputstava i mogao da donosi bolje odluke.
- AI agent nije vanzemaljac👽: Prije nego što objasnite svijet agentu, testirajte da li već ne poznaje koncept. Primjer: "Vi ste servis bot u autoposudbi" umjesto "Klijenti sa problemima sa automobilom vas zovu."
Samo sa ovim jednostavnim pravilima možete izgraditi korisne AI agente za praktičnu upotrebu.
Pažnja: Kako dodajete sve više i više zadataka, vremenom ćete primijetiti da vaš agent djeluje malo gluplje, gubi spontanost i griješi. Ovo je potpuno normalno i zato što AI, kao i čovjek, ima ograničeni raspon pažnje.
Dobra vijest: Za ovo postoje rješenja, koja ćemo vam predstaviti u nastavku – tako da za vas nema ograničenja. 🎉
Prvi prompt – Srž vašeg agenta
Prompt je mozak vašeg AI agenta – ovdje definišete ko je on, kako govori i šta može.
Važno: Struktura nije striktno propisana – kreativnost i iskustvo čine razliku. Sve što već znate o radu sa AI ostaje važeće.
Osnovno pravilo: Napišite prompt kao što biste napisali bilješku za novog zaposlenog prije nego što ga pustite na telefon. Ako se pridržavate ovoga, možete preskočiti mnoge tutorijale.
Približna struktura prompta:
Sadrži osnovne opise kako se bot treba ponašati:
- Uloga & Svrha – Ko govori? Šta je cilj agenta?
- Zadatak – Šta agent treba da radi u razgovoru?
- Ograda (Guardrails) – Šta agent nikako ne smije da radi u razgovoru?
- FAQ / Šabloni odgovora – Kratke, jasne rečenice primjera za LLM
Sadrži kontrolne instrukcije koje se direktno ugrađuju u tekst kako bi se dodalo još više dinamike
Osim opcionih kontrolnih instrukcija, ne postoji poseban format koji morate da slijedite. Preporučujemo korištenje Markdown-a za formatiranje - AI ga posebno dobro razumije.
Primjer jednostavnog početnog prompta:
# Tvoja uloga Ti si Helena Fišer, prijateljska AI telefonska agentica iz GreatProducts. Uvijek govoriš pristojno, samouvjereno i prirodnim tonom. # Tvoj zadatak Pozdravi klijenta i zamoli ga da ukratko opiše svoj zahtjev. $customer_request Zahtjev klijenta Odgovori na pitanja iz FAQ. Za nepoznate zahtjeve preusmjerite poziv koristeći funkciju "connect_agent". Ako je riješeno, pozdravite se i koristite funkciju "hangup". @connect_agent Preusmjerava poziv na ljudskog agenta. @hangup Završava poziv. # FAQ P: Želi vratiti proizvod O: Proizvodi se mogu vratiti u roku od 30 dana ako nisu korišteni i u originalnoj ambalaži. P: Vrijeme isporuke O: Standard: 3–5 radnih dana. Ekspres: 1–2 radna dana. P: Radno vrijeme O: Pon-Pet: 8:00–18:00, Sub: 9:00–14:00.
U primjeru vidite # Tvoj zadatak kao naslov sekcije u Markdown formatu kao i $customer_request i @connect_agent kao kontrolne instrukcije. O ova dva elementa ćemo uskoro detaljnije... ostanite s nama 😉
🧪 Testiranje prompta – Probajte, Doživite, Optimizujte
Prije nego što vaš AI agent zablista u stvarnoj upotrebi, testirajte svoj prompt direktno u meniju Voice Automation. Ovdje možete lako provjeriti kako vaš agent reaguje – bilo putem Poziva ili u Ćaskanju (Chat).
Kako funkcioniše:
- Otvorite meni: Idite na Voice Automation → Test.
- Izaberite režim testa: Odlučite se za Call (simulirani poziv) ili Chat (tekst interakcija).
- Započnite interakciju: Govorite ili pišite svoje test upite, tačno onako kako bi to uradili vaši klijenti.
- Posmatrajte rezultate: Provjerite da li agent ispravno popunjava promjenljive i pouzdano izvršava Pozive funkcija (Function Calls).
Savjet: Male promjene na jednom mjestu mogu imati veliki efekat na cijeli proces. Testirajte ponovo odmah.
🚀 Idemo – vaš AI agent je spreman za lansiranje!
🎉 Čestitamo!
Uspjeli ste: Konfigurisali ste i testirali svog AI agenta i sada je spreman da podigne iskustvo korisničke službe na novi nivo!
Prije nego što vaš agent može da počne, konačno ga morate dodijeliti pravoj dolaznoj liniji:
- Otvorite stavku menija Brojevi telefona i odaberite željenu liniju.
- Pod IVR Podešavanja, odaberite naslov svog bota u padajućem meniju IVR.
- Potvrdite polje za potvrdu Omogućeno i sačuvajte – gotovo!
I voilà – vaš AI agent je uživo i spreman da oduševi vaše klijente. Zavalite se, uživajte u predstavi i gledajte kako vaš novi virtualni kolega razbija vašu korisničku službu! 🤘
Naplata za vašeg AI agenta je jednostavna i transparentna:
- Sve minute povezivanja AI agenta se naplaćuju po tarifi Conversational AI C – dodatno na redovne naknade za povezivanje.
- Dodatno, trajanje generisanog govornog izlaza se takođe naplaćuje po tarifi Conversational AI C.
- 💡Pametna ušteda: Govorni izlazi koji se tačno ponavljaju se automatski keširaju. Za njih se ne naplaćuju dodatni troškovi pri sljedećem pozivu.
🤔 Šta još nismo objasnili...
U primjeru prompta pojavile su se dvije stvari koje ne želimo da ostavimo tek tako:
- Placeholder-i za promjenljive kao
$customer_request - Pozivi funkcija kao
@connect_agent
Oba su centralna alata koji čine vašeg agenta još moćnijim.
U sljedećem koraku pokazat ćemo vam kako placeholder-i za promjenljive i pozivi funkcija funkcionišu – i zašto su ključ za zaista pametne razgovore.
Placeholder-i za promjenljive
Sa ugrađenim placeholder-ima za promjenljive, vaš agent postaje profesionalac u bilježenju: Automatski čuva informacije iz razgovora direktno u zapis podataka, koje zatim možete dalje obraditi u STUCC-u.
Sintaksa:
$Ime_polja Opis polja → definiše očekivano polje
Primjer:
$customer_request Zahtjev klijenta → bilježi koji zahtjev klijent navodi
Važno:
- Postavite polje sa $ ispred, u sopstvenom redu, što je moguće bliže temi na koju se polje odnosi. Na taj način agent zna iz okružujućeg konteksta kada polje treba popuniti. Međutim, nemojte se u ostatku teksta prompta pozivati na promjenljivu, tj. ne: "Ne zaboravite da popunite promjenljivu XYZ"
- Imenujte promjenljivu tako da ima smisla za agenta – npr. "Ime" umjesto "Polje15" i dodajte mali opis iza imena polja - ovo funkcioniše mnogo pouzdanije.
Promjenljiva sa opcijama izbora
Napišite još jedan red options: direktno ispod promjenljive sa dozvoljenim vrijednostima, odvojenim zarezom. Agent tada može koristiti samo ove. Na primjer, izgleda ovako:
$will_newsletter Klijent se slaže da prima bilten
options: da, ne
Pozivi funkcija (Function Calls) – Pokretanje akcija
Pozivi funkcija su dugmad za akciju vašeg agenta. Oni pokreću direktne akcije kada nešto mora da se desi odmah.
Stvarne funkcije možete vidjeti na kartici Script. To su Javascript funkcije koje možete proširiti po želji.
Da biste koristili ove funkcije, moraju biti poznate agentu u promptu. To se dešava u novom redu sa @ praćenim imenom funkcije i naknadnim opisom. Za razliku od promjenljivih, pozicija u promptu nije bitna.
Agent u osnovi sam odlučuje iz konteksta razgovora kada će koristiti funkcije. Ali možete to uticati u promptu i naterati agenta da najavi njihovu upotrebu. Ovo obezbeđuje veoma prirodne prelaze u razgovoru.
Primjer:
- Na kartici Script postoji funkcija:
function connect_{ ... } - U promptu ovu funkciju učinite poznatom sa:
@connect_agent Povežite pozivaoca sa čovjekom.
- A u tekstu napišite na primjer:
Ako ne znate odgovor na pitanje, onda recite da sada povezujete sa zaposlenim koji sigurno može pomoći i istovremeno koristite funkciju "connect agent".
🎮 Napredno – Izvan kaveza
Dobrodošli na sljedeći nivo!
Vaši prvi AI agenti već rade – sada ćemo vam pokazati tajne kako da predstavite svog agenta spoljnom svijetu. Bez brige: Iako se zove "Napredno", za ovo vam ne treba doktorat iz računarstva – ali sigurno ne škodi. Posmatrajte to kao dobro opskrbljenu kutiju sa alatima koja samo čeka da se izgrade sjajne stvari.
Možete li čuvati tajnu?
Ono što smo do sada zvali "prompt" zapravo uopšte nije statički prompt. To je dinamički šablon koji se ponovo sastavlja sa svakim potezom.
Računarskom stručnjaku ovo odmah zvuči poznato: ne kruti komad teksta, već fleksibilan sistem za renderovanje – slično VueJS-u ili Angular-u, ali za AI agente.
I upravo ovdje dolaze do izražaja napredne funkcije šablona…
Napredne funkcije šablona – Supermoći vašeg prompta
Prompt šablon može daleko više od prostih zamjena vrijednosti. Savladava složenu sintaksu šablona koju možete ugnezditi po želji. Ovo pretvara vaš prompt u fleksibilan modularni sistem koji čisto preslikava čak i kompleksne logike razgovora.
Zamjena vrijednosti sa {{expression}}
Najjednostavniji slučaj: {{data.imepolja}}
Ali pazite: Iza ovoga stoji više od samo imena polja – pozivi funkcija su takođe mogući. Na ovaj način možete dinamičke sadržaje direktno unijeti u šablon.
Uslovni blokovi sa IF
Sa IF direktivom kontrolišete koji sadržaji zapravo ulaze u prompt. Bilo usred teksta:
({{#if condition}} Ovdje je opcioni tekst {{/if}})
ili sa više alternativa, koje obuhvataju velike blokove:
{{#if condition}}
{{#elif alternative_condition}}
{{#else}}
{{/if}}
Primjena: Prikazivanje alternativnih/opcionih dijelova prompta
Petlje sa EACH
Za elemente koji se ponavljaju koristite EACH:
{{#each itemVar @ array-expression}}
{{/each}}
Savršeno kada se stvari ponavljaju proizvoljno često – npr. lista proizvoda ili ugovora.
Sa ovim naprednim funkcijama šablona unosite dinamiku u svoje agente.
I da li ste već primijetili? U Logovima ćete pored odgovora agenta takođe naći malu vezu ka sljedećem promptu. Na taj način možete lako provjeriti da li je generisani prompt zapravo bio tačan.
Definisanje sopstvenih funkcija
Već smo govorili o funkcijama, ali još ne o potpuno kompletnoj sintaksi. Na kartici Script definišete funkciju u Javascript-u, otprilike ovako:
function imefunkcije(args){
}
args objekat zatim sadrži parametre koje je agent prosliedio tokom poziva.
U stvarnom promptu deklarišete funkciju, otprilike ovako:
@imefunkcije Opis svrhe funkcije
-argument1: Opis parametra
options: vrijednost1,vrijednost2
optional: true
-argument2: Opis 2. parametra
Sa options navodite dozvoljene vrijednosti ako želite da dozvolite samo određene mogućnosti. A sa optional određujete da ovaj parametar ne mora biti prisutan.
A šta funkcija vraća?
Povratna vrijednost ne mora da slijedi određeni format. Mogu se vratiti bilo koje objektne strukture ili čak jednostavan string sa uputstvom kako agent treba da nastavi. Jedino je važno da agent može da razumije značenje.
Savjeti
- Dobro odabrana imena funkcija i parametara sa odgovarajućim opisom su ključni za pouzdanu upotrebu od strane agenta.
- Koristite funkcije štedljivo. Ako agent ima mnogo funkcija za izbor, to zauzima puno budžeta pažnje.
Placeholder-i za promjenljive vs Pozivi funkcija — šta, kada, zašto? 🤔
Placeholder-i za promjenljive rade tiho u pozadini i upisuju prepoznate vrijednosti (npr. ime, poštanski broj) u data objekat.
- Prednost: štedi budžet pažnje LLM-a.
- Nedostatak: Vrijednost se ne može provjeriti prije nego što bot odgovori.
Pozivi funkcija su aktivni igrači: LLM poziva funkciju koja izvodi provjere tokom izvršavanja ili validacije.
- Oblast korištenja: svuda gdje su vam potrebni neposredni rezultati – npr. validacije ili CRM upiti.
Pravilo:
- Placeholder-i za promjenljive → za nekritična polja
- Pozivi funkcija → za sve što treba odmah validirati ili obraditi
Javascript okruženje 💻
Sa Javascript-om imate na raspolaganju LowCode okruženje, pomoću kojeg možete realizovati napredne funkcije.
Globalni objekti
U Javascript okruženju ćete naći neke globalne objekte koje možete koristiti iz bilo koje funkcije.
data {} - centralni objekat, čija se polja direktno prenose u zapis Kontakta za dalju obradu
temp {} - privremeni objekat u kome možete čuvati serializabilne podatke između poteza
actions []- za pokretanje kontrolnih komanditts_translation {}- mapa regex izraza u string formatu za fonetske zamjene kako bi se nametnula ispravna izgovor određenih pojmovaLOG ()- funkcija za log izlaze koje zatim možete vidjeti u logu razgovora
Pokretanje API poziva putem HTTP-a
Za API pozive ka eksternim sistemima dostupne su globalne funkcije:
GET(url, options)
POST(url, payload, options)
PUT(url, payload, options)
DELETE(url, options)
Rezultat je Response objekat sa sljedećim funkcijama:
status(), text(), json()
Zahtjev funkcioniše asinhrono. Stoga možete pokrenuti nekoliko zahtjeva paralelno i skripta će čekati da se zahtjev završi tek kada pristupite jednoj od funkcija na Response-u.
Korištenje Script Hooks (kuka)
Možete implementirati sljedeće hooks kao funkciju kako biste mogli da reagujete na određene događaje:
- onLoad() - kada agent startuje
- onUpdate() → nakon svakog poteza
- onClose() → na kraju razgovora (npr. završni poslovi, operacije pisanja)
- onFieldUpdate(imepolja,vrijednost) - ako je definisano, placeholder-i za promjenljive se ne dodaju jednostavno data objektu, već se obrađuju preko ove funkcije
- onFunctionCall(ime,argumenti) → ako agent poziva nedefinisanu funkciju... na ovaj način se mogu implementirati dinamičke funkcije
🤔 Pomoć, moj agent postaje gluplji - ili - čemu služi kažiprst
Da li je dobro počelo sa vašim agentom? I sada jednostavno ne radi šta treba?
Već ste implementirali sve naše savjete - a ipak - očajavate!
Onda ste vjerovatno u trenutku kada bi vam dobro došlo naše obećano rješenje za zaista velike agente.
Zašto statički promptovi dosežu svoje granice
AI agenti, kao i ljudi, imaju ograničeni budžet pažnje. Ali novi zaposleni bi mogao sjajno da radi sa vašim promptom, zar ne? Da li je AI zaista toliko glupa? Zašto može da piše beskrajno duge tekstove, a da ne uspije u takvom razgovoru?
Jednostavan odgovor: Vaš zaposleni ima kažiprst, ali današnja AI nema!
Čovjek može da zapamti (ili drži prst na) gdje se tačno nalazi u skripti razgovora; AI to mora ponovo da shvati za svaki odgovor na osnovu istorije razgovora. Ovo košta puno pažnje, a malo ostaje za stvarni odgovor.
Dobrodošli u Context-Engineering!
Stojite na pragu od prompt inženjera do context inženjera. Ideja je da se kontekst (prompt) dinamički prilagodi tako da za sljedeći odgovor budu prisutni samo relevantni dijelovi. I ovo je veliki čas prompt šablona.
Sve što može biti korisno za sljedeći odgovor u trenutnoj situaciji razgovora mora biti uključeno, sve ostalo izbačeno.
Informacioni agenti
Ako radite na agentu koji bi trebalo samo da pruža informacije, ima smisla obezbijediti samo trenutno relevantan dio baze znanja. Dakle, prvo neka agent započne poziv funkcije u kome se dohvata odgovarajući dio baze znanja.
Za manje baze znanja možete jednostavno birati sa liste tema; za veoma velike baze znanja potreban vam je RAG sistem.
Dokument za oblast teme zatim ugradite u prompt preko šablona. I sada se agent može u potpunosti fokusirati na stvarno pitanje.
Transakcioni agenti
Ako vaš agent treba da prođe kroz kompleksan proces, trebalo bi da ga podijelite u faze. Između pojedinačnih faza prelazite pomoću poziva funkcija.
Ovo rješava mnogo problema odjednom:
- puna pažnja u pojedinačnim fazama
- vrlo visoka vjernost procesu - tačno se pridržava uputstava
- proces se može deterministički kontrolisati - agent ne može jednostavno preskočiti faze
- pojedinačne faze mogu se optimizovati i testirati nezavisno, bez miješanja sa drugim fazama
- ne samo bolji već i brži odgovori zbog manjeg konteksta
- vaš agent može neograničeno rasti
Primjer prompt šablona
# Uloga
Ti si telefon bot za narudžbe u GreatProducts.
# Opšti proces
Vodiš klijenta kroz proces naručivanja:
- Pozdrav
- Snimanje korpe
- Snimanje podataka o klijentu
- Snimanje podataka o plaćanju
- Pozdrav
Fokusiraj se potpuno na trenutni zadatak.
# Trenutni zadatak
{{#if !temp.phase}}
Pozdravi klijenta.
Reci klijentu da ćemo prvo zabilježiti željene artikle i aktiviraj istovremeno funkciju "Novakorpa"
@Novakorpa Kreiraj novu korpu za unos narudžbe
{{#elif temp.phase===10}}
Pitaj klijenta za željene artikle
....
Kada su svi artikli snimljeni, onda reci da su ti sada potrebni podaci o klijentu i aktiviraj istovremeno funkciju "SnimiPodatke"
@SnimiPodatke Pripremi se za snimanje podataka o klijentu.
{{#elif temp.phase===20}}
…
{{#elif temp.phase===30}}
....
{{#elif temp.phase===40}}
Pozdravi se od klijenta i završi razgovor.
{{/if}}
#FAQ
P: Zašto?
O: Zato!
@hangup završava poziv
Objašnjenje
U svakoj fazi definišete funkciju koja vodi agenta u sljedeću fazu. Unutar ove funkcije postavljate polje temp.phase na vrijednost za sljedeću fazu.
Da li se time stvara čudan jaz između faza? Ne, nikako.
Agent verbalno priprema klijenta za novu fazu. Nakon toga, međutim, agent ne čeka na reakciju klijenta, već odmah reaguje na rezultat poziva funkcije sa promijenjenim promptom tako da neometano počinje u sljedećoj fazi bez da dođe do jaza u razgovoru.
Deklaracije funkcija takođe bivaju prikazane i sklonjene od strane šablona, tako da agent vidi samo relevantne funkcije u datom trenutku. Ovo čini veliku razliku.
Budući da dinamički mijenjate prompt u toku razgovora, pobrinite se da ostane dovoljno konteksta oko faza tako da prethodna istorija razgovora i dalje ima smisla sa novim promptom. U primjeru se dinamički mijenja samo odjeljak # Trenutni zadatak. Međutim, opšti opis procesa i FAQ ostaju isti.


IT Strategija i Digitalno Poslovanje