![]()
Do ovog trenutka u tečaju napravili ste agente koji rade na vašem laptopu, unutar bilježnice, pokretani az login i nekoliko varijabli okoline. To je upravo pravi način za učenje. Nije pravi način za pokretanje agenta o kojem tisuće korisnika ovise u 3 ujutro.
Ova lekcija je o jazu između “radi na mom računalu” i “radi pouzdano i pristupačno u produkciji.” Taj jaz zatvaramo korištenjem Microsoft Foundryja i Microsoft Foundry Agent Service, i to tako da gradimo pravog korisničkog agenta za podršku koji ima alate, dohvat, memoriju, evaluaciju i nadzor.
Ova lekcija će obuhvatiti:
Nakon završetka ove lekcije, znat ćete kako:
Ova lekcija pretpostavlja da ste završili prethodne lekcije i da ste sigurni u:
Također će vam trebati:
az login).requirements.txt.Prototipni agent i produkcijski agent dijele isti osnovni ciklus — razmišljanje, pozivanje alata, odgovor. Ono što se mijenja je sve oko tog ciklusa. Model je možda 20% produkcijskog agenta; preostalih 80% je operativni kostur.
| Pitanje | Prototip | Produkcija |
|---|---|---|
| Hosting | Radi u vašoj bilježnici | Radi kao hostirani servis, verzioniran i uvodi se postepeno |
| Identitet | Vaš az login token |
Upravljani identitet sa ograničenim RBAC pristupom |
| Stanje | U memoriji, gubi se pri ponovnom pokretanju | Eksternalizirano (thread store, memory service) |
| Pogreške | Vidite traceback | Pokušaji ponovo, rezervne opcije, dead-letter, upozorenja |
| Trošak | “To su par centi” | Praćeno po zahtjevu, usmjereno, keširano, budžetirano |
| Kvaliteta | Provjeravate vizualno | Automatski evaluirano prije svakog izdanja |
| Povjerenje | Odobravate svaku radnju | Politika + čovjek u petlji za rizične radnje |
Imajte ovu tablicu na umu. Svaki odjeljak dolje odgovara jednom od ovih redaka.
Postoje tri obrasca koja ćete koristiti, često u kombinaciji.
Objekt agenta živi unutar vašeg procesa aplikacije. Vaš kod direktno poziva davatelja modela; krug razmišljanja radi u vašem servisu. Ovo je ono što su radile sve prethodne lekcije.
Agent je registriran kao resurs unutar Microsoft Foundryja. Foundry hosta krug razmišljanja, pohranjuje threadove, provodi sigurnost sadržaja i RBAC, i čini agenta vidljivim u Foundry portalu. Vaša aplikacija postaje tanka klijentica koja stvara threadove i čita odgovore.
Više agenata (i alata) komponirano je u graf s eksplicitnim upravljanjem tijekom — sekvencijalni koraci, grananje, čvorovi ljudskog odobrenja i trajne kontrolne točke koje mogu pauzirati i nastaviti. Ovo je Microsoft Agent Framework Workflows mogućnost primijenjena na razini implementacije.
flowchart TB
subgraph P1[Hostirano na klijentu]
A1[Proces vaše aplikacije] --> M1[Pružatelj modela]
end
subgraph P2[Hostirani agent]
A2[Tanki klijent] --> F2[Foundry usluga agenta]
F2 --> M2[Model + alati + spremište niti]
end
subgraph P3[Radni tijek agenta]
A3[Orkestrator] --> S1[Agent za trijažu]
S1 --> S2[Agent za rješavanje]
S2 --> H[Čvor za ljudsko odobrenje]
H --> S3[Agent za akcije]
end
Implementacija agenta nije jednokratni push. To je ciklus, i vrlo sliči ciklusu izdanja softvera jer upravo to i jest.
flowchart LR
Create[Kreiraj / Autor] --> Version[Verzija]
Version --> Evaluate[Ocijeni offline]
Evaluate -->|prolazi vrata| Deploy[Postavi hostirano]
Evaluate -->|ne prolazi vrata| Create
Deploy --> Observe[Promatraj online]
Observe --> Improve[Prikupljaj pogreške]
Improve --> Create
Deploy --> Retire[Umirovi staru verziju]
Ključna ideja, prenesena iz Lekcije 10: offline evaluacija je kapija, ne naknadna misao. Nova verzija agenta ne izlazi dok ne prođe vaše evaluacijske pragove. Online vidljivost potom vraća stvarne pogreške u vašu offline testnu skupinu. To je cijeli ciklus.
Skaliranje agenta razlikuje se od skaliranja stateless web API-ja, jer svaki zahtjev može pokrenuti više skupih poziva modelima i alatima. Četiri tehnike nose većinu opterećenja.
Rukovanje zahtjevima bez stanja. Nemojte držati stanje po korisniku u memoriji procesa. Pohranjujte threadove razgovora u Foundry thread store ili memorijski servis tako da svaka instanca može obraditi bilo koji zahtjev. To vam omogućuje horizontalno skaliranje — dodajte instance, bez prianjajućih sesija.
Usmjeravanje modela. Nije svaki zahtjev potreban najmoćniji (i najskuplji) model. Usmjerite jednostavne zahtjeve — klasifikaciju namjere, kratke faktografske odgovore — na mali, brzi model, a veliki model za stvarno rezoniranje rezervirajte. Foundryjev Model Router to može učiniti za vas, ili možete sami implementirati lagani klasifikator. Verziju radit ćete u laboratoriju.
Keširanje odgovora. Mnogi upiti za podršku su gotovo duplikati (“kako resetirati lozinku?”). Keširajte odgovore na često postavljana pitanja i poslužite ih bez poziva modelu. Čak i umjerena stopa zadovoljenja keša značajno smanjuje troškove i kašnjenje.
Konkurentnost i povratni pritisak (backpressure). Davatelji modela imaju ograničenja brzine. Ograničite konkurentnost, koristite ponovna pokušavanja s eksponencijalnim odgodama, i neuspjehe rješavajte graciozno (red čekanja s odgovorom “radimo na tome” bolji je od 500 greške).
flowchart LR
Q[Upit korisnika] --> C{Pronađeno u kešu?}
C -->|da| R[Vrati spremljeni odgovor]
C -->|ne| Router{Složenost?}
Router -->|jednostavno| SLM[Mali model]
Router -->|složeno| LLM[Veliki model]
SLM --> Out[Odgovor]
LLM --> Out
Out --> Store[Keš + trag]
Ne možete upravljati onim što ne vidite. Kao što je pokriveno u Lekciji 10, Microsoft Agent Framework emitira OpenTelemetry praćenja nativno — svaki poziv modelu, invokacija alata i korak orkestracije postaje djelokrug. U produkciji te djelokrugove izvozite u Microsoft Foundry (ili bilo koji OTel-kompatibilan sustav) da biste mogli:
from agent_framework.observability import get_tracer
tracer = get_tracer()
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("customer.tier", "enterprise")
span.set_attribute("routed.model", "gpt-4.1-mini")
# izvršenje agenta automatski se prati unutar ovog raspona
Atributi kao customer.tier i routed.model pretvaraju zid praćenja u pitanja na koja se može odgovoriti (“Jesu li enterprise korisnici prečesto usmjereni na mali model?”).
Troškovi u produkcijskim agentima uglavnom dolaze od tokena. Tri poluge, po utjecaju:
Evaluacijske kapije i kontrola troškova su ista disciplina promatrana iz dva kuta: evaluacija vam daje donju granicu kvalitete, a usmjeravanje i keširanje drže troškove što je moguće bliže toj donjoj granici.
Upravljanje. Hosted Agents nasljeđuju Foundryjev RBAC, sigurnost sadržaja i zapisivanje revizije. Dajte svakom agentu upravljani identitet s najmanjom potrebnom privilegijom — pristup samo za čitanje baze znanja, ograničen pristup API-ju za ticketiranje, i ništa više.
Čovjek u petlji. Neke radnje su prevažna da bi se automatizirale — izdavanje povrata novca, brisanje računa, eskalacija pravnom timu. Microsoft Agent Framework podržava alate koji zahtijevaju odobrenje: agent predlaže akciju, izvršavanje se pauzira, čovjek odobrava ili odbija, a radni tok se nastavlja. Primitivno ste vidjeli u Lekciji 6; ovdje ga implementirate.
MCP u produkciji. MCP omogućava agentu korištenje eksternih alata preko standardnog sučelja. U produkciji tretirajte svaki MCP server kao nepouzdanu granicu: fiksirajte verziju servera, pokrećite ga s ograničenim identitetom, validirajte njegove izlaze i nikada mu ne izlažite tajne podatke. MCP server je ovisnost, a ovisnosti se popravljaju, revidiraju i ograničavaju pristup.
flowchart TB
subgraph Dev[Arhitektura razvoja]
D1[Bilježnica] --> D2[Okvir agenta]
D2 --> D3[Pružatelj modela]
D2 --> D4[Lokalni alati]
end
subgraph Deploy[Arhitektura implementacije]
E1[CI cjevovod] --> E2[Ulaz za evaluaciju]
E2 -->|prođi| E3[Foundry servis za agente]
E3 --> E4[Verzijski hostirani agent]
end
subgraph Run[Arhitektura izvršnog okruženja]
F1[Klijentska aplikacija] --> F2[Hostirani agent]
F2 --> F3[Usmjerivač modela]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Servis memorije]
F2 --> F6[MCP alati]
F2 --> F7[OTel -> Foundry praćenje]
F2 --> F8[Ljudsko odobrenje]
end
Ta tri dijagrama — razvoj, implementacija, vrijeme izvođenja — prikazuju istog agenta u tri faze njegova života. Laboratorijski zadatak koji slijedi vodi vas kroz izradu.
Otvorite code_samples/16-python-agent-framework.ipynb i prođite ga od početka do kraja. Sastavit ćete Contoso agenta korisničke podrške sa svim produkcijskim funkcijama:
Bilježnica je organizirana tako da je svaki produkcijski aspekt zaseban, pokretni odjeljak. Srž je rukovatelj zahtjevima koji kombinira usmjeravanje i keširanje:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Poslužiti iz predmemorije kad god možemo.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Usmjeriti prema složenosti za kontrolu troškova.
model = "gpt-4.1-mini" if is_simple(query) else "gpt-4.1"
# 3. Pokrenuti agenta unutar traga za promatranje.
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("routed.model", model)
span.set_attribute("customer.id", customer_id)
response = await support_agent.run(query, model=model)
# 4. Predmemorirati i vratiti.
response_cache.set(normalize(query), response.text)
return response.text
Evaluacijska kapija koja čuva izdanje izgleda ovako:
async def evaluation_gate(agent, test_cases, threshold: float = 0.8) -> bool:
passed = 0
for case in test_cases:
result = await agent.run(case["input"])
if score_response(result.text, case["expected"]) >= 0.8:
passed += 1
pass_rate = passed / len(test_cases)
print(f"Evaluation pass rate: {pass_rate:.0%} (gate: {threshold:.0%})")
return pass_rate >= threshold # implementiraj samo ako prolaz na vratima uspije
Pročitajte svaku liniju — bilježnica drži primitivce namjerno male kako ništa ne bi bilo skriveno iza poziva frameworka.
Evaluacijska kapija gore radi offline na vašem objektu agenta. Kad je agent implementiran kao Hosted Agent, treba vam još jedna, još jeftinija provjera: odgovara li implementirana krajnja točka?
Implementacija “uspješno” samo dokazuje da je kontrolni sloj prihvatio definiciju — ne dokazuje da agent odgovara. Nedostajuća ovisnost, loše usmjeravanje modela ili istekla veza mogu ostaviti zelenu implementaciju koja ne vraća ništa. Smoke test to uhvati u nekoliko sekundi, pri svakoj implementaciji, bez troška pune evaluacije.
Ovo spremište donosi spremnu pipeline za smoke-testove izgrađenu na AI Smoke Test GitHub akciji:
tests/lesson-16-smoke-tests.json sadrži upite i asercije za Contoso agenta podrške (odgovori temeljeni na politici, dohvat narudžbe, ostajanje na temi i kontinuitet višekratnih okreta). Katalozi za agente iz drugih lekcija nalaze se uz njega — pogledajte tests/README.md..github/workflows/smoke-test.yml prijavljuje se pomoću Azure OIDC i šalje POST sa svakim upitom na Responses endpoint agenta, neuspjeh na bilo kojoj aserciji prekida posao.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
Pokrenite ga s kartice Actions kad je vaš agent implementiran, pružajući krajnju točku vašeg Foundry projekta i naziv agenta. Federirana identifikacija treba imati ulogu Azure AI User u okviru Foundry projekta. Zamislite slojeve kao piramidu: osnovni testovi (dostupan i odgovara li?) se izvode pri svakoj implementaciji, offline evaluacija (dovoljno dobra za slanje u produkciju?) prije promocije, a online evaluacija (kako se ponaša u stvarnom okruženju?) se izvodi kontinuirano.
Testirajte svoje razumijevanje prije nego što prijeđete na zadatak.
1. Otprilike koliki je udio proizvodnog agenta “model,” a što je ostatak?
2. Kada biste odabrali Hosted Agenta umjesto klijentski hostiranog agenta?
3. Zašto skalabilni agent mora biti bezstanja (stateless) u vlastitoj memoriji procesa?
4. Koji problem rješava usmjeravanje modela (model routing) i kako se odnosi na evaluaciju?
5. Što je “evaluation gate” i gdje se nalazi u životnom ciklusu?
6. Zašto se MCP poslužitelj mora tretirati kao nepouzdana granica u produkciji?
7. Koja pojedinačna promjena obično ima najveći utjecaj na trošak proizvodnog agenta i zašto?
8. Koju ulogu u promatranju (observability) imaju atributi spanova poput customer.tier i routed.model?
Uzmite agenta za korisničku podršku iz laboratorija i učvrstite ga za određeni scenarij: agent za podršku naplati pretplate za SaaS tvrtku.
Vaša predaja treba:
get_subscription_status, get_invoice i issue_credit (krediti iznad 50$ zahtijevaju potvrdu čovjeka).Napišite kratki odlomak (u markdown ćeliji) u kojem objašnjavate pravilo usmjeravanja modela koje ste odabrali i kako biste ga validirali na stvarnom prometu. Ne postoji jedan točan odgovor — ocjenjujete se prema tome jesu li produkcijski aspekti koherentno povezani.
U ovoj ste lekciji premjestili agenta iz prototipa u produkciju pomoću Microsoft Foundry:
Sljedeća lekcija ide suprotnim putem: umjesto skaliranja agenata u oblak, spustit ćete ih dolje na jedan razvojni stroj i pokretati ih u potpunosti lokalno.
Izrada agenata za upotrebu računala (CUA)
Napomena: Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa Co-op Translator. Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.