Prvi krug na Ali-i, ja sam samouvereno uzvraatio pitao: „Kažete da radite na Agent projektima — objasnite kako radite langchain, multi-agent, a2a i sve to?“ Intervjuer neprestano briše znoj.
Na stolu Starog Wang-a stajala je bočica Nongfu Spring, a pored nje još jedna Yibao.
Pre početka intervjua otvorio je Nongfu Spring, otpio gutljaj, zatim otvorio Yibao, otpio gutljaj i rekao mi: „Znaš li zašto pijem dve boce vode istovremeno?“
Bio sam potpuno zbunjen.
Stari Wang se nasmejao: „Zato što naš tim radi na Agent-ima, pa navikli smo sve da radimo paralelno.“
Nisam izdržao, zaista nisam izdržao — prvi put vidim tako smušenog intervjuača.
U redu, ovaj uvod ocenjujem sa maksimalnim brojem bodova.
Stari Wang je bacio pogled na moju biografiju: „PaiAgent, LangGraph4j + Spring AI, orkestracija radnih tokova… i još jedan projekt RAG baze znanja. Izgleda da si zaista ozbiljno radio sa Agentima.“

Rekao sam: „Wang brate, naravno; unapred sam proučavao vašu poziciju; ovaj put mora da uspe, ne sme da padne.“
- Pitanje o arhitekturi langchain-a
- Koliko načina razvoja agenta postoji
- Koje jezgrene module ima langchain
- Opiši multi-agent u tvom projektu
- Objasni protokol komunikacije između agenata
- Šta si radio sa mcp-om
- Da li poznaješ transformer
- Šta je mehanizam self-attention
- Danas postoji mnogo velikih modela; da li poznaješ njihovo poređenje, na primer koji je najbolji u generisanju zvuka i slično
- Koji editor koristiš
- Da li poznaješ unutrašnje algoritme modela
Zavežite pojaseve, krećemo. Tekst je opsežan; možete ga sačuvati za polako čitanje (i učenje napamet).
content
01. Pričajmo o arhitekturi LangChain-a
Stari Wang kreće direktno: „Da počnemo sa osnovama — poznaješ li arhitekturu LangChain-a? Kako je ukupno dizajnirana?“
Celokupno se može podeliti u tri sloja.

Na samom dnu je sloj osnovne apstrakcije koji definiše jezgarne interfejse poput LLM, ChatModel, Prompt, OutputParser. Sve gornje funkcionalnosti se grade oko tih interfejsa; promena modela znači samo promenu implementacione klase.
U sredini je sloj sposobnosti, koji obuhvata module poput Chain (lančano pozivanje), Agent (samostalno odlučivanje), Memory (memorija razgovora), Retriever (pretraživač). Chain povezuje više koraka, Agent na osnovu cilja sam bira alate, a Memory održava kontekst.
Na vrhu je sloj aplikacija: LangServe za deploy, LangSmith za otklanjanje grešaka i nadzor, LangGraph za kompleksnu orkestraciju grafa stanja.
Stari Wang je neprestano klimao glavom, izgledalo je da je veoma zadovoljan mojim odgovorom: „A kakav je odnos između LangChain-a i LangGraph-a?“
Rekao sam: „Chain u LangChain-u je linearan — A→B→C, jedan put do kraja. Ali stvarni Agent scenariji često zahtevaju uslovne grane, petlje i paralelno izvršavanje, što Chain ne može da reši.“
„LangGraph rešava taj problem. On radni tok nadograđuje sa lančanog na grafovski — čvorovi obrađuju korake, ivice mogu nositi uslove i podržavaju petlje. LangGraph4j koji koristimo u projektu je njegova Java verzija; na donjem nivou je StateGraph koji pokreće čitav tok izvršavanja preko stanja.“

