🚀 Brzi početak: Kako pokrenuti vašeg AI agenta u STUCC-u
Dobrodošli u svet 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; ovde 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 primerom šablona koji je spreman za upotrebu. Ovaj šablon već sadrži sve važne gradivne blokove za početak – savršen je za odmah izradu sopstvenih prilagođavanja.
🎓 Osnove promptinga – Počnite jednostavno, postanite pametno
Najvažnija stvar kod promptinga: Počnite malo i gradite korak po korak.
Kako uspeti:
- Počnite sa minimalnom verzijom koja agentu samo grubo objašnjava šta nameravate s njim. U prenesenom smislu: Recite agentu gde da trči, ne kako da pomera stopala. Testirajte šta agent već može sa tim – bić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 identifikujete u živoj operaciji – to su često veoma različiti problemi od onih koji su vam pravili probleme u "suvoj vožnji". Ovo je deo u koji treba da uložite najviše vremena.
Manje je često više:
- Postavite realna očekivanja: Ljudi greše, AI takođe – 100% tačnosti ne postoji.
- Formulišite jasno i jednostavno.
- Izbegavajte protivrečna uputstva.
- Kad kažete šta bot ne treba da radi, recite i šta treba da radi umesto toga.
- Koristite direktan govor samo tamo gde je neophodno (npr. usklađenost). Bolje je opisati "Šta" agent treba da kaže, a ne "Kako".
- Izbegavajte 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. Umesto toga, tražite uputstva koja možete izbrisati, što je često mnogo efikasnije.
- Opisite svom agentu svoj plan kako bi razumeo značenje iza pojedinačnih uputstava i mogao da donosi bolje odluke.
- AI agent nije vanzemaljac👽: Pre nego što objasnite svet agentu, testirajte da li već ne poznaje koncept. Primer: "Vi ste servis bot u autoposudbi" umesto "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 primetiti da vaš agent deluje malo gluplje, gubi spontanost i greši. Ovo je potpuno normalno i zato što AI, kao i čovek, ima ograničeni raspon pažnje.
Dobra vest: Za ovo postoje reš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 – ovde 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 belešku za novog zaposlenog pre 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 sme da radi u razgovoru?
- FAQ / Šabloni odgovora – Kratke, jasne rečenice primera za LLM
Sadrži kontrolne instrukcije koje se direktno ugradjuju u tekst kako bi se dodalo još više dinamike
Osim opcionih kontrolnih instrukcija, ne postoji poseban format koji morate da sledite. Preporučujemo korišćenje Markdown-a za formatiranje - AI ga posebno dobro razume.
Primer jednostavnog početnog prompta:
# Tvoja uloga Ti si Helena Fišer, prijateljska AI telefonska agentkinja iz GreatProducts. Uvek govoriš pristojno, samouvereno i prirodnim tonom. # Tvoj zadatak Pozdravi klijenta i zamoli ga da ukratko opiše svoj zahtev. $customer_request Zahtev klijenta Odgovori na pitanja iz FAQ. Za nepoznate zahteve preusmeri poziv koristeći funkciju "connect_agent". Ako je rešeno, pozdravi se i koristi funkciju "hangup". @connect_agent Preusmerava poziv na ljudskog agenta. @hangup Završava poziv. # FAQ P: Želi da vrati proizvod O: Proizvodi se mogu vratiti u roku od 30 dana ako nisu korišćeni i u originalnoj ambalaži. P: Vreme isporuke O: Standard: 3–5 radnih dana. Ekspres: 1–2 radna dana. P: Radno vreme O: Pon-Pet: 8:00–18:00, Sub: 9:00–14:00.
U primeru 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 sa nama 😉
🧪 Testiranje prompta – Probajte, Doživite, Optimizujte
Pre nego što vaš AI agent zablista u stvarnoj upotrebi, testirajte svoj prompt direktno u meniju Voice Automation. Ovde možete lako proveriti 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: Proverite da li agent ispravno popunjava promenljive i pouzdano izvršava Pozive funkcija (Function Calls).
Savet: Male promene na jednom mestu mogu imati veliki efekat na ceo proces. Testirajte ponovo odmah.
🚀 Idemo – vaš AI agent je spreman za lansiranje!
🎉 Čestitamo!
Uspeli ste: Konfigurisali ste i testirali svog AI agenta i sada je spreman da podigne iskustvo korisničke službe na novi nivo!
Pre nego što vaš agent može da počne, konačno ga morate dodeliti 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 sledećem pozivu.
🤔 Šta još nismo objasnili...
U primeru prompta pojavile su se dve stvari koje ne želimo da ostavimo tek tako:
- Placeholder-i za promenljive kao
$customer_request - Pozivi funkcija kao
@connect_agent
Oba su centralna alata koji čine vašeg agenta još moćnijim.
U sledećem koraku pokazaćemo vam kako placeholder-i za promenljive i pozivi funkcija funkcionišu – i zašto su ključ za zaista pametne razgovore.
Placeholder-i za promenljive
Sa ugrađenim placeholder-ima za promenljive, vaš agent postaje profesionalac u belež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
Primer:
$customer_request Zahtev klijenta → beleži koji zahtev 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 promenljivu, tj. ne: "Ne zaboravite da popunite promenljivu XYZ"
- Imenujte promenljivu tako da ima smisla za agenta – npr. "Ime" umesto "Polje15" i dodajte mali opis iza imena polja - ovo funkcioniše mnogo pouzdanije.
Promenljiva sa opcijama izbora
Napišite još jedan red options: direktno ispod promenljive sa dozvoljenim vrednostima, odvojenim zarezom. Agent tada može koristiti samo ove. Na primer, 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 videti 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 promenljivih, 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.
Primer:
- Na kartici Script postoji funkcija:
function connect_{ ... } - U promptu ovu funkciju učinite poznatom sa:
@connect_agent Poveži pozivaoca sa čovekom.
- A u tekstu napišete na primer:
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 sledeći nivo!
Vaši prvi AI agenti već rade – sada ćemo vam pokazati tajne kako da predstavite svog agenta spoljnom svetu. 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 ovde dolaze do izražaja napredne funkcije šablona…
Napredne funkcije šablona – Supermoći vašeg prompta
Prompt šablon može daleko više od prostih zamena vrednosti. 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.
Zamena vrednosti 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 uneti 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}}
Primena: Prikazivanje alternativnih/opcionih delova 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ć primetili? U Logovima ćete pored odgovora agenta takođe naći malu vezu ka sledećem promptu. Na taj način možete lako proveriti 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 prosledio tokom poziva.
U stvarnom promptu deklarišete funkciju, otprilike ovako:
@imefunkcije Opis svrhe funkcije
-argument1: Opis parametra
options: vrednost1,vrednost2
optional: true
-argument2: Opis 2. parametra
Sa options navodite dozvoljene vrednosti 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 vrednost ne mora da sledi 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 razume značenje.
Saveti
- 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 promenljive vs Pozivi funkcija — šta, kada, zašto? 🤔
Placeholder-i za promenljive rade tiho u pozadini i upisuju prepoznate vrednosti (npr. ime, poštanski broj) u data objekat.
- Prednost: štedi budžet pažnje LLM-a.
- Nedostatak: Vrednost se ne može proveriti pre nego što bot odgovori.
Pozivi funkcija su aktivni igrači: LLM poziva funkciju koja izvodi provere tokom izvršavanja ili validacije.
- Oblast korišćenja: svuda gde su vam potrebni neposredni rezultati – npr. validacije ili CRM upiti.
Pravilo:
- Placeholder-i za promenljive → 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 zamene kako bi se nametnula ispravna izgovor određenih pojmovaLOG ()- funkcija za log izlaze koje zatim možete videti 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 sledećim funkcijama:
status(), text(), json()
Zahtev funkcioniše asinhrono. Stoga možete pokrenuti nekoliko zahteva paralelno i skripta će čekati da se zahtev završi tek kada pristupite jednoj od funkcija na Response-u.
Korišćenje Script Hooks (kuka)
Možete implementirati sledeć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,vrednost) - ako je definisano, placeholder-i za promenljive 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 savete - a ipak - očajavate!
Onda ste verovatno u trenutku kada bi vam dobro došlo naše obećano reš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 uspe u takvom razgovoru?
Jednostavan odgovor: Vaš zaposleni ima kažiprst, ali današnja AI nema!
Čovek može da zapamti (ili drži prst na) gde 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 sledeći odgovor budu prisutni samo relevantni delovi. I ovo je veliki čas prompt šablona.
Sve što može biti korisno za sledeć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 obezbediti samo trenutno relevantan deo baze znanja. Dakle, prvo neka agent započne poziv funkcije u kome se dohvata odgovarajući deo 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 podelite u faze. Između pojedinačnih faza prelazite pomoću poziva funkcija.
Ovo rešava mnogo problema odjednom:
- puna pažnja u pojedinačnim fazama
- vrlo visoka vernost 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 mešanja sa drugim fazama
- ne samo bolji već i brži odgovori zbog manjeg konteksta
- vaš agent može neograničeno rasti
Primer prompt šablona
# Uloga
Ti si telefon bot za narudžbine 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 zabelež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 sledeću fazu. Unutar ove funkcije postavljate polje temp.phase na vrednost za sledeć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 promenjenim promptom tako da neometano počinje u sledeć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 menjate 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 primeru se dinamički menja samo odeljak # Trenutni zadatak. Međutim, opšti opis procesa i FAQ ostaju isti.


IT Strategija i Digitalno Poslovanje