![]()
Iki šiol kurse jūs kūrėte agentus, kurie veikia jūsų nešiojamajame kompiuteryje, viduje užrašų knygelėje, valdantys az login ir keletu aplinkos kintamųjų. Tai būtent teisingas būdas mokytis. Tačiau tai nėra tinkamas būdas paleisti agentą, nuo kurio priklauso tūkstančiai klientų 3 val. nakties.
Šis pamokas skirtas spragai tarp „veikia mano mašinoje“ ir „veikia patikimai ir už prieinamą kainą gamyboje“ užpildyti. Mes užpildome tą spragą naudodami Microsoft Foundry ir Microsoft Foundry Agent Service, kurdami realų klientų aptarnavimo agentą, turintį įrankius, paiešką, atmintį, vertinimą ir stebėseną.
Ši pamoka apims:
Baigę šią pamoką, mokėsite:
Ši pamoka daro prielaidą, kad jau išmokote ankstesnes pamokas ir esate įgudę:
Jums taip pat reikės:
az login).requirements.txt.Prototipo agentas ir gamybos agentas dalijasi ta pačia pagrindine kilpa — mąstyti, kviesti įrankius, atsakyti. Kas keičiasi, tai viskas aplink tą kilpą. Modelis sudaro galbūt 20% gamybos agento; likę 80% yra operacinis karkasas.
| Rūpestis | Prototipas | Gamyba |
|---|---|---|
| Talpinimas | Veikia jūsų užrašų knygelėje | Veikia kaip hostinta paslauga, versijuota ir išleidžiama |
| Tapatybė | Jūsų az login raktas |
Valdoma tapatybė su riboto prieigos teisėmis |
| Būsena | Atmintyje, prarandama perkrovus | Išorinis saugojimas (temų saugykla, atminties paslauga) |
| Klaidos | Matote klaidos seką | Pakartojimai, atsarginiai variantai, dead-letter, įspėjimai |
| Kaina | „Tai keli centai“ | Sekama pagal užklausą, maršrutizuojama, talpyklaujama, biudžetuojama |
| Kokybė | Apžvelgiate rezultatą akimis | Automatiškai vertinama prieš kiekvieną išleidimą |
| Pasitikėjimas | Patvirtinate kiekvieną veiksmą | Politika + žmogus procese rizikingiems veiksmams |
Prisiminkite šią lentelę. Kiekviena žemiau esanti skyrius atitinka vieną iš eilučių.
Yra trys modeliai, kuriuos dažnai naudosite kartu.
Agentas egzistuoja jūsų programos procese. Jūsų kodas tiesiogiai kviečia modelio teikėją; mąstymo kilpa vyksta jūsų tarnyboje. Tai yra būdas, kurį naudojome ankstesnėse pamokose.
Agentas yra užregistruotas kaip resursas Microsoft Foundry. Foundry laiko mąstymo kilpą, saugo temas, užtikrina turinio saugumą ir RBAC, bei rodo agentą Foundry portale. Jūsų programa tampa plonu klientu, kuris kuria temas ir skaito atsakymus.
Keletas agentų (ir įrankių) sujungti į grafą su aiškiu valdymo srautu — sekantys veiksmai, šakos, žmogaus patvirtinimo mazgai, patvarūs kontroliniai taškai, kurie gali sustabdyti ir atnaujinti procesą. Tai Microsoft Agent Framework Workflows funkcionalumas, taikomas diegimo masteliu.
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
Agentų diegimas nėra vienkartinė push. Tai kilpa, labai panaši į programinės įrangos išleidimo ciklą, nes būtent tokia ir yra.
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]
Pagrindinė idėja, perimta iš 10 pamokos: offline vertinimas yra vartai, ne pabaigos mintis. Nauja agento versija nepasileidžia, jei neperžengia jūsų vertinimo ribų. Tada internetinė stebėsena grąžina realių klaidų duomenis į offline testų rinkinį. Tai visa kilpa.
Agentų mastelio keitimas skiriasi nuo bevalstės web API mastelio didinimo, nes kiekviena užklausa gali sukelti kelis brangius modelio ir įrankių kvietimus. Keturi būdai neša didžiąją apkrovą.
Bevalstis užklausų apdorojimas. Nešiokite 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 horizontalų mastelio keitimą — pridėkite instancijų, be lipnių sesijų.
Modelio maršrutizavimas. Ne kiekviena užklausa reikalauja jūsų pajėgiausio (ir brangiausio) modelio. Paprastas užklausas — ketinimo klasifikavimą, trumpus faktinius atsakymus — maršrutizuokite į mažą, greitą modelį, o didelį modelį palikite tik tikram mąstymui. Foundry Model Router gali tai padaryti už jus, arba galite įgyvendinti lengvą klasifikatorių patys. Laboratorijoje sukursite DIY versiją.
Atsakymų talpyklavimas. Daug užklausų apie palaikymą yra beveik identiškos („kaip atstatyti slaptažodį?“). Talpyklaukite atsakymus į dažnus klausimus ir tieikite juos be modelio kvietimo. Net vidutinis talpyklos pataikymas žymiai sumažina kainas ir delsą.
Lygiagretumas ir atgalinis slėgis. Modelio teikėjai turi kvotų ribas. Apribokite lygiagrečių užklausų skaičių, naudokite pakartotinius bandymus su eksponentiniu laukimu ir elkitės atsargiai klaidos atveju (eiliuotas „mes dirbame“ atsakymas yra geriau nei 500 klaida).
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]
Negalite valdyti to, ko nematote. Kaip aprašyta 10 pamokoje, Microsoft Agent Framework natūraliai išskiria OpenTelemetry sekas — kiekvienas modelio kvietimas, įrankio paleidimas ir orkestracijos žingsnis tampa spanu. Gamyboje eksportuojate tuos spanus į 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")
# agent execution is traced automatically inside this span
Tokie atributai kaip customer.tier ir routed.model verčia daugybę sekų į atsakomuosius klausimus („ar įmonių klientai per dažnai nukreipiami į mažą modelį?“).
Gamybos agentų kaštus daugiausia lemia žetonai. Trys svirtelės, pagal poveikį:
Vertinimo vartai ir kaštų kontrolė yra ta pati disciplina, žiūrima iš dviejų perspektyvų: vertinimas nurodo kokybės grindis, o maršrutizavimas su talpyklavimu palaiko kaštus kuo arčiau tų grindų.
Valdymas. Hosted Agents paveldi Foundry RBAC, turinio saugumą ir audito žurnalus. Suteikite kiekvienam agentui valdomą tapatybę su mažiausiomis reikalingomis teisėmis — tik skaitymo prieigą prie žinių bazės, ribotą prieigą prie užduočių API, ir nieko daugiau.
Žmogus procese. Kai kurie veiksmai yra per svarbūs, kad būtų automatiškai atliekami — grąžinimo išdavimas, paskyros ištrynimas, eskalavimas teisiniams komandoms. Microsoft Agent Framework palaiko patvirtinimą reikalaujančius įrankius: agentas siūlo veiksmą, vykdymas sustabdomas, žmogus patvirtina arba atmeta, ir darbo eiga tęsiasi. Tai matėte pradiniame variante 6 pamokoje; čia tai diegiate.
MCP gamyboje. MCP leidžia agentui naudoti išorinius įrankius per standartinę sąsają. Gamyboje elkitės su kiekvienu MCP serveriu kaip su nepasitikėjimo siena: įmalkite serverio versiją, paleiskite su ribotos prieigos tapatybe, tikrinkite jo išvestis ir niekada neatskleiskite jam slaptažodžių. MCP serveris yra priklausomybė, o priklausomybės gauna pataisas, auditą ir ribojimus.
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
Tie trys schemos — vystymas, diegimas, vykdymas — yra tas pats agentas trijuose gyvenimo etapuose. Sekanti laboratorija padės jums jį sukurti.
Atidarykite code_samples/16-python-agent-framework.ipynb ir dirbkite per ją nuo pradžios iki galo. Surinksite Contoso klientų aptarnavimo agentą su visais gamybos reikalavimais:
Užrašų knygutė struktūruota taip, kad kiekvienas gamybos aspektas būtų atskira, paleidžiama dalis. Širdis yra maršrutizavimo ir talpyklavimo užklausų apdorotojas:
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
Vertinimo vartai, saugantys išleidimą, atrodo štai 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 # only deploy if the gate passes
Perskaitykite kiekvieną eilutę — užrašų knygutė palaiko pradinius elementus sąmoningai smulkius, kad niekas nebūtų paslėpta už framework iškvietimo.
Aukščiau minėti vertinimo vartai veikia offline su jūsų agento objektu. Kai agentas įdiegtas kaip Hosted Agent, reikia dar vieno, dar paprastesnio patikrinimo: ar įdiegtas galinis taškas iš tikrųjų atsako?
„Sėkmingas” diegimas tik įrodo, kad valdymo plokštė priėmė aprašymą — tai neįrodo, kad agentas reaguoja. Trūkstama priklausomybė, klaidingas modelio maršrutizavimas ar pasibaigusi jungtis gali palikti žalią diegimą, kuris nieko negrąžina. Dūmų testas tai sugauna per sekundes, kiekvieno diegimo metu, be pilno vertinimo kaštų.
Ši saugykla pateikia paruoštą naudoti dūmų testų grandinę, pagrįstą AI Smoke Test GitHub Action:
tests/lesson-16-smoke-tests.json turi užklausas ir patvirtinimus Contoso aptarnavimo agentui (su politika suderinti atsakymai, užsakymų tikrinimas, temos palaikymas ir kelių pokalbių 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ą agentui į Responses galinį tašką, nutraukdama darbą jei bet kuris patvirtinimas nepavyksta.- 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 skirtuko, kai jūsų agentas bus įdiegtas, pateikdami savo Foundry projekto galutinį tašką ir agento pavadinimą. Federuota tapatybė turi turėti Azure AI User vaidmenį Foundry projekto aplinkoje. Įsivaizduokite sluoksnius kaip piramidę: dūmų testai (pasiekiamas ir atsakantis?) vykdomi kiekvieno diegimo metu, neprisijungus vertinimas (ar pakankamai geras paleidimui?) vykdomas prieš pakėlimą, o prisijungus vertinimas (kaip sekasi gamtinėje aplinkoje?) vyksta nuolat.
Išbandykite savo supratimą prieš pereidami prie užduoties.
1. Apie kiek procentų gamybiniame agente sudaro “modelis”, o kas yra likusi dalis?
2. Kada rinktumėtės Hosted Agent vietoje kliento talpinamo agento?
3. Kodėl mastelio keičiamas 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 vyksta gyvavimo cikle?
6. Kodėl MCP serveris gamyboje turėtų būti laikomas nepatikima riba?
7. Koks vienas pakeitimas paprastai labiausiai įtakoja gamybinio agente kainą ir kodėl?
8. Kokią funkciją stebumei turi apimties atributai kaip customer.tier ir routed.model?
Paimkite laboratorijos klientų aptarnavimo agentą ir sustiprinkite jį konkrečiam scenarijui: prenumeratos sąskaitų aptarnavimo agentas SaaS įmonei.
Jūsų pateikimas turėtų:
get_subscription_status, get_invoice ir issue_credit (kreditams virš 50 USD reikia žmogiško patvirtinimo).Parašykite trumpą pastraipą (markdown lange) paaiškinančią, kokią modelio maršrutizavimo taisyklę pasirinkote ir kaip ją patvirtintumėte realiu srautu. Nėra vienintelio teisingo atsakymo — vertinama, ar gamybos aspektai sujungti nuosekliai.
Šioje pamokoje jūs perkėlėte agentą nuo prototipo iki gamybos su Microsoft Foundry:
Sekanti pamoka eina priešinga kryptimi: vietoj agentų tobulinimo debesyje, jūs juos nukelsite į vieną kūrėjo mašiną ir paleisite visiškai lokaliai.
Kompiuterių 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.