![]()
Pelajaran sebelum ini membesarkan ejen ke awan. Pelajaran ini membawanya turun ke satu mesin. Pada akhirnya anda akan mempunyai pembantu kejuruteraan berfungsi yang membuat penalaran, memanggil alat, membaca fail anda, dan mencari dokumentasi anda — tanpa sebarang panggilan inferens awan.
Mengapa anda mahu itu? Tiga sebab yang sering timbul dalam kerja kejuruteraan sebenar:
Kekurangannya ialah anda menukar model awan hadapan kepada Model Bahasa Kecil (SLM) yang dijalankan di CPU, GPU, atau NPU anda. Pelajaran ini mengenai membina ejen yang baik dalam kekangan itu daripada berpura-pura kekangan itu tidak wujud.
Pelajaran ini akan merangkumi:
Selepas melengkapkan pelajaran ini, anda akan tahu bagaimana untuk:
Pelajaran ini mengandaikan anda telah menamatkan pelajaran sebelumnya dan selesa dengan:
Anda juga memerlukan:
requirements.txt, serta foundry-local-sdk, openai, dan chromadb untuk pelajaran ini.Model awan hadapan mempunyai ratusan bilion parameter dan pusat data di belakangnya. SLM mempunyai beberapa bilion parameter dan harus muat dalam RAM komputer riba anda. Perbezaan itu menetapkan jangkaan yang jelas.
SLM bagus untuk:
SLM lemah pada:
Strategi menang bagi ejen tempatan adalah: biarkan SLM mengatur, dan biarkan alat yang melakukan kerja berat. Model tidak perlu tahu kod asas anda — ia perlu tahu bila memanggil read_file dan search_docs. Itu tepat pada kekuatan SLM.
flowchart LR
U[Pembangun] --> A[Ejen SLM Tempatan]
A -->|memutuskan alat mana| T1[baca_fail]
A -->|memutuskan alat mana| T2[cari_dokumen RAG]
A -->|memutuskan alat mana| T3[analisa_kod]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jawapan, sepenuhnya di peranti]
Microsoft Foundry Local ialah runtime ringan yang memuat turun, mengurus, dan menyajikan model sepenuhnya di mesin anda. Ciri paling penting bagi kita ialah ia mendedahkan titik akhir HTTP setanding OpenAI — bermakna SDK OpenAI dan klien OpenAI Rangka Agen Microsoft berfungsi dengannya hanya dengan menukar base_url. Semua yang anda pelajari tentang membina ejen terus digunakan; hanya titik akhir berpindah dari awan ke localhost.
Foundry Local juga memilih binaan terbaik model untuk perkakasan anda secara automatik — binaan CPU, binaan CUDA/GPU, atau binaan NPU — jadi anda tidak perlu mengoptimumkan secara manual per mesin.
Pasang Foundry Local (lihat dokumentasi untuk OS anda), kemudian sahkan ia berfungsi:
# Pasang (contoh; ikut dokumentasi untuk platform anda)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Muat turun dan jalankan model Qwen, kemudian mulakan perkhidmatan setempat
foundry model run qwen2.5-7b-instruct
foundry service status
Setelah perkhidmatan berjalan, anda mempunyai titik akhir setempat dan setanding OpenAI (biasanya http://localhost:PORT/v1). Buku nota menggunakan foundry-local-sdk untuk mengesan titik akhir secara automatik, jadi anda tidak perlu menetapkan port secara statik.
Ejen hanyalah ejen jika ia boleh memanggil alat. Banyak SLM boleh berbual tetapi menghasilkan panggilan alat yang tidak boleh dipercayai dan tidak teratur. Model Qwen dilatih untuk panggilan fungsi dan mengeluarkan struktur panggilan alat yang terbentuk dengan baik secara konsisten — yang menjadikan model sembang tempatan menjadi ejen tempatan.
Alirannya adalah gelung panggilan alat standard yang anda sudah tahu, cuma berjalan di peranti:
sequenceDiagram
participant U as Pengguna
participant A as Ejen Qwen (tempatan)
participant T as Alat Tempatan
U->>A: "Apa fungsi auth.py?"
A->>A: Putuskan: panggil read_file
A->>T: read_file("auth.py")
T-->>A: kandungan fail
A->>A: Berfikir berdasarkan kandungan
A-->>U: Penjelasan
Carian dokumentasi ialah tempat ejen tempatan menunjukkan kelebihan mereka. Daripada berharap SLM menghafal dokumen rangka kerja anda, anda selitkan dokumen itu ke dalam pangkalan data vektor tempatan dan biarkan ejen mengambil serpihan yang berkaitan mengikut permintaan.
Kami menggunakan Chroma, penyimpan vektor terbina dalam yang berjalan dalam proses tanpa pelayan untuk diurus. Saluran sepenuhnya tempatan: model selitan tempatan → vektor tempatan → pengambilan tempatan → SLM tempatan.
flowchart TB
D[Dokumen / kod anda] --> E[Model penyematan tempatan]
E --> V[(Chroma vektor DB - di cakera)]
Q[Pertanyaan agen] --> QE[Semat pertanyaan secara tempatan]
QE --> V
V -->|ketulan top-k| A[Agen Qwen]
A --> Ans[Jawapan berasaskan fakta]
Ini adalah corak Agentic RAG yang sama dari Pelajaran 5 — perubahan satu-satunya ialah setiap komponen berjalan pada mesin anda.
MCP ialah transportasi, bukan perkhidmatan awan. Pelayan MCP boleh berjalan sebagai proses tempatan pada stdio, mendedahkan alat kepada ejen anda melalui protokol standard. Ini membolehkan anda menggunakan semula ekosistem pelayan MCP yang berkembang — akses sistem fail, operasi git, pertanyaan pangkalan data — sepenuhnya luar talian.
Pendekatan keselamatan berbeza dari awan, tetapi tidak tiada: pelayan MCP tempatan masih berjalan dengan kebenaran pengguna anda, jadi hadkan ia pada apa yang boleh disentuh (direktori projek, bukan keseluruhan folder rumah anda) dan anggap outputnya sebagai input untuk disahkan.
Utama tempatan tidak bermakna hanya tempatan. Sistem matang menghala berdasarkan kepekaan dan kesukaran:
| Situasi | Tempat dijalankan |
|---|---|
| Kod/data sensitif, atau luar talian | SLM Tempatan |
| Tugasan mudah terhad | SLM Tempatan (murah, pantas) |
| Penalaran multi-hop sukar pada data tidak sensitif | Model Awan |
| Segala-galanya semasa gangguan | SLM Tempatan (degradasi bertahap) |
Ini mencerminkan idea perutean model dari Pelajaran 16 — kecuali salah satu “model” kini merupakan mesin anda sendiri. Reka bentuk yang kukuh kembali kepada lokal apabila awan tidak tersedia, maka ejen menurun kualiti secara berperingkat dan tidak gagal terus.
flowchart LR
Q[Permintaan] --> S{Sensitif atau luar talian?}
S -->|ya| L[SLM Tempatan]
S -->|tidak| C{Perlu penalaran mendalam?}
C -->|tidak| L
C -->|ya| Cloud[Model awan]
L --> Out[Respons]
Cloud --> Out
Buka code_samples/17-local-agent-foundry-local.ipynb dan ikuti. Anda akan membina pembantu kejuruteraan tempatan yang berjalan sepenuhnya pada stesen kerja anda dan boleh:
Tiada inferens awan digunakan pada mana-mana masa.
Pembantu menyambung ke Foundry Local melalui titik akhir setanding OpenAI, jadi kod ejen hampir sama dengan pelajaran awan — hanya klien berubah:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local menemui/muat turun model dan memberi kami titik akhir tempatan.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key adalah tempat letak tempatan
Alat adalah fungsi Python biasa yang dihadkan kepada direktori projek:
def read_file(path: str) -> str:
\"\"\"Read a file, but only inside the sandboxed project directory.\"\"\"
full = (PROJECT_ROOT / path).resolve()
if PROJECT_ROOT not in full.parents and full != PROJECT_ROOT:
return \"Access denied: path is outside the project directory.\"
return full.read_text(encoding=\"utf-8\")
Perhatikan pemeriksaan ruang pasir — walaupun secara tempatan, alat yang membaca laluan sewenang-wenangnya adalah risiko. Buku nota memastikan setiap alat dihadkan kepada satu akar projek.
Uji pemahaman anda sebelum bergerak ke tugasan.
1. Berikan dua sebab konkrit untuk menjalankan ejen secara tempatan dan bukan di awan.
2. Apakah pembahagian kerja yang disyorkan antara SLM dan alatnya dalam ejen tempatan, dan mengapa?
3. Apa yang membolehkan kod ejen awan digunakan semula dengan Foundry Local?
4. Kenapa kita khusus menggunakan model panggilan fungsi Qwen dan bukan mana-mana SLM?
5. Dalam saluran RAG tempatan, komponen manakah yang berjalan pada mesin?
6. Pelayan MCP tempatan berjalan pada mesin anda. Adakah itu menjadikannya selamat secara automatik? Apakah langkah berjaga-jaga yang masih perlu anda ambil?
7. Huraikan peraturan perutean hibrid yang masuk akal yang melibatkan model tempatan.
8. Apakah angka minimum RAM realistik untuk menjalankan ejen tempatan dalam pelajaran ini, dan apa yang lebih RAM berikan anda?
Luaskan pembantu kejuruteraan tempatan menjadi penilai dokumentasi tempatan untuk projek kecil pilihan anda (gunakan salah satu folder pelajaran dalam repo ini jika mahu).
Penyerahan anda harus:
Tambah alat find_todos yang mengimbas projek untuk komen TODO/FIXME dan mengembalikannya dengan fail dan nombor baris — mengekalkan pemeriksaan ruang pasir yang sama seperti read_file.
Kemudian tulis satu perenggan ringkas tentang apa yang anda akan pindahkan ke awan dan apa yang anda akan simpan secara tempatan untuk pemeriksa ini, dan kenapa. Anda dinilai berdasarkan sama ada komponen tempatan disambungkan dengan betul dan sama ada penalaran hibrid anda kukuh — bukan pada kualiti model.
Dalam pelajaran ini anda membina ejen yang berjalan sepenuhnya di mesin anda sendiri:
Ini melengkapkan lengkung penyebaran: Pelajaran 16 meningkat skala ejen ke Microsoft Foundry, dan pelajaran ini menurunkan skala ke stesen kerja tunggal. Pelajaran seterusnya membahas tentang menjaga ejen yang disebarkan agar selamat.
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.