Intervjuer te pita: „Agent ima na desetine skill-a, kako garantuješ stopu pogađanja?" Ako odgovoriš „napisaću routing pravilo za raspodelu", čestitam, opet si nagazio na minu.
Zašto?
Zato što izbor skill-a uopšte ne ide kroz routing, nego kroz LLM semantičko poklapanje. Da li će pogoditi ili ne, sve zavisi od toga kako je description napisan.
Danas opet za 3 minuta, rasclanimo jedno često Agent pitanje sa intervju-a.
Prvo da raščistimo jednu stvar: skill i tool call nisu ista stvar.
Tool call je Function Calling protokol, LLM na osnovu JSON Schema bira funkciju, popunjava parametre, to je strukturno poklapanje.
Šta je skill? Skill je pakovan skup sposobnosti, definisan jednim SKILL.md fajlom, u kom stoje ime, opis, scenario okidanja i tok izvršenja. Kad se Agent pokrene, description svih skill-a se ubaci u system prompt. Korisnik izgovori jednu rečenicu, LLM pročita sve description-e i sam proceni da li da okine i koji.
Drugim rečima, mehanizam izbora skill-a je semantičko poklapanje na nivou prirodnog jezika, a ne strukturno poklapanje na nivou JSON Schema.
Kad smo raščistili mehanizam, da vidimo kako da povećamo stopu pogađanja skill-a. Četiri poteza.
Prvi potez, napiši dobar description. To je koren cele stvari. Ako description nekog skill-a glasi „obrađuje zadatke vezane za članke", gotovo je — korisnik kaže „napiši mi članak" i „promeni mi naslov", i oba će okinuti baš njega. Kako da ga popraviš? Napisi konkretne scenarije i ključne reči-okidače. Na primer, za skill koji generiše naslove, description treba da glasi „Generiše kandidate naslova za članak. Okidači: naslov, smišljanje naslova, predlog naslova, viralni naslov". Što su ključne reči izričitije, to je LLM pri poklapanju odlučniji.
Drugi potez, suzi opseg odgovornosti skill-a. Jedan skill radi samo jednu stvar. Ne pravi jedan sveobuhvatni „pomoćnik za pisanje" skill u koji uguraš pisanje članaka, naslove, prelom i slike. Razdvoji: pisanje članaka je jedan skill, naslovi su poseban skill, neka svaki upravlja svojim. Što je odgovornost uža, description se lakše piše, a pogodak je precizniji.
Treći potez, ukloni semantičko preklapanje. Ako se description dva skill-a semantički preklapaju, LLM će oklevati. Na primer „pisanje AI članaka" i „pisanje tehničkih članaka" — korisnik kaže „napiši mi jedan AI tehnički članak", a LLM ne zna koji da izabere. Rešenje: ili ih spoji, ili u description jasno povuci granicu — uz „pisanje AI članaka" dodaj „fokus na testove AI Coding alata i recenzije velikih modela", a uz „pisanje tehničkih članaka" dodaj „fokus na Java, baze podataka i druge tradicionalne tehnologije". Daj LLM-u osnov za odluku.
Četvrti potez, za osiguranje iskoristi disable-model-invocation. Neki skill treba da se okine samo kad korisnik sam ukuca slash komandu, a ne da ga LLM automatski poklopi. Takav skill u SKILL.md postavi disable-model-invocation na true i LLM ga neće samoinicijativno okinuti. Ovaj potez je posvećen suzbijanju lažnih okidanja skill-a.
Ako intervjuer dalje pita: „Šta kad broj skill-a i dalje raste?"
Reci mu — kratkoročno te drži kvalitet description-a, srednjoročno ide grupisanje skill-a: skill-ovi se sortiraju po poslovnom domenu i radi se dvofazno poklapanje. Ali na kraju krajeva, stopa pogađanja skill-a zavisi od samog LLM-a i njegove sposobnosti semantičkog razumevanja. Zato ne gomilaj skill-ove bezveze, dovoljno je koliko je dovoljno, i za svaki novi pitaj sebe: da li njegov description može jasno da se razdvoji od postojećih skill-ova?
Poslednja jedna izreka — opis mora biti jasan, odgovornost mora biti jedinstvena.
Da li si savladao ovo pitanje? Za još izvornih, detaljnih rastavljanja Agent pitanja sa intervju-a, lajkuj i prati
