![]()
Iki šiol šiame kurse jūs sukūrėte agentus, kurie veikia jūsų nešiojamajame kompiuteryje, užrašų knygelėje, valdomi per az login ir keletą aplinkos kintamųjų. Tai būtent tinkamas būdas mokytis. Tačiau tai nėra tinkamas būdas paleisti agentą, nuo kurio 3 val. nakties priklauso tūkstančiai klientų.
Ši pamoka yra apie skirtumą tarp “veikia mano kompiuteryje” ir “veikia patikimai ir ekonomiškai gamyboje.” Tą skirtumą užtverdami naudodami Microsoft Foundry ir Microsoft Foundry Agent Service. Mes tai darome kurdami tikrą klientų aptarnavimo agentą, kuriame yra įrankiai, informacijos paieška, atmintis, vertinimas ir stebėjimas.
Ši pamoka apima:
Baigę šią pamoką sugebėsite:
Ši pamoka daro prielaidą, kad esate baigę ankstesnes pamokas ir gerai mokate:
Taip pat reikės:
az login).requirements.txt.Prototipo agentas ir gamybinis agentas dalijasi ta pačia pagrindine kilpa — mąstyti, kviesti įrankius, atsakyti. Kas keičiasi, yra visa tai, kas supa šią kilpą. Modelis sudaro galbūt 20% gamybinio agento; likę 80% yra operacinė struktūra.
| Sritis | Prototipas | Gamyba |
|---|---|---|
| Hositinimas | Veikia jūsų užrašų knygelėje | Veikia kaip hositinama paslauga, versijuojama ir diegiama |
| Tapatybė | Jūsų az login tokenas |
Valdoma tapatybė su ribotu RBAC |
| Būsena | Atmintyje, prarandama perkrovus | Išorinė saugykla (siūlų saugykla, atminties tarnyba) |
| Klaidos | Matote klaidos trasą | Pakartotiniai bandymai, atsarginiai variantai, neapdoroti pranešimai, įspėjimai |
| Išlaidos | “Tai keli centai” | Sekamos pagal užklausą, nukreipiamos, talpinamos, planuojamos |
| Kokybė | Žiūrite rezultatą akimis | Vertinama automatiškai prieš kiekvieną išleidimą |
| Pasitikėjimas | Patvirtinate kiekvieną veiksmą | Politika + žmogaus patvirtinimas rizikingiems veiksmams |
Atminkite šią lentelę. Kiekviena žemiau esanti dalis atitinka šias eilutes.
Yra trys modeliai, kuriuos naudosite, dažnai derindami.
Agentas egzistuoja jūsų programos procese. Jūsų kodas tiesiogiai kviečia modelio tiekėją; mąstymo kilpa veikia jūsų paslaugoje. Tai darė kiekviena ankstesnė pamoka.
Agentas užregistruotas kaip resursas Microsoft Foundry. Foundry palaiko mąstymo kilpą, saugo siūlus, užtikrina turinio saugumą ir RBAC, leidžia agentą matyti Foundry portale. Jūsų programa tampa plonu klientu, kuris kuria siūlus ir skaito atsakymus.
Keli agentai (ir įrankiai) sudedami į grafą su aiškia valdymo eiga — nuoseklūs žingsniai, šakos, žmonių patvirtinimo mazgai ir patvarūs kontroliniai taškai, kuriuos galima pristabdyti ir atnaujinti. Tai yra Microsoft Agent Framework Workflows galimybė, taikoma diegimo mastu.
flowchart TB
subgraph P1[Kliento talpinamas]
A1[Jūsų programos procesas] --> M1[Modelio tiekėjas]
end
subgraph P2[Talpinamas agentas]
A2[Plonas klientas] --> F2[Foundry agento paslauga]
F2 --> M2[Modelis + Įrankiai + Gijų saugykla]
end
subgraph P3[Agento darbo eiga]
A3[Orkestruotojas] --> S1[Triažo agentas]
S1 --> S2[Sprendimų agentas]
S2 --> H[Žmogaus patvirtinimo mazgas]
H --> S3[Veiksmų agentas]
end
Agento diegimas nėra vienkartinis push. Tai kilpa, kuri labai primena programinės įrangos išleidimo ciklą, nes iš tikrųjų tai ir yra.
flowchart LR
Create[Kurti / Autorius] --> Version[Versija]
Version --> Evaluate[Vertinti neprisijungus]
Evaluate -->|praeina vartus| Deploy[Diegti talpinamą]
Evaluate -->|nepraeina vartų| Create
Deploy --> Observe[Stebėti internetu]
Observe --> Improve[Rinkti klaidas]
Improve --> Create
Deploy --> Retire[Atšaukti seną versiją]
Pagrindinė idėja, perimta iš 10 pamokos: neprisijungęs vertinimas yra vartai, o ne požiūris “vėliau”. Nauja agento versija neišleidžiama, kol neperžengia jūsų vertinimo slenksčių. Online stebėjimas sugrąžina realius klaidų duomenis į jūsų neprisijungusių testų rinkinį. Tai visa kilpa.
Agentų masto keitimas skiriasi nuo bevaldinės web API masto keitimo, nes kiekviena užklausa gali suaktyvinti kelis brangius modelio ir įrankių kvietimus. Keturios technikos neša daugumą apkrovos.
Bevaldinis užklausų apdorojimas. Neišlaikykite būsenos apie vartotoją savo proceso atmintyje. Išsaugokite pokalbių siūlus Foundry siūlų saugykloje arba atminties tarnyboje, kad bet kuri egzempliorius galėtų apdoroti bet kurią užklausą. Tai leidžia horizontaliai plėsti — pridėti egzempliorių, be lipnių sesijų.
Modelio nukreipimas. Ne kiekviena užklausa reikalauja jūsų pajėgiausio (ir brangiausio) modelio. Nukreipkite paprastas užklausas — ketinimų klasifikavimą, trumpus faktinius atsakymus — į mažą ir greitą modelį, o didelį modelį rezervuokite tik tikrajai mąstysenai. Foundry modelių nukreipėjas gali tai atlikti už jus, arba pats galite sukurti lengvą klasifikatorių. Jūs kūrsite savo versiją laboratorijoje.
Atsakymų talpyklavimas. Daugelis pagalbos užklausų yra beveik dubliuotos („kaip atstatyti slaptažodį?“). Talpinkite dažnai užduodamus klausimus ir tiekkite atsakymus be modelio kvietimo. Net vidutinis talpyklos pataikymo rodiklis žymiai sumažina išlaidas ir delsą.
Lygiagretumas ir atgalinis slėgis. Modelių tiekėjai turi ribojimus. Ribokite lygiagrečių užklausų skaičių, naudokite eksponentinį pakartotinį bandymą, ir klaidos atveju elkitės maloniai (užstatyta “mes dirbame” atsakymo eilė geriau nei klaida 500).
flowchart LR
Q[Vartotojo užklausa] --> C{Buvo rastas talpyklos atitikmuo?}
C -->|taip| R[Grąžinti talpykloje esančią atsaką]
C -->|ne| Router{Sudėtingumas?}
Router -->|paprasta| SLM[Mažas modelis]
Router -->|sudėtinga| LLM[Didelis modelis]
SLM --> Out[Atsakymas]
LLM --> Out
Out --> Store[Talpykla + sekimas]
Negalite valdyti to, ko nematote. Kaip aprašyta 10 pamokoje, Microsoft Agent Framework natūraliai generuoja OpenTelemetry sekas — kiekvienas modelio kvietimas, įrankio paleidimas ir orkestravimo žingsnis tampa intervalais. Gamyboje šias sekas eksportuojate į Microsoft Foundry (ar bet kurį OTel suderinamą backendą), kad galėtumėte:
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")
# agento vykdymas automatiškai stebimas šiame intervale
Atributai, tokie kaip customer.tier ir routed.model, paverčia didelį kiekį sekų į užduodamus klausimus (“ar verslo klientai per dažnai nukreipiami į mažą modelį?”).
Išlaidos gamybos agentuose daugiausia priklauso nuo žetonų naudojimo. Trys svirtelės, pagal poveikį:
Vertinimo vartai ir išlaidų kontrolė yra ta pati disciplina žiūrima iš dviejų pusių: vertinimas nustato kokybės ribą, nukreipimas ir talpyklavimas leidžia laikytis kuo arčiau tos ribos išlaidų.
Valdymas. Hositinami agentai paveldi Foundry RBAC, turinio saugumą ir audito žurnalus. Kiekvienam agentui suteikite valdomą tapatybę su minimaliais būtinais leidimais — tik skaitymo prieiga prie žinių bazės, ribota prieiga prie bilietų API, nieko daugiau.
Žmogus procese. Kai kurie veiksmai per daug svarbūs, kad būtų vykdomi automatiškai — grąžinti pinigus, ištrinti paskyrą, perduoti teisinei komandai. Microsoft Agent Framework palaiko reikalaujančius patvirtinimo įrankius: agentas siūlo veiksmą, vykdymas pristabdomas, žmogus patvirtina arba atmeta, darbų srautas tęsiamas. Šį elementą matėte 6 pamokoje; čia jį diegiate.
MCP gamyboje. MCP leidžia agentui naudotis išoriniais įrankiais per standartinę sąsają. Gamyboje laikykite MCP serverį kaip nepatikimą ribą: fiksuokite serverio versiją, paleiskite su ribota tapatybe, tikrinkite jo išėjimus, ir niekada neatskleiskite jam slaptų duomenų. MCP serveris yra priklausomybė, o priklausomybės gauna pataisymus, auditą ir ribojimus.
flowchart TB
subgraph Dev[Kūrimo architektūra]
D1[Užrašų knygelė] --> D2[Agentų sistema]
D2 --> D3[Modelio teikėjas]
D2 --> D4[Vietiniai įrankiai]
end
subgraph Deploy[Diegimo architektūra]
E1[CI dujotiekis] --> E2[Vertinimo vartai]
E2 -->|praeiti| E3[Foundry agentų paslauga]
E3 --> E4[Versijuotas talpinamas agentas]
end
subgraph Run[Laikinosios vykdymo architektūra]
F1[Kliento programa] --> F2[Talpinamas agentas]
F2 --> F3[Modelio maršrutizatorius]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Atminties paslauga]
F2 --> F6[MCP įrankiai]
F2 --> F7[OTel -> Foundry sekimas]
F2 --> F8[Žmogiškas patvirtinimas]
end
Šie trys diagramos — vystymas, diegimas, vykdymas — vaizduoja tą patį agentą jo gyvavimo trijose stadijose. Sekanti laboratorija jus veda per jo kūrimą.
Atidarykite code_samples/16-python-agent-framework.ipynb ir dirbkite per viską nuo pradžios iki pabaigos. Surinksite Contoso klientų aptarnavimo agentą su visomis gamybos rūpimis įjungtomis:
Užrašų knygelė suorganizuota taip, kad kiekviena gamybos rūpestis yra atskira, paleidžiama sekcija. Jos širdis yra nukreipimo + talpyklavimo užklausų apdorotojas:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Aptarnauti iš talpyklos, kai galime.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Maršrutuoti pagal sudėtingumą, kad kontroliuotume išlaidas.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Vykdyti agentą viduje trasos ruožo stebimumui.
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. Talpyklinti ir grąžinti.
response_cache.set(normalize(query), response.text)
return response.text
Išleidimo vartai atrodo taip:
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 # diegti tik jei vartai praeina
Perskaitykite kiekvieną eilutę — užrašų knygelė palaiko elementus tyčia mažus, kad niekas nebūtų paslėpta už kitų kvietimų.
Aukščiau aprašyti vertinimo vartai veikia neprisijungę prieš jūsų agento objektą. Kai agentas įdiegtas kaip Hositinamas Agentas, reikia dar vieno, net pigesnio, patikrinimo: ar įdiegtas galinis taškas iš tikrųjų atsakinėja?
Sėkmingas diegimas tik įrodo, kad valdymo plokštė priėmė apibrėžimą — tai neįrodo, kad agentas atsako. Trūkstama priklausomybė, klaidingas modelio nukreipimas ar pasibaigęs ryšys gali palikti žalią diegimą, kuris nieko negrąžina. Dūmų testas tai užfiksuoja per kelias sekundes, kiekvieno diegimo metu, be pilno vertinimo kainos.
Ši saugykla tiekia paruoštą naudoti dūmų testų procesą, pastatytą ant AI Smoke Test GitHub Action:
tests/lesson-16-smoke-tests.json turi šablonus ir patikrinimus Contoso aptarnavimo agentui (tikslūs politinės atsakymai, užsakymo paieška, temos laikymasis, daugiaturnis pokalbio tęstinumas). Kitų pamokų agentų katalogai yra šalia — žr. tests/README.md..github/workflows/smoke-test.yml prisijungia su Azure OIDC ir POST siunčia kiekvieną užklausą į agento responses galinį tašką, nepavykus bet kuriam patikrinimui, neleidžia darbui tęstis.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
Vykdykite tai skirtuke Actions, kai jūsų agentas bus diegiamas, pateikdami savo Foundry projekto galinį tašką ir agento pavadinimą. Federuota tapatybė turi turėti Azure AI User vaidmenį Foundry projekto aprėptyje. Galvokite apie sluoksnius kaip piramidę: dūmų testai (pasiekiamas ir atsako?) vykdomi kiekvieno diegimo metu, neprisijungus vykdoma vertinimas (pakankamai geras pristatymui?) vykdomas prieš paaukštinimą, o prisijungus vykdoma vertinimas (kaip jam sekasi realiame pasaulyje?) vyksta nuolat.
Išbandykite savo supratimą prieš pereidami prie užduoties.
1. Apie kiek procentų veikiamo agento sudaro „modelis“, ir kas yra likusi dalis?
2. Kada rinktumėtės Hostinamą Agentą vietoj kliento talpinamo agente?
3. Kodėl skaliuojamas agentas turi būti bevalstis savo proceso atmintyje?
4. Kokią problemą sprendžia modelio maršrutizavimas ir kaip jis susijęs su vertinimu?
5. Kas yra „vertinimo vartai“ ir kur jie yra gyvavimo cikle?
6. Kodėl MCP serveris gamyboje turi būti traktuojamas kaip nepatikima riba?
7. Koks vienas pokytis paprastai turi didžiausią įtaką gamybos agentei kainai ir kodėl?
8. Kokią reikšmę stebimumui turi užfiksuoti atributai, tokie kaip customer.tier ir routed.model?
Paimkite laboratorijoje sukurtą klientų palaikymo agentą ir pritaikykite jį konkrečiam scenarijui: sąskaitų faktūrų aptarnavimo agentui abonementų SaaS kompanijai.
Jūsų pateiktame darbe reikia:
get_subscription_status, get_invoice ir issue_credit (kredito virš $50 reikalauja žmogaus patvirtinimo).Parašykite trumpą pastraipą (markdown langelyje), paaiškindami, kokią modelio maršrutizavimo taisyklę pasirinkote ir kaip ją patikrintumėte tikru srautu. Tikslaus teisingo atsakymo nėra – jus vertins, ar sugebėjote sujungti gamybos aspektus nuosekliai.
Šiame pamokoje jūs perkėlėte agentą iš prototipo į gamybą su Microsoft Foundry:
Kita pamoka eina priešinga kryptimi: vietoje to, kad agentus skalautumėte debesyje, juos nuleisite žemyn į vieną kūrėjo kompiuterį ir paleisite visiškai lokaliai.
Kompiuterio naudojimo agentų kūrimas (CUA)
Atsakomybės apribojimas: Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.