![]()
Sehingga titik ini dalam kursus, anda telah membina ejen yang berjalan di komputer riba anda, di dalam buku nota, dikawal oleh az login dan beberapa pembolehubah persekitaran. Itu adalah cara yang tepat untuk belajar. Ia bukan cara yang betul 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 berpatutan, dalam pengeluaran.” Kita menutup jurang itu menggunakan Microsoft Foundry dan Perkhidmatan Ejen Microsoft Foundry, dan kita melakukannya dengan membina ejen sokongan pelanggan sebenar yang mempunyai alat, pengambilan, memori, penilaian, dan pemantauan.
Pelajaran ini akan merangkumi:
Selepas menyiapkan pelajaran ini, anda akan tahu cara untuk:
Pelajaran ini mengandaikan anda telah menyiapkan pelajaran sebelumnya dan selesa dengan:
Anda juga memerlukan:
az login).requirements.txt.Ejen prototaip dan ejen pengeluaran berkongsi gelung teras yang sama — berfikir, panggil alat, bertindak balas. Apa yang berubah adalah segala sesuatu di sekitar gelung itu. Model mungkin 20% daripada ejen pengeluaran; 80% lagi adalah rangka operasi.
| Kebimbangan | Prototaip | Pengeluaran |
|---|---|---|
| Penghosan | Berjalan dalam buku nota anda | Berjalan sebagai perkhidmatan dihoskan, versi dan diedarkan |
| Identiti | Token az login anda |
Identiti terurus dengan RBAC berjaiz |
| Keadaan | Dalam memori, hilang apabila dimulakan semula | Di luarkan (penyimpan benang, perkhidmatan memori) |
| Kegagalan | Anda melihat jejak balik | Cuba semula, gantian, surat mati, amaran |
| Kos | “Ia beberapa sen” | Dikesan setiap permintaan, diarahkan, disimpan dalam cache, diagihkan belanjawan |
| Kualiti | Anda memeriksa output | Dinilai secara automatik sebelum setiap pelepasan |
| Kepercayaan | Anda meluluskan setiap tindakan | Polisi + manusia dalam kitaran untuk tindakan berisiko |
Ingat jadual ini. Setiap bahagian di bawah memetakan kepada salah satu baris ini.
Terdapat tiga corak yang akan anda gunakan, sering dalam gabungan.
Objek ejen hidup di dalam proses aplikasi anda. Kod anda memanggil pembekal model secara langsung; gelung berfikir berjalan dalam perkhidmatan anda. Ini adalah apa yang setiap pelajaran sebelumnya telah lakukan.
Ejen didafarkan sebagai sumber dalam Microsoft Foundry. Foundry menghoskan gelung berfikir, menyimpan benang, menguatkuasakan keselamatan kandungan dan RBAC, dan menjadikan ejen kelihatan dalam portal Foundry. Aplikasi anda menjadi klien nipis yang mencipta benang dan membaca respons.
Pelbagai ejen (dan alat) disusun dalam graf dengan aliran kawalan yang jelas — langkah berurutan, cabang, nod kelulusan manusia, dan titik semakan tahan lama yang boleh berhenti dan sambung semula. Ini adalah keupayaan Microsoft Agent Framework Workflows yang digunakan pada skala pemasangan.
flowchart TB
subgraph P1[Hos Pelanggan]
A1[Proses Apl Anda] --> M1[Penyedia Model]
end
subgraph P2[Ejen Dihoskan]
A2[Pelanggan Ramping] --> F2[Perkhidmatan Ejen Foundry]
F2 --> M2[Model + Alat + Kedai Thread]
end
subgraph P3[Aliran Kerja Ejen]
A3[Pengaturcara] --> S1[Ejen Triage]
S1 --> S2[Ejen Penyesuai]
S2 --> H[Nod Kelulusan Manusia]
H --> S3[Ejen Tindakan]
end
Menjalankan ejen bukanlah push sekali sahaja. Ia adalah gelung, dan ia kelihatan sangat seperti kitaran pelepasan perisian kerana itulah sebenarnya.
flowchart LR
Create[Cipta / Pengarang] --> Version[Versi]
Version --> Evaluate[Nilai secara luar talian]
Evaluate -->|lulus pintu| Deploy[Terapkan dihoskan]
Evaluate -->|gagal pintu| Create
Deploy --> Observe[Pantau dalam talian]
Observe --> Improve[Kumpul kegagalan]
Improve --> Create
Deploy --> Retire[Bersara versi lama]
Idea utama, dibawa dari Pelajaran 10: penilaian luar talian adalah pintu, bukan sesuatu yang dianggap ringan. Versi ejen baru tidak dihantar kecuali ia melepasi ambang penilaian anda. Kebolehlihatan dalam talian kemudian memberi makan kegagalan dunia sebenar ke dalam set ujian luar talian anda. Itulah keseluruhan gelung.
Skala ejen berbeza dengan skala API web tanpa keadaan, kerana setiap permintaan boleh mencetuskan panggilan model dan alat yang mahal. Empat teknik membawa sebahagian besar beban.
Pengendalian permintaan tanpa keadaan. Jangan simpan keadaan setiap pengguna dalam memori proses anda. Simpan benang perbualan dalam stor benang Foundry atau perkhidmatan memori supaya mana-mana contoh boleh menangani permintaan. Ini membolehkan anda skala secara mendatar — tambah contoh, tiada sesi melekit.
Pengarahan model. Tidak setiap permintaan memerlukan model paling berupaya (dan paling mahal) anda. Pandu permintaan mudah — klasifikasi niat, jawapan fakta ringkas — ke model kecil yang pantas dan simpan model besar untuk pemikiran sebenar. Pengarah Model Foundry boleh lakukan ini untuk anda, atau anda boleh melaksanakan pengelasan ringan sendiri. Anda akan bina versi DIY dalam makmal.
Caching respons. Banyak pertanyaan sokongan hampir sama (“bagaimana saya menetapkan semula kata laluan saya?”). Cache jawapan kepada soalan biasa dan sajikan tanpa perlu ke model sama sekali. Walaupun kadar cache sederhana secara signifikan mengurangkan kos dan latensi.
Kebersamaan dan tekanan balik. Pembekal model mempunyai had kadar. Hadkan kebersamaan anda, gunakan cubaan semula dengan peningkatan eksponen, dan gagal dengan baik (respons “kami sedang mengurus” dalam antrian mengatasi 500).
flowchart LR
Q[Pertanyaan pengguna] --> C{Hit cache?}
C -->|ya| R[Kembalikan jawapan dalam 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 boleh 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 eksport span ini ke Microsoft Foundry (atau 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 dijejak secara automatik di dalam rentang ini
Atribut seperti customer.tier dan routed.model adalah apa yang menukar dinding jejak menjadi soalan boleh dijawab (“adakah pelanggan perusahaan terlalu kerap diarahkan ke model kecil?”).
Kos dalam ejen pengeluaran didominasi oleh token. Tiga tuas, mengikut kesan:
Pintu penilaian dan kawalan kos adalah disiplin yang sama dilihat dari dua sudut: penilaian memberitahu anda peringkat kualiti, pengarahan dan caching memastikan anda sedekat mungkin dengan kos tahap itu.
Tadbir Urus. Ejen Di hoskan mewarisi RBAC Foundry, keselamatan kandungan, dan log audit. Beri setiap ejen identiti terurus dengan keistimewaan terendah yang diperlukan — akses baca sahaja ke pangkalan pengetahuan, akses terhad ke API tiket, tiada lebih.
Manusia dalam kitaran. Sesetengah tindakan terlalu besar kesannya untuk diotomatik sepenuhnya — mengeluarkan bayaran balik, memadam akaun, mengeskalasi ke pasukan undang-undang. Microsoft Agent Framework menyokong alat perlu kelulusan: ejen mencadangkan tindakan, pelaksanaan berhenti, manusia meluluskan atau menolak, dan aliran kerja diteruskan. Anda telah lihat primitif ini dalam Pelajaran 6; di sini anda pasangkannya.
MCP dalam pengeluaran. MCP membolehkan ejen anda menggunakan alat luaran melalui antara muka standard. Dalam pengeluaran, anggap setiap pelayan MCP sebagai sempadan tidak dipercayai: pin versi pelayan, jalankan dengan identiti terhad, sahkan outputnya, dan jangan dedahkan rahsia kepadanya. Pelayan MCP adalah kebergantungan, dan kebergantungan perlu ditampal, diaudit, dan dikawal 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 Penempatan]
E1[Saluran CI] --> E2[Pintu penilaian]
E2 -->|lulus| E3[Perkhidmatan Ejen Foundry]
E3 --> E4[ejen hos berversi]
end
subgraph Run[Seni Bina Masa Jalan]
F1[Apl klien] --> F2[ejen yang dihoskan]
F2 --> F3[Penghala 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
Ketiga-tiga rajah itu — pembangunan, pemasangan, runtime — adalah ejen yang sama pada tiga peringkat hayatnya. Makmal yang berikut membawa anda membinanya.
Buka code_samples/16-python-agent-framework.ipynb dan kerjakan dari awal hingga akhir. Anda akan menggabungkan ejen sokongan pelanggan Contoso dengan setiap kebimbangan pengeluaran yang disambungkan:
Buku nota disusun supaya setiap kebimbangan pengeluaran adalah seksyen boleh jalankan yang berdiri sendiri. Intinya adalah pengendali permintaan pengarahan-dan-caching:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Hidangkan dari cache apabila boleh.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Rute mengikut kerumitan untuk mengawal kos.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Jalankan agen di dalam ruang jejak 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 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 # hanya lancarkan jika pintu lulus
Baca setiap baris — buku nota mengekalkan primitif dengan saiz sengaja kecil supaya tiada apa tersembunyi di sebalik panggilan rangka kerja.
Pintu penilaian di atas dijalankan luar talian terhadap objek ejen anda. Setelah ejen dipasang sebagai Ejen Di hoskan, anda memerlukan satu lagi pemeriksaan yang lebih murah: adakah titik akhir yang dipasang benar-benar menjawab?
Memasang “berjaya” hanya membuktikan pesawat kawalan menerima definisi — ia tidak membuktikan ejen bertindak balas. Kebergantungan hilang, pengarahan model yang rosak, atau sambungan tamat boleh meninggalkan pemasangan hijau yang tidak mengembalikan apa-apa. Ujian asap menangkapnya dalam beberapa saat, setiap kali pasang, tanpa kos penilaian penuh.
Repositori ini menghantar saluran ujian asap siap guna yang dibina pada GitHub Action AI Smoke Test:
tests/lesson-16-smoke-tests.json mengandungi arahan dan pernyataan untuk ejen sokongan Contoso (jawapan polisi berpandukan, pencarian pesanan, kekal pada topik, dan kesinambungan benang berbilang giliran). Katalog untuk ejen pelajaran lain hidup bersebelahan dengannya — lihat tests/README.md..github/workflows/smoke-test.yml log masuk dengan Azure OIDC dan POST setiap arahan ke titik akhir Respons ejen, gagal tugasan pada sebarang kesalahan 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 dikerahkan, dengan membekalkan titik akhir projek Foundry dan nama ejen anda. Identiti federasi memerlukan peranan Azure AI User pada skop projek Foundry. Fikirkan lapisan seperti piramid: ujian asap (boleh dicapai dan memberi respons?) dijalankan pada setiap deployment, penilaian luar talian (cukup baik untuk dihantar?) dijalankan sebelum promosi, dan penilaian dalam talian (bagaimana prestasinya di dunia nyata?) dijalankan secara berterusan.
Uji pemahaman anda sebelum beralih ke tugasan.
1. Anggaran berapa banyak sebahagian daripada ejen pengeluaran adalah “model,” dan apa yang selebihnya?
2. Bila anda memilih Ejen Di-Host berbanding ejen dihoskan klien?
3. Mengapa ejen yang boleh diskala harus tanpa status dalam memori prosesnya sendiri?
4. Masalah apa yang diselesaikan oleh penghalaan model, dan bagaimana ia berkaitan dengan penilaian?
5. Apakah “pintu keluar penilaian” dan di mana ia terletak dalam kitaran hayat?
6. Mengapa pelayan MCP mesti dianggap sebagai sempadan tidak dipercayai dalam pengeluaran?
7. Perubahan tunggal mana biasanya paling memberi kesan kepada kos ejen pengeluaran, dan mengapa?
8. Peranan apakah atribut rentang seperti customer.tier dan routed.model dalam pemerhatian?
Ambil ejen sokongan pelanggan dari makmal dan kukuhkan untuk senario tertentu: 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 penghasilan disatukan secara koheren.
Dalam pelajaran ini anda memindahkan ejen dari prototaip ke pengeluaran dengan Microsoft Foundry:
Pelajaran seterusnya mengambil perjalanan yang bertentangan: bukannya menyesuaikan ejen ke awan, anda akan membawanya turun ke mesin pembangun tunggal 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.