Stari Wang nastavlja: „Zašto ste izabrali LangGraph4j umesto direktne Python verzije?“
Rekao sam: „Zato što je naš kompletni tehnološki stek Java — Spring Boot + Spring AI. U Java ekosistemu izbor za orkestraciju Agenata je mali, a LangGraph4j je trenutno najzreliji. Uz to se dobro uklapa sa Spring AI; ChatModel se može direktno ponovo iskoristiti.“
02. Koliko načina razvoja Agenta postoji
Stari Wang je otpio gutljaj Nongfu Spring-a i nastavio: „Ne ograničavajući se na LangChain — koje načine razvoja Agenta poznaješ?“
„Četiri; reci ću redom.“

Prvi je ReAct režim. Nakon što model dobije zadatak, naizmenično radi rezonovanje (Reasoning) i delovanje (Acting). Prvo razmisli šta treba uraditi u ovom koraku, zatim pozove konkretan alat da izvrši, preuzme rezultat, pa razmisli o sledećem koraku — i tako u krug dok zadatak ne bude završen. Agent u LangChain-u je upravo taj režim.
Drugi je Plan-and-Execute. Prvo modelu se jednim dahom postavi čitav plan izvršavanja, a zatim se korak po korak izvršava po planu. Prednost je što je teško skrenuti sa pravog puta. Mana je što, jednom kada je plan fiksiran, teško ga je prilagoditi.
Treći je Multi-Agent saradnja. Više Agenata, svaki sa svojom ulogom — jedan piše kod, jedan pregleda, jedan testira. Međusobno koordiniraju preko prosleđivanja poruka. AutoGen i CrewAI prate taj pristup.
Četvrti je orkestracija grafa stanja, odnosno ono što radi LangGraph. Developer nacrta radni tok kao graf, definiše čvorove, ivice i uslovne grane, a Agent se izvršava po putanji na grafu.
Stari Wang se naslonio: „Izabrali ste četvrti u projektu?“
„Da, jer naš scenario nije obično pitanje i odgovor, već višekoračni radni tok — korisnik na frontendu prevlači čvorove i povezuje ih, a backend izvršava po grafu. Potreban nam je kontrolisaniji put izvršavanja.“
03. Koje jezgrne module ima LangChain
(Inner OS: srećom što sam ranije dobro pripremio zadaću, inače bih na ova dva pitanja odmah pale.)
Stari Wang je slušao veoma pažljivo i nije me prekidao — zaista ljubazno.
Kada sam završio odgovor, nastavio je: „Jezgrne module LangChain-a, možeš li detaljnije?“
Ukupno ih je šest.

Models: objedinjena enkapsulacija velikih modela različitih provajdera. Bilo da je OpenAI, DeepSeek ili Tongyi Qianwen, interfejs za pozivanje sa gornjeg nivoa je ChatModel.call(). Iako u našem projektu nismo direktno koristili LangChain, pristup ChatModel-a u Spring AI-ju je isti.
Prompts: upravljanje promptovima. Podržava promenljive u šablonima, Few-Shot primere i dinamičko sklapanje. PromptTemplateService u našem PaiAgent-u radi upravo to; podržava sintaksu sa dvostrukim zagradama {{variable}} za zamenu promenljivih.
Indexes: indeks dokumenata, uglavnom za RAG. Obuhvata DocumentLoader, TextSplitter, VectorStore, Retriever. U našem projektu PaiSmart koristili smo Elasticsearch + Ali Embedding za hibridnu pretragu — BM25 ključne reči + KNN vektorsko vraćanje rezultata.
Memory: upravljanje memorijom. Kratkoročna memorija koristi BufferMemory za čuvanje nekoliko poslednjih krugova razgovora, a dugoročna memorija može da se poveže sa VectorStore-om za semantičku pretragu.
Chains: povezuje više koraka zajedno. Najčešće korišćen LLMChain je trokorakna veza Prompt + Model + OutputParser.
Agents: modul za samostalno odlučivanje. Model na osnovu trenutnog cilja sam bira koji alat poziva i koje parametre prosleđuje. To je jezgrni modul po kojem se LangChain razlikuje od običnog pozivanja LLM-a.

