![]()
Pelajaran sebelum ini menskala ejen ke atas ke awan. Pelajaran ini membawa mereka ke bawah ke satu mesin sahaja. Pada akhirnya, anda akan mempunyai pembantu kejuruteraan yang berfungsi yang membuat alasan, memanggil alat, membaca fail anda, dan mencari dokumentasi anda — tanpa satu panggilan inferens awan pun.
Kenapa anda mahu begitu? Tiga sebab yang selalu muncul dalam kerja kejuruteraan sebenar:
Tangkapannya ialah anda menukar model awan canggih untuk Model Bahasa Kecil (SLM) yang berjalan pada CPU, GPU, atau NPU anda. Pelajaran ini mengenai membina ejen yang baik dalam kekangan itu daripada berpura-pura kekangan itu tidak ada.
Pelajaran ini akan merangkumi:
Selepas menamatkan pelajaran ini, anda akan tahu bagaimana untuk:
Pelajaran ini menganggap anda telah menamatkan pelajaran sebelumnya dan selesa dengan:
Anda juga perlu:
requirements.txt, serta foundry-local-sdk, openai, dan chromadb untuk pelajaran ini.Model awan canggih mempunyai ratusan bilion parameter dan pusat data di belakangnya. SLM mempunyai beberapa bilion parameter dan perlu muat dalam RAM komputer riba anda. Perbezaan itu mewujudkan jangkaan yang jelas.
SLM bagus pada:
SLM lemah pada:
Strategi menang untuk ejen tempatan adalah: biar SLM mengatur, dan biar alat buat kerja berat. Model tidak perlu tahu kod asas anda — ia perlu tahu bila hendak panggil read_file dan search_docs. Ini terus memanfaatkan kekuatan SLM.
flowchart LR
U[Pembangun] --> A[Ejen SLM Tempatan]
A -->|memutuskan alat yang mana| T1[baca_fail]
A -->|memutuskan alat yang mana| T2[cari_dokumen RAG]
A -->|memutuskan alat yang mana| T3[analisa_kod]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jawapan, sepenuhnya di peranti]
Microsoft Foundry Local adalah masa jalan ringan yang memuat turun, mengurus, dan menyajikan model sepenuhnya pada mesin anda. Ciri paling penting untuk kami ialah ia mengekspose titik akhir HTTP yang serasi OpenAI — bermakna OpenAI SDK dan klien OpenAI Rangka Kerja Ejen Microsoft berfungsi dengan hanya menukar base_url. Segala yang anda pelajari mengenai membina ejen terus berpindah; hanya titik akhir yang bertukar daripada awan ke localhost.
Foundry Local juga secara automatik memilih binaan model terbaik untuk perkakasan anda — binaan CPU, binaan CUDA/GPU, atau binaan NPU — supaya anda tidak perlu mengoptimumkan mesin demi mesin.
Pasang Foundry Local (lihat dokumentasi untuk OS anda), kemudian sahkan ia berfungsi:
# Pasang (contoh; ikut dokumen untuk platform anda)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Muat turun dan jalankan model Qwen, kemudian mulakan perkhidmatan tempatan
foundry model run qwen2.5-7b-instruct
foundry service status
Setelah servis berjalan anda mempunyai titik akhir tempatan yang serasi OpenAI (biasanya http://localhost:PORT/v1). Nota menggunakan foundry-local-sdk untuk mengesan titik akhir secara automatik, jadi anda tidak perlu kod keras port.
Ejen adalah ejen hanya jika ia boleh memanggil alat. Ramai SLM boleh berbual tetapi menghasilkan panggilan alat yang tidak boleh dipercayai dan tidak berformat. Model Qwen dilatih untuk panggilan fungsi dan mengeluarkan struktur panggilan alat yang kemas dan konsisten — itulah 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: Tentukan: panggil read_file
A->>T: read_file("auth.py")
T-->>A: kandungan fail
A->>A: Fikirkan kandungan
A-->>U: Penjelasan
Pencarian dokumentasi adalah tempat ejen tempatan memberi nilai. Daripada berharap SLM menghafal dokumen rangka kerja anda, anda menyemat dokumen itu ke dalam pangkalan data vektor tempatan dan biar ejen mengambil potongan relevan bila perlu.
Kami menggunakan Chroma, stor vektor terserap yang berjalan dalam proses tanpa pelayan untuk diurus. Aliran ini sepenuhnya tempatan: model sematan tempatan → vektor tempatan → pengambilan tempatan → SLM tempatan.
flowchart TB
D[Dokumen / kod anda] --> E[Model penempelan setempat]
E --> V[(Chroma DB vektor - pada cakera)]
Q[Pertanyaan ejen] --> QE[Tampal pertanyaan secara setempat]
QE --> V
V -->|bahagian top-k| A[Ejen Qwen]
A --> Ans[Jawapan berasas]
Ini adalah corak Agentic RAG yang sama dari Pelajaran 5 — satu-satunya perbezaan ialah setiap komponen berjalan pada mesin anda.
MCP adalah pengangkut, bukan servis 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 semakin berkembang — akses sistem fail, operasi git, kueri pangkalan data — sepenuhnya luar talian.
Postur keselamatan berbeza dari awan, tetapi tidak tiada: pelayan MCP tempatan masih berjalan dengan kebenaran pengguna anda, jadi hadkan skopnya pada apa yang boleh disentuh (direktori projek, bukan keseluruhan folder rumah anda) dan anggap hasilnya sebagai input untuk disahkan.
Utamakan tempatan tidak bermakna hanya tempatan. Sistem matang menghala bergantung pada sensitiviti dan kesukaran:
| Situasi | Tempat ia berjalan |
|---|---|
| Kod / data sensitif, atau luar talian | SLM Tempatan |
| Tugas mudah, terhad | SLM Tempatan (murah, cepat) |
| Penalaran multi-lompat sukar pada data tidak sensitif | Model Awan |
| Segalanya, semasa gangguan | SLM Tempatan (degradasi lancar) |
Ini mencerminkan idea halaan model dari Pelajaran 16 — kecuali salah satu “model” kini adalah mesin anda sendiri. Reka bentuk yang teguh kembali kepada tempatan apabila awan tidak tersedia, jadi ejen merosot kualitinya daripada gagal sama sekali.
flowchart LR
Q[Permintaan] --> S{Sensitif atau luar talian?}
S -->|ya| L[SLM Tempatan]
S -->|tidak| C{Perlukan 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 cuba. Anda akan membina pembantu kejuruteraan tempatan yang berjalan sepenuhnya pada stesen kerja anda dan boleh:
Tiada inferens awan digunakan pada bila-bila masa.
Pembantu menyambung ke Foundry Local melalui titik akhir yang serasi 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 memberikan 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 beroperasi dalam skop 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 sandbox — walaupun tempatan, alat yang membaca laluan sesuka hati adalah liabiliti. Nota memegang setiap alat dalam skop akar projek sahaja.
Uji pemahaman anda sebelum beralih ke tugasan.
1. Berikan dua sebab konkrit untuk menjalankan ejen secara tempatan dan bukan di awan.
2. Apakah pembahagian kerja yang disarankan antara SLM dan alatnya dalam ejen tempatan, dan kenapa?
3. Apa yang menjadikan kod ejen awan boleh digunakan semula dengan Foundry Local?
4. Kenapa kita gunakan model panggilan fungsi Qwen secara khusus dan bukan SLM lain?
5. Dalam salur RAG tempatan, komponen mana yang berjalan pada mesin?
6. Pelayan MCP tempatan berjalan pada mesin anda. Adakah ia secara automatik selamat? Langkah berjaga-jaga apa yang perlu anda ambil?
7. Terangkan peraturan halaan hibrid yang munasabah yang merangkumi model tempatan.
8. Apakah angka minimum RAM realistik untuk menjalankan ejen tempatan dalam pelajaran ini, dan apa kelebihan lebih RAM?
Kembangkan pembantu kejuruteraan tempatan menjadi penilai dokumentasi tempatan untuk projek kecil pilihan anda (gunakan salah satu folder pelajaran repo ini jika anda mahu).
Penyerahan anda harus:
Tambah alat find_todos yang mengimbas projek untuk komen TODO/FIXME dan memulangkannya beserta nama fail dan nombor baris — dengan pemeriksaan sandbox sama seperti read_file.
Kemudian tulis satu perenggan pendek mengenai apa yang anda akan alihkan ke awan dan apa yang anda akan simpan secara tempatan untuk penilai ini, dan mengapa. Anda dinilai berdasarkan sama ada komponen tempatan disambungkan dengan betul dan sama ada alasan 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 mengembangkan ejen ke Microsoft Foundry, dan pelajaran ini mengecilkannya ke atas satu stesen kerja. Pelajaran berikutnya beralih kepada memastikan ejen yang disebarkan 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.