![]()
Do sada u tečaju ste izgradili agente koji se izvršavaju na vašem laptopu, unutar bilježnice, pokretani az login i nekoliko varijabli okoline. To je točno pravi način za učenje. Nije to pravi način za pokretanje agenta o kojem tisuće korisnika ovise u 3 sata ujutro.
Ova lekcija govori o jazu između “radi na mom računalu” i “radi pouzdano i pristupačno u produkciji.” Taj jaz zatvaramo koristeći Microsoft Foundry i Microsoft Foundry Agent Service, i činimo to izradom pravog agenta za korisničku podršku koji ima alate, dohvat, memoriju, evaluaciju i nadzor.
Ova lekcija će obuhvatiti:
Nakon dovršetka ove lekcije znat ćete kako:
Ova lekcija pretpostavlja da ste završili ranije lekcije i da ste upoznati s:
Također ćete trebati:
az login).requirements.txt.Prototipni agent i produkcijski agent dijele istu osnovnu petlju — razmišljanje, pozivanje alata, odgovor. Ono što se mijenja jest sve što je omotano oko te petlje. Model je možda 20% produkcijskog agenta; ostalih 80% je operativni kostur.
| Pitanje | Prototip | Produkcija |
|---|---|---|
| Hostiranje | Radi u vašoj bilježnici | Radi kao hostirana usluga, verzionirana i rasprostranjena |
| Identitet | Vaš az login token |
Upravljani identitet s ograničenim RBAC pristupom |
| Stanje | U memoriji, gubi se pri ponovnom pokretanju | Eksternalizirano (spremište niti, memorijska usluga) |
| Kvar | Vidite trag pogreške | Pokušaji ponovo, rezervne opcije, dead-letter, upozorenja |
| Trošak | “To je nekoliko centi” | Praćeno po zahtjevu, usmjereno, keširano, u proračunu |
| Kvaliteta | Okom kontrolirate izlaz | Automatski evaluirano prije svakog izdanja |
| Povjerenje | Odobravate svaku radnju | Pravila + ljudski nadzor za rizične radnje |
Imajte ovu tablicu na umu. Svaki odjeljak u nastavku odgovara jednom od ovih redaka.
Postoje tri obrasca koja ćete koristiti, često u kombinaciji.
Objekt agenta živi unutar vašeg procesa aplikacije. Vaš kod izravno poziva pružatelja modela; petlja razmišljanja izvršava se u vašoj usluzi. Ovo je ono što je prethodna lekcija radila.
Agent je registriran kao resurs u Microsoft Foundry. Foundry hostira petlju razmišljanja, pohranjuje niti, provodi sigurnost sadržaja i RBAC, te čini agenta vidljivim u Foundry portalu. Vaša aplikacija postaje tanka klijentska aplikacija koja stvara niti i čita odgovore.
Više agenata (i alata) sastavljeno je u graf s eksplicitnim tijekovima kontrole — sekvencijalni koraci, grananje, čvorovi ljudskog odobrenja i trajne kontrolne točke koje se mogu pauzirati i nastaviti. Ovo je Microsoft Agent Framework Workflows funkcionalnost primijenjena na razinu implementacije.
flowchart TB
subgraph P1[Klijent u Hostingu]
A1[Proces Vaše Aplikacije] --> M1[Dobavljač Modela]
end
subgraph P2[Hostirani Agent]
A2[Tanki Klijent] --> F2[Usluga Foundry Agenta]
F2 --> M2[Model + Alati + Pohrana Threada]
end
subgraph P3[Radni Tijek Agenta]
A3[Orkestrator] --> S1[Agent za Triage]
S1 --> S2[Agent za Rješavanje]
S2 --> H[Čvor za Lidsko Odobrenje]
H --> S3[Agent za Akcije]
end
Implementacija agenta nije jednokratno push slanje. To je petlja, koja izgleda poput ciklusa izdanja softvera jer je upravo to.
flowchart LR
Create[Stvori / Autor] --> Version[Verzija]
Version --> Evaluate[Procijeni offline]
Evaluate -->|prolazi vrata| Deploy[Postavi na host]
Evaluate -->|ne prolazi vrata| Create
Deploy --> Observe[Promatraj online]
Observe --> Improve[Prikupi neuspjehe]
Improve --> Create
Deploy --> Retire[Povuci staru verziju]
Ključna ideja, prenesena iz Lekcije 10: offline evaluacija je kapija, ne sporedna misao. Nova verzija agenta se ne objavljuje osim ako ne prođe vaše evaluacijske pragove. Online nadzor zatim vraća stvarne pogreške natrag u vaš offline testni skup. To je cijela petlja.
Skaliranje agenta razlikuje se od skaliranja bezdržavnog web API-ja, jer svaki zahtjev može pokrenuti višestruke skupe pozive modela i alata. Četiri tehnike nose najveći teret.
Bezdržavna obrada zahtjeva. Nemojte držati niti jedno korisničko stanje u memoriji vašeg procesa. Pohranite niti razgovora u Foundry thread store ili memorijsku uslugu tako da svaki primjerak može obraditi bilo koji zahtjev. Ovo vam omogućuje horizontalno skaliranje — dodajte primjerke, bez lijepljenja sesija.
Usmjeravanje modela. Ne treba svaki zahtjev vaš najsposobniji (i najskuplji) model. Usmjerite jednostavne zahtjeve — klasifikaciju namjere, kratke činjenične odgovore — na mali, brzi model i rezervirajte veliki model za pravi razlog. Foundry Model Router može to napraviti za vas, ili možete sami implementirati lagani klasifikator. Izgradit ćete verziju “uradi sam” u laboratoriju.
Keširanje odgovora. Mnogi upiti za podršku su gotovo-duplicirani (“kako resetiram lozinku?”). Keširajte odgovore na često postavljana pitanja i pružajte ih bez poziva modela uopće. Čak i umjerena stopa uspješnog keširanja značajno smanjuje troškove i latenciju.
Konkurencija i povratni tlak. Pružatelji modela imaju ograničenja stope. Ograničite konkurenciju, koristite pokušaje s eksponencijalnim odmakom i propustite graciozno (odgovor u redu “radimo na tome” u redu je bolje od 500 pogreške).
flowchart LR
Q[Upit korisnika] --> C{Pogodak u predmemoriji?}
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[Predmemorija + trag]
Ne možete upravljati onim što ne možete vidjeti. Kao što je opisano u Lekciji 10, Microsoft Agent Framework izvorno emitira OpenTelemetry tragove — svaki poziv modela, poziv alata i korak orkestracije postaju spanovi. U produkciji izvozite te spanove u Microsoft Foundry (ili bilo koju OTel-kompatibilnu pozadinu) 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")
# izvršenje agenta se automatski prati unutar ovog raspona
Atributi poput customer.tier i routed.model pretvaraju masu tragova u pitanja na koja se može odgovoriti (“daju li se poduzećnim korisnicima prečesto male modele?”).
Troškovi u produkcijskim agentima dominiraju tokenima. Tri poluge, po utjecaju:
Evaluacijske kapije i kontrola troškova su ista disciplina gledana iz dva kuta: evaluacija vam kaže donju granicu kvalitete, usmjeravanje i keširanje vas drže što bliže trošku te granice.
Upravljanje. Hostirani agenti nasljeđuju Foundryjev RBAC, sigurnost sadržaja i zapisnik revizije. Svakom agentu dajte upravljani identitet s najmanjim potrebnim privilegijama — pristup samo za čitanje bazi znanja, ograničen pristup API-ju za ticketing, ništa više.
Ljudski nadzor (human-in-the-loop). Neke radnje su suviše važne da bi se automatizirale izravno — izdavanje povrata, brisanje računa, eskalacija pravnom timu. Microsoft Agent Framework podržava alate koji zahtijevaju odobrenje: agent predlaže radnju, izvršenje se pauzira, čovjek odobrava ili odbija, i 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 standardni sučelje. U produkciji tretirajte svaki MCP server kao nepouzdanu granicu: učvrstite verziju servera, pokrećite ga s ograničenim identitetom, validirajte njegove izlaze i nikad mu ne otkrivajte tajne. MCP server je ovisnost, i ovisnosti se zakrpljuju, pregledavaju i ograničavaju.
flowchart TB
subgraph Dev[Arhitektura razvoja]
D1[Bilježnica] --> D2[Okvir za agente]
D2 --> D3[Pružatelj modela]
D2 --> D4[Lokalni alati]
end
subgraph Deploy[Arhitektura implementacije]
E1[CI pipeline] --> E2[Ocjenjivačka kapija]
E2 -->|prođi| E3[Foundry usluga za agente]
E3 --> E4[Verzijsko hostani agent]
end
subgraph Run[Arhitektura izvršnog okruženja]
F1[Klijentska aplikacija] --> F2[Hostani agent]
F2 --> F3[Usmjerivač modela]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Usluga memorije]
F2 --> F6[MCP alati]
F2 --> F7[OTel -> Foundry praćenje]
F2 --> F8[Ljudsko odobrenje]
end
Ta tri dijagrama — razvoj, implementacija, runtime — predstavljaju istog agenta u tri faze njegova života. Sljedeća laboratorijska vježba vodi vas kroz njegovo izgradnju.
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 proizvodnim zahtjevima:
Bilježnica je organizirana tako da je svaki proizvodni zahtjev samostalni, izvršivi odjeljak. Srž je rukovatelj zahtjeva s usmjeravanjem i keširanjem:
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. Usmjeravati prema složenosti radi kontrole troškova.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Pokrenuti agenta unutar traga radi promatranja.
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 vrata uspije
Pročitajte svaki redak — bilježnica održava primitivce namjerno malima kako ništa ne bi bilo skriveno iza poziva okvira.
Evaluacijska kapija gore se pokreće offline prema vašem agent objektu. Kada se agent implementira kao Hostirani agent, potrebna vam je još jedna, još jeftinija provjera: odgovara li implementirana krajnja točka stvarno?
Implementacija “uspješno” dokazuje samo da je kontrolna ravnina prihvatila definiciju — ne dokazuje da agent odgovara. Nedostajuća ovisnost, pogrešno usmjeravanje modela ili istekla veza mogu ostaviti zelenu implementaciju koja ne vraća ništa. Smoke test to hvata u sekundama, pri svakoj implementaciji, bez troškova pune evaluacije.
Ovaj repozitorij nudi spreman za uporabu smoke-test pipeline izgrađen na GitHub akciji AI Smoke Test:
tests/lesson-16-smoke-tests.json sadrži upite i tvrdnje za Contoso agenta podrške (odgovori temeljeni na pravilima, provjera narudžbe, ostanak na temi i kontinuitet niti na više okretaja). Kataloge za agente drugih lekcija nalaze se uz njega — vidi tests/README.md..github/workflows/smoke-test.yml prijavljuje se s Azure OIDC te šalje svaki upit na agentovu krajnju točku Odgovori, i prekida posao na svaku promašenu tvrdnju.- 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 nakon što je vaš agent postavljen, unoseći vašu Foundry točku kraja projekta i naziv agenta. Federirana identitet treba imati ulogu Azure AI User na opsegu Foundry projekta. Zamislite slojeve kao piramidu: testovi dima (dostupno i odgovara?) pokreću se pri svakoj implementaciji, offline evaluacija (dovoljno dobra za isporuku?) izvršava se prije promocije, a online evaluacija (kako se ponaša u stvarnom okruženju?) radi kontinuirano.
Testirajte svoje razumijevanje prije nego što prijeđete na zadatak.
1. Otprilike koliko proizvodnog agenta čini “model,” i što je ostatak?
2. Kada biste odabrali Hosted Agent umjesto agenta hostanog preko klijenta?
3. Zašto skalabilni agent mora biti bezstanja u svojoj vlastitoj memoriji procesa?
4. Koji problem rješava usmjeravanje modela i kako je povezano s evaluacijom?
5. Što je “evaluacijska brava” i gdje se nalazi u životnom ciklusu?
6. Zašto MCP poslužitelj u produkciji treba tretirati kao nepouzdanu granicu?
7. Koja pojedinačna promjena obično ima najveći utjecaj na troškove proizvodnog agenta i zašto?
8. Koju ulogu atributi spreza poput customer.tier i routed.model igraju u promatranju?
Uzmite agenta za korisničku podršku iz laboratorija i učvrstite ga za specifični 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 ljudsko odobrenje).Napišite kratak odlomak (u markdown ćeliji) koji objašnjava koju ste pravilo model-usmjeravanja odabrali i kako biste ga validirali s pravim prometom. Nema jedinstvenog ispravnog odgovora — ocjenjuje se jeste li povezali produkcijske aspekte koherentno.
U ovoj lekciji ste premjestili agenta iz prototipa u produkciju s Microsoft Foundry:
Sljedeća lekcija vodi suprotnim putem: umjesto skaliranja agenata u oblak, spustit ćete ih dolje na jedan razvojni stroj i pokretati ih u potpunosti 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.