![]()
Do sada u tečaju ste izgradili agente koji rade na vašem prijenosnom računalu, unutar bilježnice, pokretani s az login i nekoliko varijabli okoline. To je upravo pravi način za učenje. To nije pravi način za pokretanje agenta na kojem tisuće korisnika ovise u 3 ujutro.
Ova lekcija se bavi prazninom između “radi na mom računalu” i “radi pouzdano i povoljno u produkciji.” Tu prazninu zatvaramo korištenjem Microsoft Foundry i Microsoft Foundry Agent Service, a radimo to izgradnjom pravog agenta za korisničku podršku koji ima alate, dohvat informacija, memoriju, evaluaciju i nadzor.
Ova će lekcija pokriti:
Nakon dovršetka ove lekcije, znat ćete kako:
Ova lekcija pretpostavlja da ste završili ranije lekcije i da ste upoznati s:
Također će vam trebati:
az login).requirements.txt.Prototipni agent i produkcijski agent dijele isti osnovni ciklus — rezonirati, pozvati alate, odgovoriti. Ono što se mijenja je sve što je umotano oko tog ciklusa. Model čini možda 20% produkcijskog agenta; ostalih 80% je operativni kostur.
| Briga | Prototip | Produkcija |
|---|---|---|
| Hosting | Radi u vašoj bilježnici | Radi kao hostirana usluga, verzionirana i izbačena postupno |
| Identitet | Vaš az login token |
Upravljani identitet s ograničenim RBAC-om |
| Stanje | U memoriji, gubi se pri ponovnom pokretanju | Eksternalizirano (spremište niti, memorijska usluga) |
| Kvar | Vidite trag pogreške | Pokušaji ponovo, zamjene, mrtva pošta, upozorenja |
| Trošak | “To je nekoliko centi” | Praćeno po zahtjevu, usmjereno, keširano, budžetirano |
| Kvaliteta | Provjeravate vizualno izlaz | Automatski se evaluira prije svakog izdanja |
| Povjerenje | Odobravate svaku radnju | Pravila + čovjek u petlji za rizične akcije |
Zapamtite ovu tablicu. Svaki dio ispod mapira se na jedan od ovih redaka.
Postoje tri obrasca koje ćete koristiti, često u kombinaciji.
Objekt agenta živi unutar vašeg procesa aplikacije. Vaš kod izravno poziva pružatelja modela; ciklus rezoniranja pokreće se u vašoj usluzi. To je ono što su radile sve prethodne lekcije.
Agent je registriran kao resurs u Microsoft Foundry. Foundry hostira ciklus rezoniranja, pohranjuje niti, provodi sigurnost sadržaja i RBAC, te agent postaje vidljiv u Foundry portalu. Vaša aplikacija postaje lagani klijent koji stvara niti i čita odgovore.
Više agenata (i alata) kompozitno se povezuje u graf s eksplicitnim tijekovima kontrole — sekvencijalni koraci, grananje, čvorovi s ljudskim odobravanjem i trajne kontrolne točke koje mogu pauzirati i nastaviti. Ovo je značajka Microsoft Agent Framework Workflows primijenjena na razini implementacije.
flowchart TB
subgraph P1[Client-Hosted]
A1[Your App Process] --> M1[Model Provider]
end
subgraph P2[Hosted Agent]
A2[Thin Client] --> F2[Foundry Agent Service]
F2 --> M2[Model + Tools + Thread Store]
end
subgraph P3[Agent Workflow]
A3[Orchestrator] --> S1[Triage Agent]
S1 --> S2[Resolver Agent]
S2 --> H[Human Approval Node]
H --> S3[Action Agent]
end
Implementacija agenta nije jednokratni push. To je ciklus, i izgleda vrlo slično ciklusu izdanja softvera jer to upravo i jest.
flowchart LR
Create[Create / Author] --> Version[Version]
Version --> Evaluate[Evaluate offline]
Evaluate -->|passes gate| Deploy[Deploy hosted]
Evaluate -->|fails gate| Create
Deploy --> Observe[Observe online]
Observe --> Improve[Collect failures]
Improve --> Create
Deploy --> Retire[Retire old version]
Ključna ideja, prenesena iz Lekcije 10: offline evaluacija je kapija, ne naknadna misao. Nova verzija agenta ne ide u distribuciju ako ne prođe vaše evaluacijske pragove. Online opažljivost tada vraća stvarne pogreške unutar vašeg offline testnog skupa. To je cijeli ciklus.
Skaliranje agenta razlikuje se od skaliranja web API-ja bez stanja, jer svaki zahtjev može pokrenuti više skupih poziva modela i alata. Četiri tehnike podnose većinu opterećenja.
Rad s bezstanjskim zahtjevima. Nemojte držati per-korisničko stanje u memoriji procesa. Spremite niti razgovora u Foundry thread store ili memorijsku uslugu tako da bilo koja instanca može obraditi bilo koji zahtjev. To vam omogućuje horizontalno skaliranje – dodajte instance, nema povezanih sesija.
Usmjeravanje modela. Nije svaki zahtjev potreban za vašim najmoćnijim (i najskupljim) modelom. Usmjerite jednostavne zahtjeve — klasifikaciju namjere, kratke činjenične odgovore — na mali, brz model, i rezervirajte veliki model za stvarno rezoniranje. Foundryjev Model Router može to učiniti za vas ili možete sami implementirati lagani klasifikator. Izgradit ćete DIY verziju u laboratoriju.
Keširanje odgovora. Mnogi upiti za podršku su gotovo duplikati (“kako resetirati lozinku?”). Keširajte odgovore na česta pitanja i poslužite ih bez da udarate model uopće. Čak i umjeren postotak pogodaka u kešu značajno smanjuje troškove i latenciju.
Istovremenost i pritisak pozadinske mreže (backpressure). Pružatelji modela imaju ograničenja brzine. Ograničite svoju istovremenost, koristite ponovne pokušaje s eksponencijalnim odmakom i greške tretirajte graciozno (queued odgovor “radimo na tome” bolji je od 500).
flowchart LR
Q[User query] --> C{Cache hit?}
C -->|yes| R[Return cached answer]
C -->|no| Router{Complexity?}
Router -->|simple| SLM[Small model]
Router -->|complex| LLM[Large model]
SLM --> Out[Response]
LLM --> Out
Out --> Store[Cache + trace]
Ne možete upravljati onim što ne možete vidjeti. Kao što je pokriveno u Lekciji 10, Microsoft Agent Framework izvodi OpenTelemetry tragove nativno — svaki poziv modela, poziv alata i korak orkestracije postaju spanovi. U produkciji te spanove izvozite u Microsoft Foundry (ili bilo koji kompatibilni OTel backend) tako da možete:
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-5-nano")
# agent execution is traced automatically inside this span
Atributi poput customer.tier i routed.model ono su što pretvara zid tragova u pitanja na koja se može odgovoriti (“doduše li korporativni korisnici prečesto na mali model?”).
Trošak u produkcijskim agentima dominiraju tokeni. Tri poluge, po redu utjecaja:
Evaluacijske kapije i kontrola troškova su ista disciplina promatrana iz dva kuta: evaluacija vam daje kvalitativni minimum, usmjeravanje i keširanje vas drže što bliže troškovnom minimumu.
Upravljanje (Governance). Hostirani agenti nasljeđuju Foundryjevu RBAC, sigurnost sadržaja i zapisivanje audita. Svakom agentu dajte upravljani identitet s najmanjim potrebnim privilegijama — pristup samo za čitanje baze znanja, ograničeni pristup API-ju za tikete, ništa više.
Čovjek u petlji. Neke akcije su previše bitne 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šenje se pauzira, čovjek odobrava ili odbija, a tijek rada se nastavlja. Vidjeli ste primitiv u Lekciji 6; ovdje ga implementirate.
MCP u produkciji. MCP omogućuje vašem agentu da koristi vanjske alate kroz standardizirani sučelje. U produkciji tretirajte svaki MCP server kao nepouzdan rub: fiksirajte verziju servera, pokrećite ga s ograničenim identitetom, provjerite njegove izlaze i nikad mu ne izlažite tajne. MCP server je ovisnost, a ovisnosti se održavaju, revidiraju i limitiraju.
flowchart TB
subgraph Dev[Development Architecture]
D1[Notebook] --> D2[Agent Framework]
D2 --> D3[Model Provider]
D2 --> D4[Local tools]
end
subgraph Deploy[Deployment Architecture]
E1[CI pipeline] --> E2[Evaluation gate]
E2 -->|pass| E3[Foundry Agent Service]
E3 --> E4[Versioned hosted agent]
end
subgraph Run[Runtime Architecture]
F1[Client app] --> F2[Hosted agent]
F2 --> F3[Model Router]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Memory service]
F2 --> F6[MCP tools]
F2 --> F7[OTel -> Foundry tracing]
F2 --> F8[Human approval]
end
Ta tri dijagrama — razvoj, implementacija, izvršavanje — isti su agent u tri faze svog života. Laboratorij koji slijedi vodi vas kroz njegovu izgradnju.
Otvorite code_samples/16-python-agent-framework.ipynb i prođite kroz njega do kraja. Sastavit ćete Contoso agenta korisničke podrške sa svim produkcijskim značajkama:
Bilježnica je organizirana tako da je svaka produkcijska briga zaseban, pokretni odjeljak. Srž je rukovatelj zahtjevima s usmjeravanjem i keširanjem:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Serve from cache when we can.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Route by complexity to control cost.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Run the agent inside a trace span for observability.
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. Cache and return.
response_cache.set(normalize(query), response.text)
return response.text
Evaluacijska kapija koja štiti 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 # only deploy if the gate passes
Pročitajte svaki redak — bilježnica namjerno drži primitivce male tako da ništa nije skriveno iza poziva okvira.
Gore navedena evaluacijska kapija se izvršava offline nad vašim objektom agenta. Kad je agent implementiran kao Hostirani agent, potrebno vam je još jedna, još jeftinija provjera: odgovara li stvarno endpoint?
“Uspješno” implementiranje samo dokazuje da je kontrolna ravnina prihvatila 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 otkriva u sekundama, pri svakom izdanju, bez troška pune evaluacije.
Ovaj repozitorij dolazi s gotovim pipelineom za smoke testove izgrađenim na AI Smoke Test GitHub Action:
tests/lesson-16-smoke-tests.json sadrži upite i tvrdnje za Contoso podršku agenta (odgovore na politika pitanja zakotvljene u podacima, pretraživanje narudžbe, ostanak na temi i kontinuitet niza). Katalozi za agente iz drugih lekcija stoje uz njega — vidi tests/README.md..github/workflows/smoke-test.yml prijavljuje se s Azure OIDC i POST-a svaki upit na endpoint za Odgovore agenta, prekidajući zadatak pri svakoj promašaj tvrdnje.- 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 endpoint vašeg Foundry projekta i ime agenta. Federirana identitet treba imati ulogu Azure AI User u opsegu Foundry projekta. Zamislite slojeve kao piramidu: testovi dima (dostupni i odgovaraju?) se izvode pri svakoj implementaciji, offline evaluacija (dovoljno dobra za isporuku?) se izvodi prije promocije, a online evaluacija (kako se ponaša u stvarnom okruženju?) se izvodi kontinuirano.
Testirajte svoje razumijevanje prije prelaska na zadatak.
1. Otprilike koliko proizvodnog agenta je „model“, a što je ostatak?
2. Kada biste odabrali Hosted Agenta umjesto agenta koji se hostira na klijentu?
3. Zašto skalabilni agent mora biti bezstanje u vlastitoj memoriji procesa?
4. Koji problem rješava model routing i kako se odnosi na evaluaciju?
5. Što je „evaluation gate“ i gdje se nalazi u životnom ciklusu?
6. Zašto MCP server treba smatrati nepouzdanom granicom u produkciji?
7. Koja pojedinačna promjena obično ima najveći utjecaj na trošak proizvodnog agenta i zašto?
8. Koju ulogu atributi spanova poput customer.tier i routed.model imaju u promatranju?
Uzmite agenta za korisničku podršku iz laboratorija i prilagodite ga za specifični scenarij: agent za podršku naplati pretplate za SaaS tvrtku.
Vaša predaja bi trebala:
get_subscription_status, get_invoice, i issue_credit (krediti iznad 50$ zahtijevaju odobrenje čovjeka).Napišite kratak odlomak (u markdown ćeliji) objašnjavajući koju ste pravilo za usmjeravanje modela odabrali i kako biste ga validirali stvarnim prometom. Ne postoji jedini točan odgovor — procjenjuje se jeste li povezali proizvodne brige koherentno.
U ovoj lekciji ste prebacili agenta iz prototipa u produkciju s Microsoft Foundry:
Sljedeća lekcija ide suprotnim putem: umjesto skaliranja agenata u oblak, spustit ćete ih dolje na jedan razvojni stroj i pokrenuti ih lokalno.
Izgradnja agenata za korištenje 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.