![]()
Sehingga titik ini dalam kursus, anda telah membina ejen yang berjalan pada komputer riba anda, di dalam buku nota, dipacu oleh az login dan sebilangan pemboleh ubah persekitaran. Itu adalah cara yang tepat untuk belajar. Ia bukan cara yang tepat untuk menjalankan ejen yang bergantung pada ribuan pelanggan pada pukul 3 pagi.
Pelajaran ini mengenai jurang antara “ia berfungsi pada mesin saya” dan “ia berfungsi, dengan boleh dipercayai dan mampu milik, dalam pengeluaran.” Kita menutup jurang itu menggunakan Microsoft Foundry dan Microsoft Foundry Agent Service, dan kita melakukannya dengan membina ejen sokongan pelanggan sebenar yang mempunyai alat, pengambilan, memori, penilaian, dan pemantauan.
Pelajaran ini akan meliputi:
Setelah menyelesaikan pelajaran ini, anda akan tahu cara untuk:
Pelajaran ini mengandaikan anda telah menyelesaikan pelajaran sebelumnya dan selesa dengan:
Anda juga memerlukan:
az login).requirements.txt.Ejen prototaip dan ejen pengeluaran berkongsi gelung teras yang sama — beralasan, panggil alat, balas. Apa yang berubah adalah segala sesuatu yang membalut gelung itu. Model mungkin hanya 20% dari ejen pengeluaran; 80% yang lain adalah rangka operasi.
| Perhatian | Prototaip | Pengeluaran |
|---|---|---|
| Penghosan | Berjalan dalam buku nota anda | Berjalan sebagai perkhidmatan dihoskan, versi dan dilancar |
| Identiti | Token az login anda |
Identiti terurus dengan RBAC tertumpu |
| Keadaan | Dalam ingatan, hilang pada muat semula | Dielakkan ke luar (penyimpanan utas, perkhidmatan memori) |
| Kegagalan | Anda melihat jejak balik | Cuba semula, fallback, dead-letter, amaran |
| Kos | “Ia beberapa sen” | Dikesan setiap permintaan, ditempatkan, disimpan dalam cache, dibajetkan |
| Kualiti | Anda menilai output secara visual | Dinilai secara automatik sebelum setiap pelepasan |
| Kepercayaan | Anda meluluskan setiap tindakan | Polisi + manusia-dalam-gelung untuk tindakan berisiko |
Ingat jadual ini. Setiap bahagian berikut memetakan kepada salah satu baris ini.
Terdapat tiga corak yang akan anda gunakan, selalunya secara gabungan.
Objek ejen wujud dalam proses aplikasi anda. Kod anda memanggil pembekal model secara langsung; gelung beralasan berjalan dalam perkhidmatan anda. Ini adalah apa yang setiap pelajaran sebelum ini telah lakukan.
Ejen didaftarkan sebagai sumber dalam Microsoft Foundry. Foundry menghoskan gelung beralasan, menyimpan utas, menguatkuasakan keselamatan kandungan dan RBAC, serta menjadikan ejen kelihatan dalam portal Foundry. Aplikasi anda menjadi klien ringan yang mencipta utas dan membaca respons.
Beberapa ejen (dan alat) digabungkan ke dalam graf dengan aliran kawalan eksplisit — langkah berurutan, bercabang, nod kelulusan manusia, dan titik cek tahan lama yang boleh berhenti dan disambung semula. Ini adalah keupayaan Workflows dalam Microsoft Agent Framework yang diterapkan pada skala penyebaran.
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
Menyebarkan ejen bukan satu push satu kali. Ia sebuah gelung, dan ia kelihatan banyak seperti kitaran pelepasan perisian kerana itulah sebenarnya ia.
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]
Idea utama, yang dibawa dari Pelajaran 10: penilaian luar talian adalah pintu keselamatan, bukan pemikiran selepas. Versi ejen baru tidak dihantar melainkan ia melepasi ambang penilaian anda. Kebolehlihatan dalam talian kemudian memberi maklum balas kegagalan dunia sebenar ke dalam set ujian luar talian anda. Itulah gelung keseluruhannya.
Penskalaan ejen berbeza daripada penskalaan API web tanpa status, kerana setiap permintaan boleh mencetus panggilan model dan alat yang mahal banyak kali. Empat teknik membawa sebahagian besar beban.
Pengendalian permintaan tanpa status. Jangan simpan keadaan per pengguna dalam memori proses anda. Kekalkan utas perbualan dalam stor utas Foundry atau perkhidmatan memori supaya mana-mana instance boleh mengendalikan mana-mana permintaan. Ini membolehkan anda skala secara mendatar — tambah instance, tiada sesi melekit.
Penentuan laluan model. Tidak setiap permintaan memerlukan model paling canggih (dan paling mahal) anda. Hantar permintaan mudah — pengelasan niat, jawapan fakta ringkas — ke model kecil dan cepat, dan simpan model besar untuk penalaran sebenar. Model Router Foundry boleh melakukan ini untuk anda, atau anda boleh melaksanakan pengelasan ringan sendiri. Anda akan bina versi DIY dalam makmal.
Caching respons. Banyak pertanyaan sokongan adalah hampir serupa (“bagaimana saya reset kata laluan?”). Simpan jawapan kepada soalan biasa dan hidangkan tanpa perlu panggil model langsung. Walaupun kadar cache hit sederhana mengurangkan kos dan latensi dengan ketara.
Keserentakan dan tekanan belakang. Pembekal model mempunyai had kadar. Hadkan keserentakan anda, gunakan cubaan semula dengan penangguhan eksponen, dan gagal dengan anggun (respons “kami sedang urus” yang diatur dalam antrian lebih baik daripada ralat 500).
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]
Anda tidak dapat mengendalikan apa yang anda tidak dapat lihat. Seperti yang dibincangkan dalam Pelajaran 10, Microsoft Agent Framework mengeluarkan jejak OpenTelemetry secara asli — setiap panggilan model, panggilan alat, dan langkah orkestrasi menjadi satu span. Dalam pengeluaran, anda mengeksport span itu ke Microsoft Foundry (atau mana-mana backend yang serasi OTel) supaya anda boleh:
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
Atribut seperti customer.tier dan routed.model adalah apa yang menukar tembok jejak menjadi soalan yang boleh dijawab (“adakah pelanggan perusahaan sering diarahkan ke model kecil?”).
Kos dalam ejen pengeluaran didominasi oleh token. Tiga tuil, mengikut susunan impak:
Pintu penilaian dan kawalan kos adalah disiplin yang sama dilihat dari dua sudut: penilaian memberitahu anda lantai kualiti, penentuan laluan dan caching memastikan anda sedekat mungkin kepada kos lantai tersebut.
Tadbir urus. Hosted Agents mewarisi RBAC, keselamatan kandungan, dan log audit Foundry. Beri setiap ejen identiti terurus dengan keistimewaan paling minimum yang diperlukan — akses baca sahaja ke pangkalan pengetahuan, akses bertumpu ke API tiket, tiada lebih.
Manusia dalam gelung. Beberapa tindakan terlalu besar kesannya untuk diotomasi sepenuhnya — mengeluarkan balik duit, memadam akaun, meningkatkan kepada pasukan undang-undang. Microsoft Agent Framework menyokong alat yang memerlukan kelulusan: ejen mencadangkan tindakan, pelaksanaan berhenti, manusia meluluskan atau menolak, dan aliran kerja disambung semula. Anda lihat asasannya dalam Pelajaran 6; di sini anda menyebarkannya.
MCP dalam pengeluaran. MCP membenarkan ejen anda menggunakan alat luaran melalui antara muka standard. Dalam pengeluaran, anggap setiap pelayan MCP sebagai sempadan yang tidak dipercayai: pin versi pelayan, jalankan dengan identiti tertumpu, sahkan output, dan jangan dedahkan rahsia kepadanya. Pelayan MCP adalah kebergantungan, dan kebergantungan perlu dikemas kini, diaudit, dan dihadkan kadar.
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
Tiga rajah itu — pembangunan, penyebaran, masa jalan — adalah ejen yang sama pada tiga peringkat hayatnya. Makmal yang berikut akan membimbing anda membinanya.
Buka code_samples/16-python-agent-framework.ipynb dan jalankan ia dari awal hingga akhir. Anda akan membina ejen sokongan pelanggan Contoso dengan setiap keperluan pengeluaran bersambung:
Buku nota disusun supaya setiap keperluan pengeluaran adalah bahagian yang berdiri sendiri dan boleh dijalankan. Intinya adalah pengendali permintaan routing-plus-caching:
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
Pintu penilaian yang menjaga pelepasan kelihatan seperti ini:
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
Baca setiap baris — buku nota mengekalkan asasannya kecil dengan sengaja supaya tiada yang tersembunyi di belakang panggilan kerangka.
Pintu penilaian di atas dijalankan luar talian terhadap objek ejen anda. Setelah ejen disebarkan sebagai Hosted Agent, anda memerlukan satu lagi pemeriksaan, yang lebih murah: adakah titik akhir yang disebarkan benar-benar menjawab?
Penyebaran “berjaya” hanya membuktikan pesawat kawalan menerima definisi — ia tidak membuktikan ejen memberi respons. Kebergantungan yang hilang, penentuan laluan model salah, atau sambungan tamat boleh meninggalkan penyebaran hijau yang tidak memberi apa-apa jawapan. Ujian asap menangkap itu dalam beberapa saat, pada setiap penyebaran, tanpa kos penilaian penuh.
Repositori ini menyediakan saluran ujian asap sedia guna yang dibina atas GitHub Action AI Smoke Test:
tests/lesson-16-smoke-tests.json mengandungi prompt dan pernyataan untuk ejen sokongan Contoso (jawapan dasar berasaskan fakta, pencarian pesanan, kekal pada topik, dan kesinambungan multi-pusingan). Katalog untuk ejen pelajaran lain disimpan bersama — lihat tests/README.md..github/workflows/smoke-test.yml log masuk dengan Azure OIDC dan POST setiap prompt ke endpoint Respons ejen, gagal kerja pada sebarang kegagalan pernyataan.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
Jalankan dari tab Actions setelah ejen anda diterapkan, dengan membekalkan endpoint projek Foundry anda dan nama ejen. Identiti persekutuan memerlukan peranan Azure AI User pada skop projek Foundry. Fikirkan lapisan seperti piramid: ujian asap (boleh dicapai dan bertindak balas?) dijalankan pada setiap penerapan, penilaian luar talian (cukup baik untuk dihantar?) dijalankan sebelum promosi, dan penilaian dalam talian (bagaimana prestasinya di alam nyata?) dijalankan secara berterusan.
Uji pemahaman anda sebelum bergerak ke tugasan.
1. Anggaran berapa banyak daripada ejen produksi adalah “model,” dan apa selebihnya?
2. Bila anda akan memilih Hosted Agent berbanding ejen yang dihoskan klien?
3. Mengapa ejen yang boleh diskala mesti tanpa keadaan dalam memori prosesnya sendiri?
4. Masalah apa yang diselesaikan oleh penghalaan model, dan bagaimana ia berkaitan dengan penilaian?
5. Apakah “pagar penilaian” dan di manakah ia berada dalam kitar hayat?
6. Mengapa pelayan MCP harus dianggap sebagai sempadan yang tidak dipercayai dalam produksi?
7. Perubahan tunggal mana yang biasanya mempunyai impak terbesar pada kos ejen produksi, dan mengapa?
8. Peranan atribut jarak seperti customer.tier dan routed.model dalam pemerhatian?
Ambil ejen sokongan pelanggan dari makmal dan kuatkan untuk senario khusus: ejen sokongan bil langganan untuk syarikat SaaS.
Penyerahan anda harus:
get_subscription_status, get_invoice, dan issue_credit (kredit melebihi $50 memerlukan kelulusan manusia).Tulis perenggan pendek (dalam sel markdown) menerangkan peraturan penghalaan model yang anda pilih dan bagaimana anda akan mengesahkannya dengan trafik sebenar. Tiada jawapan tunggal yang betul — anda dinilai berdasarkan sama ada kebimbangan produksi dipasang bersama secara serasi.
Dalam pelajaran ini anda mengalihkan ejen dari prototaip ke produksi dengan Microsoft Foundry:
Pelajaran seterusnya mengambil perjalanan bertentangan: bukannya menskalakan ejen ke awan, anda akan membawanya turun ke mesin pembangun tunggal dan menjalankannya sepenuhnya secara tempatan.
Membangun Ejen Penggunaan Komputer (CUA)
Penafian: Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan oleh manusia profesional adalah disyorkan. Kami tidak bertanggungjawab terhadap sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.