Stari Wang je ispoljavao zadovoljstvo, izgledalo je da prihvata moj odgovor.
Zato je nastavio: „Od tih šest modula, koliko ste koristili u projektu?“
„Sve osim Chains.“ Zastao sam. „Ali nismo koristili LangChain-ovu implementaciju, već Spring AI + sopstveno rešenje. Chains nismo koristili jer smo direktno prešli na StateGraph u LangGraph4j-u, koji je fleksibilniji od Chain-a.“
04. Opiši Multi-Agent u tvom projektu
Stari Wang je očigledno imao duboko istraživanje u vezi sa Agentima, pa je pitao o multi-agentu: „Imaš li Multi-Agent u projektu?“
Ponosno sam se nasmejao: „Wang brate, da ti iskreno kažem — strogo govoreći, PaiAgent nije Multi-Agent sistem u tradicionalnom smislu.“
Tradicionalni Multi-Agent je više nezavisnih Agenata koji svaki ima svoj cilj i memoriju i sarađuju preko prosleđivanja poruka; na primer u AutoGen-u jedan Coder Agent piše kod, jedan Critic Agent pregleda kod, sa povratnom vezom među njima.
PaiAgent radiorkestraciju radnih tokova. Više čvorova — LLM čvor, TTS čvor, Input/Output čvor — povezano je usmerenim grafom i izvršava se po topološkom redosledu. Svaki čvor nije nezavisni Agent, već jedna procesna karika u radnom toku.
Ali imamo jedan dizajn koji je duhovno srodan Multi-agent pristupu:EngineSelector dvomotorni routing.

Jednostavan linearni radni tok ide preko DAG motora (topološko sortiranje + detekcija DFS petlje), dok kompleksni radni tokovi sa uslovnim granama i petljama idu preko LangGraph motora. Oba motora dele isti set NodeExecutor izvršilaca, adaptiranih preko NodeAdapter-a.

Oči Starog Wang-a se razbiše: „Veoma si iskren. A ako bi ti zadao dizajn pravog Multi-Agent sistema, kako bi ga uradio?“
„Svaki Agent bi imao svoj nezavisan StateGraph, a Agenti bi komunicirali preko magistrale poruka.“ Što sam više pričao, bio sam samouvereniji. „Svaki Agent bi pretplatio na tipove poruka koje ga zanimaju; nakon obrade bi rezultat objavio na magistrali. Niska sprega, dodavanje novog Agenta ne utiče na ostale.“
Videvši da je Stari Wang u odličnom stanju, iskoristio sam priliku i uzvratio: „Wang brate, kako je kod vas na Ali-i strukturno rešen Multi-Agent u internim Agent projektima? Kako se sinhronizuje stanje među Agentima?“
Stari Wang se na trenutak zatekao, obrisao znoj sa čela: „Uh… naš tim je zasad uglavnom na jednom Agentu + pozivu alata; Multi-Agent je još u fazi istraživanja.“
(Inner OS: hehehe, Stari Wang, sada sam te uhvatio.)
05. Objasni protokol komunikacije između Agenata
Stari Wang je pročistio grlo i brzo vratio temu: „A koje protokole komunikacije između Agenata poznaješ?“
Trenutno je glavniA2A protokolkoga je predložio Google.

Njegova jezgrova ideja je da se svakom Agentu da „posetnica sposobnosti“ (Agent Card) koja u JSON formatu opisuje šta taj Agent radi, koje ulaze prihvata i šta vraća. Agenti komuniciraju preko standardnog HTTP API-ja, koriste Task kao jedinicu saradnje i podržavaju sinhroni i asinhroni režim.
A2A rešava problem interoperabilnosti Agenata između timova i organizacija. Na primer, Agent za porudžbine platforme za e-trgovinu i Agent za isporuku logističke kompanije moraju da sarađuju; oni mogu koristiti različite okvire i različite modele, ali ako poštuju A2A protokol mogu komunicirati.
Koja je razlika između MCP i A2A?
MCP rešava drugačiji problem — uglavnom omogućava Agentu da poziva eksterne alate i usluge.
MCP Server izlaže svoje sposobnosti preko JSON Scheme-e; Agent preko MCP Client-a otkriva i poziva te sposobnosti.
Razlika:A2A je Agent ka Agentu, MCP je Agent ka alatu. Jedan rešava saradnju Agenata, drugi proširenje sposobnosti Agenta.

