![]()
Iki šiol kurse jūs kūrėte agentus, kurie veikia jūsų nešiojamajame kompiuteryje, užrašų knygelėje, valdoma 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 priklauso tūkstančiai klientų 3 val. nakties.
Ši pamoka yra apie atotrūkį tarp „veikia mano mašinoje“ ir „veikia patikimai ir prieinamai gamyboje.“ Mes jį uždarome naudodami Microsoft Foundry ir Microsoft Foundry Agent Service, statydami tikrą klientų aptarnavimo agentą, kuris turi įrankius, paiešką, atmintį, vertinimą ir stebėjimą.
Ši pamoka apims:
Baigę šią pamoką, žinosite, kaip:
Ši pamoka daro prielaidą, kad esate baigę ankstesnes pamokas ir esate pažįstami su:
Taip pat reikės:
az login).requirements.txt.Prototipinis agentas ir gamybos agentas dalijasi ta pačia pagrindine ciklo struktūra — mąstyti, kviesti įrankius, atsakyti. Kinta viskas, kas supa tą ciklą. Modelis sudaro gal apie 20% gamybos agento; kiti 80% yra operacijų karkasas.
| Poreikis | Prototipas | Gamyba |
|---|---|---|
| Talpinimas | Veikia jūsų užrašų knygelėje | Veikia kaip talpinama paslauga, versijuojama ir diegiama |
| Tapatybė | Jūsų az login tokenas |
Valdoma tapatybė su ribotu RBAC |
| Būsena | Atmintyje, prarandama perkrovus | Išorinė (gijų saugykla, atminties paslauga) |
| Klaidos | Matote klaidų atsekimą | Kartojimas, atsarginiai variantai, negyvų laiškų mechanizmas, įspėjimai |
| Kaina | „Tai keli centai“ | Sekama už užklausą, maršrutizuojama, talpinama, biudžetuojama |
| Kokybė | Matote išvestį akimis | Vertinama automatiškai prieš kiekvieną išleidimą |
| Pasitikėjimas | Patvirtinate kiekvieną veiksmą | Politika + žmogus procese rizikingiems veiksmams |
Įsidėmėkite šią lentelę. Kiekviena tolesnė skiltis atitinka šias eilutes.
Yra trys modeliai, kuriuos naudosite, dažnai derindami.
Agentas gyvena jūsų programos procese. Jūsų kodas tiesiogiai kviečia modelio tiekėją; mąstymo ciklas vyksta jūsų paslaugoje. Tai daro kiekviena ankstesnė pamoka.
Agentas yra užregistruotas kaip resursas Microsoft Foundry. Foundry laiko mąstymo ciklą, saugo gijas, užtikrina turinio saugumą ir RBAC, ir daro agentą matomu Foundry portale. Jūsų programa tampa plonu klientu, kuris kuria gijas ir skaito atsakymus.
Kelis agentus (ir įrankius) sujungiame į grafą su aiškiu valdymo srautu — nuosekliais žingsniais, šaknimis, žmogaus patvirtinimo mazgais ir patvariais atskaitos taškais, kurie leidžia pristabdyti ir atnaujinti darbą. Tai yra Microsoft Agent Framework Workflows funkcija, taikoma diegimo mastelyje.
flowchart TB
subgraph P1[Kliento talpinamas]
A1[Jūsų programos procesas] --> M1[Modelio teikėjas]
end
subgraph P2[Talpinamas agentas]
A2[Plonas klientas] --> F2[Foundry agentų paslauga]
F2 --> M2[Modelis + Įrankiai + Gijų saugykla]
end
subgraph P3[Agentų darbo eiga]
A3[Orkestras] --> S1[Triažo agentas]
S1 --> S2[Sprendimo agentas]
S2 --> H[Žmogiško patvirtinimo mazgas]
H --> S3[Veiksmų agentas]
end
Agentų diegimas nėra vienkartinis push. Tai ciklas, labai panašus į programinės įrangos išleidimo ciklą, nes būtent toks jis 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[Pašalinti seną versiją]
Pagrindinė idėja, perimta iš pamokos 10: offline vertinimas yra stotelė, o ne atsitiktinumas. Nauja agento versija neišleidžiama, kol neįveikia vertinimo slenksčių. Online stebėjimas sugrąžina realias klaidas į jūsų offline testų rinkinį. Tai ir yra visas ciklas.
Agentų mastelio keitimas skiriasi nuo bevalstės žiniatinklio API mastelio, nes kiekviena užklausa gali sukelti daug brangių modelio ir įrankių kvietimų. Keturios technikos atlieka didžiąją apkrovą.
Bevalstis užklausų apdorojimas. Nelaikykite vartotojo būsenos procesoriaus atmintyje. Išsaugokite pokalbių gijas Foundry gijų saugykloje arba atminties paslaugoje, kad bet kuri instancija gali apdoroti bet kurią užklausą. Tai leidžia horizontaliai mastelio keitimui — pridėkite instancijų, nereikia pridėtinių sesijų.
Modelio maršrutizavimas. Ne kiekviena užklausa reikalauja jūsų pajėgiausio (ir brangiausio) modelio. Paprastas užklausas — ketinimų klasifikavimą, trumpus faktinius atsakymus — nukreipkite į mažą, greitą modelį, o didelį modelį rezervuokite tik išoriniam mechaniniam mąstymui. Foundry Model Router gali tai padaryti už jus arba galite sukurti savadarbį lengvą klasifikatorių. Jį kursite laboratorijoje.
Atsakymų talpinimas. Dauguma palaikymo užklausų yra beveik dublikatai („kaip atstatyti slaptažodį?“). Talpinkite atsakymus į dažnai užduodamus klausimus ir aptarnaukite juos be modelio kvietimo. Net vidutinis talpinimo efektyvumas ženkliai sumažina išlaidas ir delsą.
Lygiagretumas ir atgalinė įtampa. Modelio tiekėjai turi ribas užklausų riboms. Ribokite lygiagrečias užklausas, naudokite bandymus iš naujo su eksponentiniu delsos didinimu, ir tvarkykite klaidas gražiai (eilėje laukiančios „mestėsime sprendimus“ atsakymas yra geriau negu 500 klaida).
flowchart LR
Q[Vartotojo užklausa] --> C{Talpyklos atitikmuo?}
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 + stebėjimas]
Negalite valdyti to, ko nematote. Kaip aptarta pamokoje 10, Microsoft Agent Framework natūraliai generuoja OpenTelemetry sekimus — kiekvienas modelio kvietimas, įrankio paleidimas ir orkestracijos žingsnis tampa pleištu. Gamyboje tuos pleištus eksportuojate į Microsoft Foundry (ar bet kurią OTel suderinamą sistemą), 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-4.1-mini")
# agento vykdymas automatiškai sekamas šioje spandoje
Tokie atributai kaip customer.tier ir routed.model leidžia virsti sekų siena į atsakyklesnius klausimus („ar įmonių klientai pernelyg dažnai nukreipiami į mažą modelį?“).
Gamyboje agentų išlaidas daugiausia lemia žetonai. Trys svertai, įtakos dydžio tvarka:
Vertinimo postai ir išlaidų valdymas yra ta pati disciplina iš dviejų pusių: vertinimas nustato kokybės ribą, maršrutizavimas ir talpinimas leidžia būti arčiausiai tos ribos išlaidų.
Valdymas. Talpinami agentai paveldi Foundry RBAC, turinio saugumą ir audito žurnalus. Kiekvienam agentui suteikite valdomą tapatybę su mažiausiomis privilegijomis — skaitymo teisės į žinių bazę, ribotos teisės į bilietų API, nieko daugiau.
Žmogus procese. Kai kurios veiksmai yra pernelyg svarbūs automatikai — grąžinimas, paskyros pašalinimas, eskalavimas teisiniam skyriui. Microsoft Agent Framework palaiko patvirtinimo reikalaujančius įrankius: agentas siūlo veiksmą, vykdymas pristabdomas, žmogus patvirtina arba atmeta, po to darbo eiga tęsiasi. Jūs matėte šį primityvą Pamokoje 6; čia jį diegiate.
MCP gamyboje. MCP leidžia agentui naudotis išoriniais įrankiais per standartinę sąsają. Gamyboje laikykite kiekvieną MCP serverį kaip nepasitikimą ribą: pririškite serverio versiją, vykdykite su ribota tapatybe, tikrinkite jo išvestis ir niekada neatskleiskite jam slaptažodžių. MCP serveris yra priklausomybė, o priklausomybės taisomos, audituojamos ir turi užklausų ribojimus.
flowchart TB
subgraph Dev[Vystymo architektūra]
D1[Užrašų knygutė] --> D2[Agentų struktūra]
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 agentų paslauga]
E3 --> E4[Versijuotas talpinamas agentas]
end
subgraph Run[Vykdymo architektūra]
F1[Kliento programa] --> F2[Talpinamas agentas]
F2 --> F3[Modelio maršrutizatorius]
F2 --> F4[Azure AI paieškos 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ą trijuose gyvavimo etapuose. Toliau pateikta laboratorija parodo kaip jį sukurti.
Atidarykite code_samples/16-python-agent-framework.ipynb ir dirbkite nuo pradžios iki galo. Jūs sukursite Contoso klientų aptarnavimo agentą su visais gamybos rūpesčiais:
Užrašinė suorganizuota taip, kad kiekvienas gamybos rūpestis būtų atskira, vykdoma dalis. Širdis yra maršrutizavimo su talpinimu 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 sąnaudas.
model = "gpt-4.1-mini" if is_simple(query) else "gpt-4.1"
# 3. Vykdyti agentą viduje sekos intervalo dėl stebėjimo.
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
Vertinimo postas, saugantis iš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šinė palaiko primityvus sąmoningai mažais, kad niekas nebūtų paslėpta už karkaso kvietimo.
Aukščiau pateiktas vertinimo postas vykdomas offline jūsų agento objekte. Kai agentas įdiegiamas kaip Talpinamas Agentas, reikia dar vienos, dar pigesnės patikros: ar diegiamas galinis taškas iš tikrųjų atsako?
Sėkmingas diegimas tik įrodo, kad valdymo plokštė priėmė apibrėžimą — tai neįrodo, kad agentas atsako. Priklausomybės nebuvimas, klaidingas modelio maršrutas ar pasibaigusi jungtis gali sukelti žalią diegimą, kuris nieko negrąžina. Dūmų testas aptinka tai per kelias sekundes, kaskart diegiant, be pilno vertinimo kaštų.
Ši saugykla turi paruoštą naudoti dūmų testų grandinę, pagrįstą AI Smoke Test GitHub veiksmais:
tests/lesson-16-smoke-tests.json saugo skatinimus ir patikras Contoso aptarnavimo agentui (pagrįsti politikos atsakymai, užsakymų paieška, temos išlaikymas ir daugiaraukščių gijų tęstinumas). Kitų pamokų agentų katalogai gyvena šalia — žr. tests/README.md..github/workflows/smoke-test.yml prisijungia su Azure OIDC ir POST siunčia kiekvieną skatinimą agentui adresu Responses, ir nepavykus patikrai praneša apie klaidą.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
Paleiskite jį iš Actions skirtuko, kai jūsų agentas bus dislokuotas, nurodydami savo Foundry projekto galinį tašką ir agento pavadinimą. Federuojama tapatybė turi turėti Azure AI User rolę Foundry projekto lygyje. Galvokite apie sluoksnius kaip piramidę: dūmų testai (pasiekiamas ir atsako?) vykdomi kiekvieno diegimo metu, neprisijungus vertinimas (ar pakankamai geras pristatymui?) vykdomas prieš pakėlimą, o internetinis vertinimas (kaip veikia veikiant realiomis sąlygomis?) vyksta nuolat.
Išbandykite savo supratimą prieš pereidami prie užduoties.
1. Apytiksliai kiek gamybos agente sudaro „modelis“, o kas yra likusi dalis?
2. Kada pasirinktumėte Hosted Agent vietoje kliento talpinamo agente?
3. Kodėl skalaujamas agentas turi būti bevalstis savo proceso atmintyje?
4. Kokią problemą sprendžia modelių maršruto valdymas ir kaip tai susiję su vertinimu?
5. Kas yra „vertinimo vartai“ ir kur jie yra gyvavimo cikle?
6. Kodėl MCP serveris gamyboje turėtų būti laikomas nepatikima riba?
7. Koks vienas pokytis paprastai turi didžiausią poveikį gamybos agentei kainai ir kodėl?
8. Kokią reikšmę stebėjimui turi span atributai, tokie kaip customer.tier ir routed.model?
Paimkite laboratorinį klientų aptarnavimo agentą ir pritaikykite jį konkrečiai situacijai: prenumeratos sąskaitų aptarnavimo agentas SaaS įmonei.
Jūsų pateikimas turėtų:
get_subscription_status, get_invoice ir issue_credit (kredito viršijančio 50 USD patvirtinimas žmogaus reikalingas).Parašykite trumpą pastraipą (markdown ląstelėje), paaiškinančią, kurią modelių maršruto taisyklę pasirinkote ir kaip ją patikrintumėte su realiu srautu. Nėra vieningo teisingo atsakymo — vertinama, ar gamybos aspektai susieti nuosekliai.
Šioje pamokoje perkeliate agentą nuo prototipo iki gamybos su Microsoft Foundry:
Kita pamoka yra priešinga kelionė: vietoje to, kad agentus skalautumėte debesyje, jūs juos parsinešite žemyn į vieną kūrėjo mašiną ir paleisite visiškai lokaliai.
Kompiuterinių 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.