![]()
Sehingga ke titik ini dalam kursus, anda telah membina ejen yang berjalan di laptop anda, di dalam notebook, dipacu oleh az login dan beberapa pembolehubah persekitaran. Itulah cara yang betul untuk belajar. Ia bukan cara yang betul untuk menjalankan ejen yang bergantung kepada 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.” Kami menutup jurang itu menggunakan Microsoft Foundry dan Microsoft Foundry Agent Service, dan kami melakukannya dengan membina ejen sokongan pelanggan sebenar yang mempunyai alat, pengambilan, memori, penilaian, dan pemantauan.
Pelajaran ini akan merangkumi:
Selepas menamatkan pelajaran ini, anda akan mengetahui cara untuk:
Pelajaran ini mengandaikan anda telah menamatkan pelajaran sebelumnya dan selesa dengan:
Anda juga memerlukan:
az login).requirements.txt.Ejen prototaip dan ejen pengeluaran berkongsi litar teras yang sama — berfikir, panggil alat, jawab. Apa yang berubah ialah segala-galanya di sekeliling litar itu. Model mungkin adalah 20% dari ejen pengeluaran; 80% lagi adalah kerangka operasi.
| Kebimbangan | Prototaip | Pengeluaran |
|---|---|---|
| Penghosan | Berjalan di notebook anda | Berjalan sebagai perkhidmatan hos, versi dan dilancarkan secara berperingkat |
| Identiti | Token az login anda |
Identiti terurus dengan RBAC terbatas |
| Keadaan | Dalam memori, hilang apabila dihidupkan semula | Disimpan di luar (penyimpan benang, perkhidmatan memori) |
| Kegagalan | Anda melihat jejak ralat | Cuba semula, fallback, dead-letter, amaran |
| Kos | “Beberapa sen saja” | Dipantau setiap permintaan, dihalakan, dikemas, dianggarkan |
| Kualiti | Anda menilai output | Dinilai secara automatik sebelum setiap keluaran |
| Kepercayaan | Anda meluluskan setiap tindakan | Polisi + manusia dalam gelung untuk tindakan berisiko |
Ingat jadual ini. Setiap seksyen di bawah memetakan ke salah satu baris ini.
Terdapat tiga corak yang anda akan gunakan, sering dalam gabungan.
Objek ejen hidup di dalam proses aplikasi anda. Kod anda memanggil penyedia model secara langsung; litar berfikir berjalan dalam perkhidmatan anda. Ini adalah apa yang dilakukan setiap pelajaran sebelumnya.
Ejen didaftarkan sebagai sumber dalam Microsoft Foundry. Foundry menghoskan litar berfikir, menyimpan benang, menguatkuasakan keselamatan kandungan dan RBAC, dan menjadikan ejen kelihatan dalam portal Foundry. Aplikasi anda menjadi pelanggan nipis yang mencipta benang dan membaca respons.
Pelbagai ejen (dan alat) disusun menjadi graf dengan aliran kawalan yang jelas — langkah berurutan, cabang, nod kelulusan manusia, dan penanda tahan yang boleh berhenti dan disambung semula. Ini adalah keupayaan Microsoft Agent Framework Aliran Kerja yang digunakan pada skala penyebaran.
flowchart TB
subgraph P1[Dikendalikan Pelanggan]
A1[Proses Apl Anda] --> M1[Penyedia Model]
end
subgraph P2[Ejen Dikendalikan]
A2[Klien Tipis] --> F2[Perkhidmatan Ejen Foundry]
F2 --> M2[Model + Alat + Stor Thread]
end
subgraph P3[Aliran Kerja Ejen]
A3[Pengarah] --> S1[Ejen Saringan]
S1 --> S2[Ejen Penyelesai]
S2 --> H[Nodus Kelulusan Manusia]
H --> S3[Ejen Tindakan]
end
Menyebarkan ejen bukan sekadar satu kali push. Ia adalah satu litar, dan ia kelihatan seperti kitaran keluaran perisian kerana itulah yang sebenarnya.
flowchart LR
Create[Cipta / Pengarang] --> Version[Versi]
Version --> Evaluate[Nilai luar talian]
Evaluate -->|lulus pintu| Deploy[Sebar hos]
Evaluate -->|gagal pintu| Create
Deploy --> Observe[Perhati dalam talian]
Observe --> Improve[Kumpul kegagalan]
Improve --> Create
Deploy --> Retire[Pencen versi lama]
Idea utama, dibawa dari Pelajaran 10: penilaian luar talian adalah pintu, bukan selepas fikir. Versi ejen baru tidak dihantar melainkan ia melepasi ambang penilaian anda. Kebolehpantauan dalam talian kemudiannya memberi maklum balas kegagalan dunia sebenar ke dalam set ujian luar talian anda. Itu adalah keseluruhan litar.
Penskalaan ejen berbeza dari penskalaan API web tanpa status, kerana setiap permintaan boleh mencetuskan banyak panggilan model dan alat yang mahal. Empat teknik menanggung sebahagian besar beban.
Pengendalian permintaan tanpa status. Jangan simpan keadaan per pengguna dalam memori proses anda. Simpan benang perbualan dalam stor benang Foundry atau perkhidmatan memori supaya mana-mana instans boleh mengendalikan mana-mana permintaan. Ini membolehkan anda skala secara mendatar — tambah instans, tiada sesi melekit.
Penghalaan model. Tidak setiap permintaan memerlukan model paling berupaya (dan paling mahal) anda. Halakan permintaan mudah — klasifikasi niat, jawapan fakta pendek — kepada model kecil dan pantas, dan simpan model besar untuk pemikiran sebenar. Penghala Model Foundry boleh melakukan ini untuk anda, atau anda boleh melaksanakan pengelasan ringan sendiri. Anda akan membina versi DIY dalam makmal.
Pengkasan respons. Banyak pertanyaan sokongan hampir serupa (“bagaimana saya tetapkan semula kata laluan?”). Sediakan jawapan untuk soalan lazim dan hidangkan tanpa menghubungi model langsung. Walaupun kadar hentaman cache sederhana mengurangkan kos dan kelewatan dengan ketara.
Serentak dan tekanan belakang. Penyedia model mempunyai had kadar. Hadkan serentak anda, gunakan cubaan semula dengan peningkatan eksponen, dan gagal dengan anggun (respons “kami sedang mengendalikannya” beratur lebih baik dari 500).
flowchart LR
Q[Pertanyaan pengguna] --> C{Hit cache?}
C -->|ya| R[Kembalikan jawapan cache]
C -->|tidak| Router{Kerumitan?}
Router -->|mudah| SLM[Model kecil]
Router -->|kompleks| LLM[Model besar]
SLM --> Out[Respons]
LLM --> Out
Out --> Store[Cache + jejak]
Anda tidak boleh mengendalikan apa yang anda tidak dapat lihat. Seperti yang dibincangkan dalam Pelajaran 10, Microsoft Agent Framework mengeluarkan jejak OpenTelemetry secara asli — setiap panggilan model, pemanggilan alat, dan langkah orkestrasi menjadi ruang lingkup. Dalam pengeluaran anda mengeksport ruang lingkup 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")
# pelaksanaan ejen dikesan secara automatik dalam julat ini
Atribut seperti customer.tier dan routed.model menukar dinding jejak menjadi soalan yang boleh dijawab (“adakah pelanggan perusahaan dialihkan terlalu kerap ke model kecil?”).
Kos dalam ejen pengeluaran didominasi oleh token. Tiga tuil, mengikut kesan:
Pintu penilaian dan kawalan kos adalah disiplin yang sama dilihat dari dua sudut: penilaian memberitahu anda lantai kualiti, penghalaan dan pengkasan menjaga anda sekurang-kurangnya serendah kos lantai itu.
Tadbir urus. Ejen Berhos mewarisi RBAC, keselamatan kandungan, dan logging audit Foundry. Berikan setiap ejen identiti terurus dengan keistimewaan paling rendah yang diperlukan — akses baca sahaja ke pangkalan pengetahuan, akses terhad ke API tiket, tiada lebih.
Manusia dalam gelung. Beberapa tindakan terlalu penting untuk diautomasikan terus — mengeluarkan bayaran balik, memadam akaun, meningkatkan kepada pasukan undang-undang. Microsoft Agent Framework menyokong alat perlu kelulusan: ejen mencadangkan tindakan, pelaksanaan berhenti, manusia meluluskan atau menolak, dan alir kerja disambung semula. Anda telah melihat primitif dalam Pelajaran 6; di sini anda menyebarkannya.
MCP dalam pengeluaran. MCP membolehkan 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 terbatas, sahkan outputnya, dan jangan dedahkan rahsia kepadanya. Pelayan MCP adalah pergantungan, dan pergantungan menerima tampalan, diaudit, dan had kadar.
flowchart TB
subgraph Dev[Seni Bina Pembangunan]
D1[Buku Nota] --> D2[Rangka Kerja Ejen]
D2 --> D3[Penyedia Model]
D2 --> D4[Alat tempatan]
end
subgraph Deploy[Seni Bina Penyebaran]
E1[Laluan CI] --> E2[Pintu penilaian]
E2 -->|lulus| E3[Perkhidmatan Ejen Foundry]
E3 --> E4[ejen hos yang berverai]
end
subgraph Run[Seni Bina Masa Jalan]
F1[Apl pelanggan] --> F2[ejen hos]
F2 --> F3[Perute Model]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Perkhidmatan Memori]
F2 --> F6[Alat MCP]
F2 --> F7[OTel -> penjejakan Foundry]
F2 --> F8[Kelulusan manusia]
end
Tiga rajah itu — pembangunan, penyebaran, runtime — adalah ejen yang sama pada tiga tahap kehidupannya. Makmal yang berikut membimbing anda membinanya.
Buka code_samples/16-python-agent-framework.ipynb dan kerjakan dari awal hingga akhir. Anda akan menyusun ejen sokongan pelanggan Contoso dengan setiap kebimbangan pengeluaran dipasang:
Notebook disusun supaya setiap kebimbangan pengeluaran adalah seksyen berdiri sendiri yang boleh dijalankan. Intinya ialah pengendali permintaan penghalaan-plus-pengkasan:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Hidangkan dari cache bila boleh.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Lalukan mengikut kerumitan untuk mengawal kos.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Jalankan ejen dalam jejak masa untuk keterlihatan.
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 dan pulangkan.
response_cache.set(normalize(query), response.text)
return response.text
Pintu penilaian yang menjaga keluaran 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 # hanya deploy jika pintu lulus
Baca setiap baris — notebook menjaga primitif sengaja kecil supaya tiada yang tersembunyi di belakang panggilan rangka kerja.
Pintu penilaian di atas dijalankan luar talian terhadap objek ejen anda. Setelah ejen disebarkan sebagai Ejen Berhos, anda memerlukan satu lagi pemeriksaan yang lebih murah: adakah titik hujung yang disebarkan benar-benar menjawab?
Menyebarkan “berjaya” hanya membuktikan pesawat kawalan menerima definisi — ia tidak membuktikan ejen memberi respons. Kekurangan pergantungan, penghalaan model yang salah, atau sambungan tamat boleh meninggalkan penyebaran hijau yang tidak mengembalikan apa-apa. Ujian asap menangkap itu dalam beberapa saat, pada setiap penyebaran, tanpa kos penilaian penuh.
Repositori ini membekalkan saluran ujian asap yang sedia digunakan dibina pada AI Smoke Test GitHub Action:
tests/lesson-16-smoke-tests.json mengandungi arahan dan pernyataan untuk ejen sokongan Contoso (jawapan polisi berasaskan fakta, carian pesanan, kekal dalam topik, dan kesinambungan benang pelbagai giliran). Katalog untuk ejen pelajaran lain berada di sebelah — lihat tests/README.md..github/workflows/smoke-test.yml log masuk dengan Azure OIDC dan POST setiap arahan ke titik hujung Respons ejen, gagal tugasan jika terdapat kegagalan apa-apa 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 ia dari tab Actions setelah ejen anda diterapkan, dengan membekalkan titik akhir projek Foundry dan nama ejen anda. Identiti persekutuan memerlukan peranan Azure AI User pada skop projek Foundry. Fikirkan lapisan-lapisan ini seperti piramid: ujian asap (boleh dicapai dan memberi respons?) dijalankan pada setiap penerapan, penilaian luar talian (cukup baik untuk dihantar?) dijalankan sebelum kenaikan tahap, dan penilaian dalam talian (bagaimana prestasinya dalam persekitaran sebenar?) dijalankan secara berterusan.
Uji pemahaman anda sebelum beralih ke tugasan.
1. Anggaran berapa besar bahagian agen produksi adalah “model,” dan apa selebihnya?
2. Bilakah anda memilih Hosted Agent berbanding agen yang dihoskan oleh klien?
3. Mengapa agen yang boleh diskala mesti tidak menyimpan keadaan dalam memori proses sendiri?
4. Masalah apa yang diselesaikan oleh penatalan model, dan bagaimana ia berkaitan dengan penilaian?
5. Apakah itu “pintu masuk penilaian” dan di manakah ia dalam kitaran hayat?
6. Mengapa pelayan MCP harus dianggap sebagai sempadan yang tidak dipercayai dalam produksi?
7. Perubahan tunggal manakah biasanya memberi impak terbesar pada kos agen produksi, dan mengapa?
8. Peranan apakah atribut span seperti customer.tier dan routed.model dalam kebolehamatan?
Ambil ejen sokongan pelanggan daripada makmal dan kukuhkan ia untuk satu senario khusus: ejen sokongan bil langganan untuk sebuah syarikat SaaS.
Penyerahan anda harus:
get_subscription_status, get_invoice, dan issue_credit (kredit lebih RM50 memerlukan kelulusan manusia).Tulis satu perenggan ringkas (dalam sel markdown) yang menerangkan peraturan penatalan model mana yang anda pilih dan bagaimana anda akan mengesahkannya dengan trafik sebenar. Tiada jawapan tunggal yang betul — anda dinilai berdasarkan sama ada kebimbangan produksi disambungkan secara koheren.
Dalam pelajaran ini anda telah memindahkan agen dari prototaip ke produksi menggunakan Microsoft Foundry:
Pelajaran seterusnya mengambil perjalanan berlawanan: bukannya menskala agen ke awan, anda akan membawanya turun ke satu mesin pembangun dan menjalankannya sepenuhnya secara tempatan.
Membina 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.