Stari Wang je nagnuo glavu: „A šta si u stvarnom projektu koristio?“
„A2A nismo koristili direktno. Ali MCP smo implementirali u PaiSmart-u — enkapsulirali smo tri Servera: lokalne operacije nad fajlovima, generisanje PDF-a i upite bazi podataka.“
Zatim nisam izdržao da ne pitam još: „Wang brate, koju komunikaciju koristite internim Agentima kod vas? Sopstveni ili open source?“
Stari Wang je opet obrisao znoj: „Mi… koristimo interni RPC okvir, a i gledamo A2A.“
06. Šta si radio sa MCP-om
(Inner OS: posle ovih pet pitanja, čini se da je Wang brata zainetersovalo za moj projekat; ritam je dobar.)
Stari Wang je otvorio Yibao i otpio gutljaj: „Šta si konkretno radio sa MCP-om?“
„U PaiSmart RAG projektu enkapsulirali smo tri MCP Servera.“

Prvi je Server za operacije nad fajlovima. Lokalne operacije čitanja i pisanja fajlova, obilazak direktorijuma — sve se enkapsulira kao MCP alat. Kada Agent treba da pročita dokument koji je otpremio korisnik, to radi preko MCP-a, a ne direktno preko fajl sistema.
Drugi je Server za generisanje PDF-a. Agent rezultat analize pretvori u PDF izveštaj; poziva MCP alat i prosleđuje sadržaj i šablon, dok Serverski kraj pomoću iText-a renderuje PDF i čuva ga u MinIO.
Treći je Server za upite bazi podataka. Kada Agent treba da pretraži poslovne podatke, preko MCP-a pokreće SQL upit. Na Serverskom kraju smo takođe uradili detekciju SQL injekcije i ograničenje trajanja upita.
Prednost MCP-a je u tome što standardizuje sposobnosti alata.
Agent ne mora da zna da li je PDF generisan pomoću iText-a ili wkhtmltopdf-a; dovoljno je da pozna opis MCP alata, popuni parametre i pozove. Ako se donja implementacija promeni, kod Agenta se ne menja ništa.
Stari Wang se približio: „A kako ste rešili registraciju i otkrivanje MCP Servera?“
„Za sada je statička registracija preko konfiguracionog fajla; u MCP konfiguraciji se upišu adresa i port svakog Servera.“ Ne smem da paničim, ne smem da paničim; u ovom trenutku moj glavni pristup je brbljanje — oh, ne, samouverenost. „Nismo radili dinamičko otkrivanje; Servera ima samo tri, statička konfiguracija je dovoljna. Kasnije, ako ih bude više, možemo priključiti centar za registraciju; svaki Server pri pokretanju prijavljuje svoj Agent Card, a Agent iz centra preuzima listu dostupnih alata.“
07. Da li poznaješ Transformer
Stari Wang je iznenada promenio ton: „Poznaješ li Transformer arhitekturu?“
„Naravno da poznajem.“ Malo sam se ispravio. „Onaj rad Google-a iz 2017, ‚Attention Is All You Need‘; danas su gotovo svi veliki modeli zasnovani na njemu ili njegovoj varijanti.“

Celokupna struktura podeljena je na Encoder i Decoder.
Encoder je zadužen za razumevanje ulaza — kodira tekst u skup vektorskih reprezentacija. Decoder je zadužen za generisanje izlaza — izbacuje jedan token po jedan.
Pre Transformera ljudi su koristili RNN i LSTM; najveći problem je bio što pri obradi dugih sekvenci informacija slabi, a i ne može paralelno — mora se reč po reč sekvencijalno obraditi.
Transformer pomoću mehanizma Self-Attention optimizuje rekurzivnu strukturu; svaka pozicija može direktno da „vidi“ sve druge pozicije u sekvenci i može paralelno da se računa. To je osnova što može da obradi desetine hiljada, čak i stotine hiljada tokena konteksta.

