![]()
Iki šiol kurse jūs kūrėte agentus, kurie veikia jūsų nešiojamame kompiuteryje, užrašų knygelėje, veikiami az login ir kelių aplinkos kintamųjų. Tai tikrai tinkamas mokymosi būdas. Tačiau tai nėra tinkamas būdas paleisti agentą, nuo kurio 3 val. nakties priklauso tūkstančiai klientų.
Ši pamoka yra apie spragą tarp „tai veikia mano mašinoje“ ir „tai veikia patikimai ir nebrangiai gamyboje“. Mes užpildome šią spragą naudodami Microsoft Foundry ir Microsoft Foundry Agent Service, ir darome tai kurdami tikrą klientų aptarnavimo agentą su įrankiais, paieška, atmintimi, vertinimu ir stebėjimu.
Ši pamoka apims:
Baigę šią pamoką jūs sužinosite, kaip:
Ši pamoka remiasi ankstesnėmis pamokomis ir tikisi, kad jūs esate susipažinę su:
Taip pat jums reikės:
az login).requirements.txt.Prototipinis agentas ir gamybinis agentas turi tą patį pagrindinį ciklą — mąstyti, kviesti įrankius, atsakyti. Kinta viskas, kas supa tą ciklą. Modelis sudaro galbūt 20% gamybinio agente; likę 80% yra veiklos karkasas.
| Sritis | Prototipas | Gamyba |
|---|---|---|
| Talpinimas | Veikia jūsų užrašų knygelėje | Veikia kaip talpinama paslauga, versijuojama ir diegiama |
| Tapatybė | Jūsų az login žetonas |
Valdoma tapatybė su ribotomis teisėmis (RBAC) |
| Būsena | Atmintyje, prarandama perkrovus | Išorinė (temos saugykla, atminties paslauga) |
| Klaidos | Matote klaidos seką | Bandymas iš naujo, atsarginiai veiksmai, dead-letter, įspėjimai |
| Kaina | „Tai keli centai“ | Stebima pagal užklausą, maršrutizuojama, talpinama, biudžetuojama |
| Kokybė | Apžvelgiate rezultatus | Automatiškai vertinama prieš kiekvieną leidimą |
| Pasitikėjimas | Patvirtinate kiekvieną veiksmą | Politika + žmogus cikle rizikingiems veiksmams |
Atminkite šią lentelę. Kiekviena žemiau esanti skyrius atitinka vieną iš šių eilučių.
Yra trys modeliai, kuriuos naudosite dažnai kartu.
Agentas egzistuoja jūsų programos procese. Jūsų kodas tiesiogiai kviečia modelio tiekėją; mąstymo ciklas veikia jūsų paslaugoje. Tai darė visos ankstesnės pamokos.
Agentas registruojamas kaip resursas Microsoft Foundry. Foundry talpina mąstymo ciklą, saugo temas, taiko turinio saugumą ir RBAC, padaro agentą matomą Foundry portale. Jūsų programa tampa lieknu klientu, kuris kuria temas ir skaito atsakymus.
Keletas agentų (ir įrankių) sudedami į grafą su aiškiu valdymo srautu — nuoseklios užduotys, šakos, žmogaus patvirtinimo mazgai ir patvarūs taškai, kurie gali stabdyti ir tęsti eigą. Tai yra Microsoft Agent Framework Workflows galimybė, pritaikyta didelio masto diegimui.
flowchart TB
subgraph P1[Kliento talpinimas]
A1[Jūsų programos procesas] --> M1[Modelio tiekėjas]
end
subgraph P2[Talpinamas agentas]
A2[Plonas klientas] --> F2[Foundry agente paslauga]
F2 --> M2[Modelis + įrankiai + gijų saugykla]
end
subgraph P3[Ageno darbo eiga]
A3[Orkestras] --> S1[Triage agentas]
S1 --> S2[Sprendimo agentas]
S2 --> H[Žmogiškosios patvirtinimo mazgas]
H --> S3[Veiksmo agentas]
end
Agentų diegimas nėra vienkartinis push. Tai ciklas, kuris labai primena programinės įrangos leidimo ciklą, nes jis ir yra toks.
flowchart LR
Create[Kurti / Autoriaus vardas] --> Version[Versija]
Version --> Evaluate[Vertinti neprisijungus]
Evaluate -->|praeina vartus| Deploy[Diegti talpinamą]
Evaluate -->|nepraeina vartų| Create
Deploy --> Observe[Stebėti internete]
Observe --> Improve[Rinkti klaidas]
Improve --> Create
Deploy --> Retire[Atsisakyti senos versijos]
Pagrindinė idėja, perimta iš 10 pamokos: neprisijungus vertinimas yra vartai, o ne paskutinė mintis. Nauja agento versija nebus išleista, jei neįveiks jūsų vertinimo ribų. Tada online stebėjimas grąžina realių klaidų duomenis į jūsų neprisijungus testų rinkinį. Tai yra visas ciklas.
Agentų skalavimas skiriasi nuo valstybinės interneto API skalavimo, nes kiekviena užklausa gali iššaukti kelis brangius modelio ir įrankių kvietimus. Keturi metodai atlieka didžiąją apkrovą.
Bevalstybinių užklausų tvarkymas. Neišsaugokite jokios vartotojo būsenos savo proceso atmintyje. Išsaugokite pokalbių temas Foundry temų saugykloje arba atminties paslaugoje, kad bet kuri instancija galėtų apdoroti bet kurią užklausą. Tai leidžia horizontaliai skalauti — pridėkite instancijų, nereikia „lipnių“ sesijų.
Modelio maršrutizavimas. Ne kiekviena užklausa reikalauja jūsų galingiausio (ir brangiausio) modelio. Nukreipkite paprastas užklausas — temos klasifikavimą, trumpus faktinius atsakymus — į mažą, greitą modelį, o didįjį modelį palikite tikrų svarstymų užklausoms. Foundry Model Router tai gali padaryti už jus, arba galite patys įgyvendinti lengvą klasifikatorių. Laboratorijoje sukursite savarankišką versiją.
Atsakymų talpinimas. Daugelis palaikymo užklausų yra beveik dublikatai („kaip atstatyti slaptažodį?“). Talpinkite dažnų klausimų atsakymus ir pateikite juos be modelio kvietimo. Net vidutinis talpinimo efektyvumas ženkliai sumažina sąnaudas ir vėlavimą.
Konkurencija ir atgalinis slėgis. Modelio tiekėjai turi srauto apribojimus. Apribokite konkurenciją, naudokite pakartotinius bandymus su eksponentiniu laukimu, ir gedimus tvarkykite gražiai (eilėje esantis „dirbame su tuo“ atsakymas geriau nei klaida 500).
flowchart LR
Q[Vartotojo užklausa] --> C{Talpykloje yra?}
C -->|taip| R[Grąžinti talpykloje esančią atsakymą]
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 aptarta 10 pamokoje, Microsoft Agent Framework natūraliai siunčia OpenTelemetry sekos — kiekvienas modelio kvietimas, įrankio iškvietimas ir orkestravimo žingsnis tampa span’u. Gamyboje šiuos span’us eksportuojate į Microsoft Foundry (ar bet kurią OpenTelemetry suderinamą saugyklą), 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 sekamas šioje atkarpoje
Tokie atributai kaip customer.tier ir routed.model paverčia didžiulį sekų srautą į atsakomuosius klausimus („ar verslo klientai per dažnai nukreipiami į mažą modelį?“).
Gamybinių agentų kaina daugiausia priklauso nuo žetonų. Trys svertai, pagal poveikį:
Vertinimo vartai ir kainos kontrolė yra ta pati disciplina, žvelgiant iš dviejų kampų: vertinimas nustato kokybės pagrindą, maršrutizavimas ir talpinimas laikosi artimiausiai prie tos ribos kainos.
Valdymas. Talpinami agentai paveldi Foundry RBAC, turinio saugą ir audito registravimą. Suteikite agentui valdomą tapatybę su mažiausiomis reikalingomis teisėmis — tik skaitymas iš žinių bazės, ribotas prieigos prie bilietų API, nieko daugiau.
Žmogus cikle. Kai kurie veiksmai yra per svarbūs automatizavimui — grąžinimų išdavimas, paskyros ištrynimas, teisinių klausimų eskalavimas. Microsoft Agent Framework palaiko patvirtinimų reikalaujančius įrankius: agentas siūlo veiksmą, vykdymas sustabdomas, žmogus patvirtina arba atmeta, o darbo eiga tęsiama. Tai matėte 6 pamokoje; čia tai įdiegiama.
MCP gamyboje. MCP leidžia agentui naudoti išorinius įrankius per standartizuotą sąsają. Gamyboje kiekvieną MCP serverį laikykite nepatikima riba: fiksuokite serverio versiją, paleiskite su ribota tapatybe, tikrinkite jo rezultatus ir niekada neatskleiskite jam paslapčių. MCP serveris yra priklausomybė, o priklausomybės yra taisomos, auditavimosi ir ribojamos pagal srautą.
flowchart TB
subgraph Dev[Kūrimo architektūra]
D1[Užrašų knygelė] --> D2[Agentų sistema]
D2 --> D3[Modelio tiekėjas]
D2 --> D4[Vietiniai įrankiai]
end
subgraph Deploy[Diegimo architektūra]
E1[CI kanalas] --> E2[Vertinimo vartai]
E2 -->|praeiti| E3[Foundry agento paslauga]
E3 --> E4[Versijuotas talpinamas agentas]
end
subgraph Run[Vykdymo architektūra]
F1[Kliento programa] --> F2[Talpinamas agentas]
F2 --> F3[Modelių maršrutizatorius]
F2 --> F4[Azure AI paieškos RAG]
F2 --> F5[Atminties paslauga]
F2 --> F6[MCP įrankiai]
F2 --> F7[OTel -> Foundry stebėsena]
F2 --> F8[Žmogaus patvirtinimas]
end
Šie trys diagramų — plėtros, diegimo, vykdymo — vaizduoja tą patį agentą trijuose gyvenimo etapuose. Tolimesnė laboratorija jus perves per jo kūrimą.
Atidarykite code_samples/16-python-agent-framework.ipynb ir atlikite visą užduotį. Sukursite Contoso klientų aptarnavimo agentą su visais gamybos aspektais:
Užrašų knygelė organizuota taip, kad kiekvienas gamybos aspektas būtų atskira, paleidžiama dalis. Pagrindas yra maršrutizavimo ir talpinimo užklausų tvarkyklė:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Tiekti iš talpyklos, kai galime.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Maršrutuoti pagal sudėtingumą, kad kontroliuotume sąnaudas.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Vykdyti agentą viduje trasos diapazono dėl stebėjimo galimybių.
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. Talpinti į talpyklą ir grąžinti.
response_cache.set(normalize(query), response.text)
return response.text
Leidimo vartai, saugantys leidimą, 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ė laiko primityvus sąmoningai mažais, kad niekas nebūtų paslėpta už Framework kvietimo.
Aukščiau minėti vertinimo vartai veikia neprisijungus jūsų agento objekte. Kai agentas įdiegtas kaip talpinamas agentas, jums reikalingas dar vienas, dar pigesnis patikrinimas: ar įdiegtas galinis taškas tikrai atsako?
„Sėkmingas“ diegimas tik įrodo, kad kontrolės sistema priėmė aprašą — tai nereiškia, kad agentas atsakys. Trūkstama priklausomybė, netinkamas modelio maršrutizavimas ar pasibaigusi jungtis gali palikti žalią diegimą, kuris nieko negrąžina. Dūmų testas užfiksuoja tai per kelias sekundes, kiekvieną kartą diegiant, be pilno vertinimo kainos.
Ši saugykla pateikia paruoštą naudoti dūmų testų grandinę, kuri sukurta naudojant AI Smoke Test GitHub veiksmą:
tests/lesson-16-smoke-tests.json yra raginimai ir teiginiai Contoso palaikymo agentui (politiniai atsakymai, užsakymo paieška, laikymasis temos ir daugkartinio pokalbio tęstinumas). Kitų pamokų agentų katalogai yra kartu — žr. tests/README.md..github/workflows/smoke-test.yml autentifikuojasi su Azure OIDC ir POST siunčia kiekvieną raginimą į agento Responses endpoint’ą, nutraukiant užduotį kiekvienu teiginio nesėkmingumu.- 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 iš Actions skilties, kai jūsų agentas bus išleistas, pateikdami Foundry projekto pabaigos tašką ir agento pavadinimą. Federuota tapatybė turi turėti Azure AI User rolę Foundry projekto aprėptyje. Galvokite apie sluoksnius kaip apie piramidę: dūmų testai (ar pasiekiamas ir atsako?) vykdomi kiekvieno diegimo metu, neprisijungus vykdoma vertinimo dalis (ar pakankamai gera, kad būtų išleista?) vykdoma prieš kilimą, o prisijungus vykdoma vertinimo dalis (kaip agentas dirba realiame pasaulyje?) vykdoma nuolat.
Patikrinkite savo supratimą prieš pradėdami užduotį.
1. Maždaug kiek gamybos agento sudaro „modelis“, o koks yra likusios dalies vaidmuo?
2. Kada rinktumėtės Talpinamą Agentą vietoje kliento talpinamo agento?
3. Kodėl mastelio keičiamas agentas turi būti be būsenos 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 patenka gyvenimo cikle?
6. Kodėl MCP serveris gamybos aplinkoje turi būti laikomas nepatikima riba?
7. Koks paprastai yra didžiausias vienas pakeitimas, darantis didžiausią poveikį gamybos agento kaštams ir kodėl?
8. Kokį vaidmenį turi span atributai kaip customer.tier ir routed.model stebimumui?
Paimkite kliento aptarnavimo agentą iš laboratorijos ir sustiprinkite jį konkrečiam scenarijui: abonemento sąskaitų aptarnavimo agentas SaaS įmonei.
Jūsų pateikimas turi:
get_subscription_status, get_invoice ir issue_credit (kreditai virš 50 $ reikalauja žmogaus patvirtinimo).Parašykite trumpą pastraipą (markdown lange) paaiškinančią, kokią modelio maršrutizavimo taisyklę pasirinkote ir kaip ją patikrintumėte su tikra srautu. Nėra vieno taisyklingo atsakymo – vertinama, ar gamybos aspektai yra logiškai susieti.
Šiame pamokoje perkeliate agentą iš prototipo į gamybą su Microsoft Foundry:
Kita pamoka eina priešinga kryptimi: vietoje agentų skalavimo į debesį, juos atnešite žemyn ant vieno kūrėjo kompiuterio ir paleisite visiškai lokaliai.
Kompiuterinių naudojimo agentų (CUA) kūrimas
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.