Pitam za nešto protiv glavobolje. Agent mi ne kaže šta da uzmem. Kaže mi šta ova apoteka ima na polici, šta se u tome nalazi, i nudi da mi pozove farmaceuta.
To nije agent koji je oprezan. To je proizvod.
Većina demonstracija agenata je jedan model i jedan prompt. To drži dok odgovor ne mora da bude tačan. Bot za podršku koji pogreši pošalje te na pogrešnu stranicu pomoći. Agent u apoteci koji pogreši kaže čoveku da uzme lek.
Zato nijedna činjenica ovde ne dolazi iz modela. Zalihe, sastojci, interakcije — sve to dolazi iz baze. Posao modela je da postavi pravo pitanje i da zna kada da stane.
To je problem integracije, i o tome je reč.
Projekat je bio zadatak iz postupka zapošljavanja sa šest krugova (poseban tekst). Firma i njen zadatak ostaju neimenovani: ovo je referentna implementacija, a ne nečiji rad.
Sistemski prompt
Zove se sistemski prompt, ali se čita kao dokument o pravilima. Ima tri odeljka:
- Šta agent sme da kaže.
- Šta nikada ne sme da kaže.
- Koji podaci postoje u bazi, a nikada ne smeju da stignu do korisnika.
Treći odeljak je onaj koji ljudima treba. Prvi je onaj koji preskaču.
Agent može da vidi podatke o dobavljačima i nabavne cene, jer upituje istu bazu koju koristi apoteka. Zato mu se mora izričito reći: to što nešto možeš da vidiš nije dozvola da to izgovoriš.
Nekoliko pravila iz tog fajla:
- Bez najava.
- Bez medicinskih saveta.
- Počni odmah odgovorom.
- Najviše jedna do dve kratke rečenice.
Veći deo tog fajla govori o odbijanju, a ne o odgovaranju.
Šest alata
- Informacije o leku
- Naći nešto za simptom
- Proveriti zalihe
- Dobaviti alternative
- Proveriti interakcije
- Predati farmaceutu
Pet od njih su čitanja iz baze. Model nikada ne pogađa da li nečega ima na stanju. Poziva alat za zalihe, a on preko Prisme ide na PostgreSQL. Ako u redu piše nula, odgovor je nula. Ne postoji putanja na kojoj model sme da bude optimista oko zaliha.
Šesti je zanimljiv: predaja farmaceutu je alat, a ne rukovalac greškom. Većina agenata predaju tretira kao neuspeh — kao ono što se desi kada ništa nije radilo. Ovde je to sposobnost koju model bira kao i svaku drugu. A neki ulazi je pokreću odmah, pre nego što model uopšte dođe na red.

Dva formata
Isti agent, isti alati, dva oblika izlaza.
Odgovor u četu ima strukturu: liste, podebljanja, doziranje u zasebnom redu. Glasovni odgovor nema ništa od toga, jer niko ne želi da mu se naglas čita lista sa tačkama.
To nije stilizovanje. To stoji u sistemskom promptu — što znači da model piše drugu rečenicu u zavisnosti od toga koji kanal je pitao.
U četu
„Šta pomaže kod glavobolje?" Agent ne razmišlja o farmakologiji. Poziva alat, dobija redove i izveštava šta postoji ovde.
„Imate li ibuprofen na stanju?" — „Interakcija između aspirina i ibuprofena?" — „Alternative za paracetamol?" Težina i preporuka takođe dolaze iz baze, a ne iz modela.
A onda rubni slučaj: „Od jutros me boli u grudima. Šta da uzmem?" Tu se pokreće predaja.
Glasom
Isti agent ispod. Mikrofon unutra, Deepgram pravi tekst, Claude odgovara, ElevenLabs to izgovara nazad. Četiri servisa u jednom obrtaju — i čuje se koliko to košta.
Tri jezika
Engleski, nemački i jedan jezik koji se piše zdesna nalevo. Treći je jedini koji traži pravi posao: raspored se ogleda, ne samo tekstovi. Svaki smer flex-a, svaka ikonica koja negde pokazuje, svaka margina koja je pretpostavila levu ivicu.
Sedam delova
| Deo | Uloga |
|---|---|
| Next.js i React | Sučelje |
| API rute | Backend |
| PostgreSQL | Izvor istine |
| Prisma | Put unutra |
| Claude | Jedini deo koji zaključuje |
| Deepgram, ElevenLabs | Govor unutra, govor napolje |
| Docker | Da radi isto na mojoj mašini i na serveru |
Izvor istine je shema: lekovi, sastojci, zalihe, interakcije. Obične tabele sa običnim kolonama.
Nema koraka pretraživanja i nema embedinga. Agent ne traži verovatan odgovor. On čita red.
A pravilo koje je sprečilo da ovo postane špageti jeste jedna rečenica:
Svaka komponenta ima tačno jedan posao, i tačno jedna od njih sme da improvizuje.
Baza nikada nije nesigurna. Govorni servisi nikada nisu kreativni. Model je jedino što improvizuje — i sme da improvizuje samo o formulaciji, nikada o činjenicama, jer svaka činjenica mora da se vrati kroz alat.
Povuci tu liniju rano, i ostatak integracije je vodoinstalaterski posao.
Tri granice
Demo koji ne imenuje svoje granice nije demo, nego reklama.
- Radi na unapred pripremljenom skupu podataka, ne na živim zalihama apoteke.
- Na drugom kraju predaje ne sedi niko. Predaja je stvarna; čovek nije.
- Nije medicinsko sredstvo. Nije sertifikovano, i ništa u njemu nije savet.
Tri pravila
Prvo: model sme da bude nesiguran oko reči, nikada oko činjenica. Svaka činjenica ide kroz alat.
Drugo: predaja je funkcija. Napravi je prvu, ne poslednju.
Treće: zapiši šta agent nikada ne sme da radi pre nego što zapišeš šta treba da radi. Zabrane su proizvod.
Zaključak
Nije poenta u apoteci. Poenta je da je pretvoriti pet servisa u jedan pošten odgovor problem granica, a ne problem modela.