Stari Wang se još zainteresovao i nastavio: „Pored Attention-a, koje još ključne komponente ima Transformer?“
„Tri.“
Poziciono kodiranje (Positional Encoding): Attention sam po sebi ne zna redosled reči; poziciono kodiranje svakom tokenu dodaje informaciju o poziciji. Originalni rad koristi sinusne i kosinusne funkcije; danas mnogi modeli koriste naučivo poziciono kodiranje ili RoPE (rotaciono poziciono kodiranje).
Layer Normalization: nakon svakog podsloja ide jedan LayerNorm koji stabilizuje proces obuke.
Feed-Forward Network: nakon svakog Attention sloja ide dvoslojna potpuno povezana mreža radi nelinearne transformacije. U stvari, veći deo parametara modela je koncentrisan ovde; udeo parametara u Attention sloju nije tako veliki.
08. Šta je mehanizam self-attention
Stari Wang mi nije dao da predahnem; odmah je nastavio: „Kako se konkretno računa Self-Attention?“
(Inner OS: hoće da mi Transformer pocepa od glave do pete.)
„Jezgro su tri matrice: Query, Key, Value.“

Ulazna sekvenca prolazi kroz tri različite linearne transformacije i dobija tri skupa vektora Q, K, V. Zatim se sa Q i K računa skalarni proizvod kao mera sličnosti, deli se sa √d (gde je d dimenzija vektora — sprečava prevelike vrednosti), prolazi kroz Softmax da bi se dobila težina attention-a, i konačno se vrši ponderisana suma sa V.
Attention(Q, K, V) = softmax(Q·K^T / √d) · VDa poredim — čitamo članak „Zašto svinje penju se na drvo?“. Kada pročitamo reč „ono“, naš mozak automatski traži na šta se to „ono“ odnosi — na tu krmaču. Self-Attention radi upravo to: svaki token „gleda“ sve druge tokene u sekvenci, izračunava sa kim je najbliži i zatim agregira relevantne informacije.

Stari Wang je klimnuo, a zatim iskopao: „A kako je sa Multi-Head Attention?“

„Jedan Head može da uhvati samo jedan obrazac veze.“ Rukama sam pokazao dva smera. „Na primer, jedan Head prati sintaktičke odnose — subjekat, predikat, objekat; drugi Head prati semantičke odnose — sinonimnost.“
Multi-Head paralelno pokreće više grupa Attention-a, pri čemu svaka grupa koristi različite Q, K, V matrice projekcije, a konačno se izlazi svih Head-ova spajaju.
Tako model istovremeno može da razume odnose između tokena iz više dimenzija; izražajna moć je mnogo veća nego kod jednog Attention-a.
09. Poređenje velikih modela
Stari Wang se protegnuo i promenio opušteniji položaj: „Danas ima toliko velikih modela; šta poznaješ od poređenja? Na primer, ko je najbolji u generisanju zvuka?“
„Ovo sam zaista proučavao.“ Došao sam do snage. „U PaiAgent-u smo priključili modele nekoliko provajdera; iskustvo izgaženo kroz zamke.“

Prvo o generisanju teksta.
Trenutno su najjači u celini Claude serija; među domaćim, DeepSeek V3 ima najbolji odnos cene i kvaliteta. Tongyi Qianwen Qwen3 se dobro pokazuje u kineskim scenarijima, posebno u razumevanju dugih tekstova. Programerska sposobnost GLM-5.1, naročito kod dugih zadataka, i dalje je top među domaćim modelima.
Što se tiče generisanja koda, Claude Opus i GPT-5.4 su prva liga.
Za generisanje zvuka — u TTS oblasti testirao sam nekoliko provajdera. Serija qwen-tts Ali BaiLian-a ima prirodniji ton; u PaiAgent-u koristimo qwen3-tts-flash.
Za generisanje slika, Nano Banana 2 je etalon. Domaći Tongyi Wanxiang i Jimeng (ByteDance) brzo napreduju.
10. Koji AI Coding alat koristiš?
Stari Wang iznenada menja ton: „Koji AI Coding alat koristiš u svakodnevnom razvoju?“
„Ranije mi je glavni bio IDEA, a sada su glavni Claude Code + Codex.“
„Čitanje koda, izmenu koda, pokretanje testova, pregled logova uglavnom prepustim Codex-u — velika količina, zasićena cena.“ Razmislio sam i dodao: „Ako mi treba istraživanje rešenja, ili kad Codex ne može da reši, prebacim se na Claude Code; trenutno koristim Opus 4.6.“
Ali IDEA nisam potpuno odbacio; debager i navigacija kroz kod i dalje su nezamenljivi. Sada ih koristim zajedno — Claude Code piše kod, IDEA radi otklanjanje grešaka.

11. Da li poznaješ unutrašnje algoritme modela
(Inner OS: sat je prošao; Stari Wang ima zaista dobru izdržljivost, još uvek može da pita; ja jedva izdržavam.)
Stari Wang je bacio pogled na sat i krenuo u završni nalet: „Poslednje pitanje — da li poznaješ algoritme obuke unutar modela?“
„Poznajem ih okvirno, nisam baš posebno duboko.“ Iskreno sam priznao.
Obuka velikog modela se grubo deli u tri faze.
Prva faza jepre-obuka (Pre-training). Koriste se ogromne količine tekstualnih podataka za samonadgledano učenje; cilj je predviđanje sledećeg tokena. Ova faza troši najviše računarske snage — bukvalno hiljade GPU-a koji rade mesecima. U ovoj fazi model uglavnom uči osnovnu strukturu jezika i znanje o svetu.
Druga faza jeSFT (Supervised Fine-Tuning). Sa ručno označenim parovima instrukcija-odgovor radi se nadgledano finopodešavanje, čime model uči da radi po instrukcijama. Ova faza od modela koji „ume da priča ali ne pogađa suštinu“ pravi asistenta koji „razume instrukcije i daje korisne odgovore“.
Treća faza jeRLHF (Reinforcement Learning from Human Feedback). Prvo se obuči jedan model nagrade (Reward Model) koji se ljudskim podacima o preferencama uči koji su odgovori dobri. Zatim se pomoću reinforcement learning-a (PPO algoritam) navodi glavni model da svoje odgovore približi pravcu u kom model nagrade daje visoke ocene. Ova faza čini izlaz modela u skladu sa ljudskim očekivanjima.

Stari Wang me gleda u oči: „Koja je razlika između RLHF i DPO?“
„RLHF zahteva posebno obučavanje modela nagrade, a zatim PPO za reinforcement learning; proces je prilično težak.“ Rukom sam pokazao pokret sečenja. „DPO direktno odstranjuje korak sa modelom nagrade; koristi parove podataka o preferencama da optimizuje model politike — dva koraka u jednom. Obuka je jednostavnija, stabilnija, a rezultat nije loš.“
Stari Wang je ćutao nekoliko sekundi; čini se da je oluja pitanja pri kraju.
„Dobro, imaš li nešto da pitaš mene?“
Čekao sam baš tu rečenicu.
„Wang brate, kažete da vaš tim radi na Agent projektu — pa da pitam: kako konkretno radite LangChain, Multi-Agent, A2A?“
Stari Wang je jedva izdržao da ne ispljunem vodu, opet je počeo da briše znoj: „Mi… hmm… koristimo uglavnom… Multi-Agent je još u POC fazi, A2A zaista još nismo priključili…“
Nasmejao sam se.
I Stari Wang se nasmejao, zavio obe boce vode: „Kada možeš da počneš sa radom?“
„Sledećeg ponedeljka; vratiću se i počastiti cimerice ručkom.“
