![]()
Pelajaran sebelumnya memperbesar agen ke cloud. Pelajaran ini membawanya ke bawah ke satu mesin tunggal. Pada akhirnya Anda akan memiliki asisten teknik yang berfungsi yang dapat bernalar, memanggil alat, membaca file Anda, dan mencari dokumentasi Anda — tanpa satu pun panggilan inferensi cloud.
Mengapa Anda menginginkan itu? Tiga alasan yang sering muncul dalam pekerjaan teknik nyata:
Kekurangannya adalah Anda menukar model cloud mutakhir dengan Model Bahasa Kecil (SLM) yang berjalan di CPU, GPU, atau NPU Anda. Pelajaran ini tentang membangun agen yang baik dalam batasan tersebut daripada berpura-pura batasan itu tidak ada.
Pelajaran ini akan membahas:
Setelah menyelesaikan pelajaran ini, Anda akan tahu bagaimana:
Pelajaran ini mengasumsikan Anda telah menyelesaikan pelajaran sebelumnya dan nyaman dengan:
Anda juga memerlukan:
requirements.txt, plus foundry-local-sdk, openai, dan chromadb untuk pelajaran ini.Model cloud mutakhir memiliki ratusan miliar parameter dan pusat data di belakangnya. SLM memiliki beberapa miliar parameter dan harus muat di RAM laptop Anda. Perbedaan ini menetapkan ekspektasi yang jelas.
SLM unggul dalam:
SLM kurang bagus dalam:
Strategi terbaik untuk agen lokal adalah: biarkan SLM mengoordinasi, dan biarkan alat melakukan pekerjaan berat. Model tidak perlu tahu basis kode Anda — ia perlu tahu kapan memanggil read_file dan search_docs. Itu sesuai dengan kekuatan SLM.
flowchart LR
U[Pengembang] --> A[Agen SLM Lokal]
A -->|memutuskan alat mana| T1[baca_berkas]
A -->|memutuskan alat mana| T2[cari_dokumen RAG]
A -->|memutuskan alat mana| T3[analisis_kode]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jawaban, sepenuhnya di perangkat]
Microsoft Foundry Local adalah runtime ringan yang mengunduh, mengelola, dan menyajikan model sepenuhnya di mesin Anda. Fitur terpenting bagi kita adalah ia mengekspos endpoint HTTP kompatibel OpenAI — yang berarti SDK OpenAI dan klien OpenAI dari Microsoft Agent Framework bekerja dengannya hanya dengan mengganti base_url. Semua yang Anda pelajari tentang membangun agen langsung bisa dipakai; hanya endpointnya yang berpindah dari cloud ke localhost.
Foundry Local juga otomatis memilih build model terbaik untuk hardware Anda — build CPU, build CUDA/GPU, atau build NPU — jadi Anda tidak perlu mengoptimalkan per mesin secara manual.
Pasang Foundry Local (lihat dokumentasi untuk OS Anda), lalu pastikan berjalan:
# Instal (contoh; ikuti dokumen untuk platform Anda)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Unduh dan jalankan model Qwen, lalu mulai layanan lokal
foundry model run qwen2.5-7b-instruct
foundry service status
Setelah layanan aktif, Anda memiliki endpoint OpenAI-kompatibel lokal (biasanya http://localhost:PORT/v1). Notebook menggunakan foundry-local-sdk untuk otomatis menemukan endpoint, jadi Anda tidak perlu mengkodekan port secara keras.
Agen hanya agen jika dapat memanggil alat. Banyak SLM bisa chatting tetapi menghasilkan panggilan alat yang tidak andal dan tidak terformat dengan benar. Model Qwen dilatih untuk pemanggilan fungsi dan secara konsisten mengeluarkan struktur panggilan alat yang baik — inilah yang mengubah model chat lokal menjadi agen lokal.
Alurnya adalah loop pemanggilan alat standar yang sudah Anda kenal, hanya berjalan di perangkat:
sequenceDiagram
participant U as Pengguna
participant A as Agen Qwen (lokal)
participant T as Alat Lokal
U->>A: "Apa fungsi auth.py?"
A->>A: Putuskan: panggil read_file
A->>T: read_file("auth.py")
T-->>A: isi file
A->>A: Berpikir atas isi
A-->>U: Penjelasan
Pencarian dokumentasi adalah tempat agen lokal berguna. Alih-alih berharap SLM menghapal dokumen framework Anda, Anda menyematkan dokumen itu ke dalam database vektor lokal dan membiarkan agen mengambil bagian yang relevan sesuai permintaan.
Kita menggunakan Chroma, penyimpanan vektor tersemat yang berjalan di proses yang sama tanpa server pengelola. Jalur data sepenuhnya lokal: model embedding lokal → vektor lokal → pengambilan lokal → SLM lokal.
flowchart TB
D[Dokumen / kode Anda] --> E[Model embedding lokal]
E --> V[(DB vektor Chroma - di disk)]
Q[Query agen] --> QE[Embed query secara lokal]
QE --> V
V -->|chunk top-k| A[Agen Qwen]
A --> Ans[Jawaban berbasis bukti]
Ini adalah pola Agentic RAG yang sama dari Pelajaran 5 — satu-satunya perubahan adalah semua komponen berjalan di mesin Anda.
MCP adalah transport, bukan layanan cloud. Server MCP dapat berjalan sebagai proses lokal di stdio, mengekspos alat ke agen Anda melalui protokol standar. Ini memungkinkan Anda menggunakan ulang ekosistem server MCP yang terus berkembang — akses filesystem, operasi git, kueri database — sepenuhnya offline.
Postur keamanan berbeda dari cloud, tetapi tidak hilang: server MCP lokal tetap berjalan dengan izin pengguna Anda, jadi batasi cakupan yang dapat diaksesnya (direktori proyek, bukan seluruh folder home Anda) dan anggap outputnya sebagai input yang perlu divalidasi.
Lokal-pertama tidak berarti hanya lokal. Sistem matang melakukan routing berdasarkan sensitivitas dan kesulitan:
| Situasi | Tempat menjalankan |
|---|---|
| Kode/data sensitif, atau offline | SLM Lokal |
| Tugas sederhana, terbatas | SLM Lokal (murah, cepat) |
| Penalaran multi-langkah sulit pada data tidak sensitif | Model Cloud |
| Semua kondisi saat pemadaman | SLM Lokal (degradasi anggun) |
Ini mencerminkan ide routing model dari Pelajaran 16 — kecuali salah satu “model” kini adalah mesin Anda sendiri. Desain tangguh beralih ke lokal saat cloud tidak tersedia, jadi agen menurun kualitasnya secara bertahap daripada gagal total.
flowchart LR
Q[Permintaan] --> S{Sensitif atau offline?}
S -->|ya| L[SLM Lokal]
S -->|tidak| C{Perlu penalaran mendalam?}
C -->|tidak| L
C -->|ya| Cloud[Model cloud]
L --> Out[Respon]
Cloud --> Out
Buka code_samples/17-local-agent-foundry-local.ipynb dan kerjakan. Anda akan membangun asisten teknik lokal yang berjalan sepenuhnya di workstation Anda dan dapat:
Tidak ada inferensi cloud yang digunakan sama sekali.
Asisten terhubung ke Foundry Local melalui endpoint kompatibel OpenAI, jadi kode agen hampir sama dengan pelajaran cloud — hanya klien yang berubah:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local menemukan/mengunduh model dan memberi kita endpoint lokal.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key adalah placeholder lokal
Alat-alatnya adalah fungsi Python biasa yang dibatasi ke direktori proyek:
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 — bahkan secara lokal, alat yang membaca jalur sembarangan adalah risiko. Notebook menjaga setiap alat dibatasi ke akar proyek tunggal.
Uji pemahaman Anda sebelum melanjutkan ke tugas.
1. Berikan dua alasan konkret untuk menjalankan agen secara lokal daripada di cloud.
2. Apa pembagian kerja yang dianjurkan antara SLM dan alatnya dalam agen lokal, dan mengapa?
3. Apa yang memungkinkan kode agen cloud dapat digunakan ulang dengan Foundry Local?
4. Mengapa khusus digunakan model pemanggilan fungsi Qwen dan bukan sembarang SLM?
5. Dalam jalur RAG lokal, komponen mana yang berjalan di mesin?
6. Server MCP lokal berjalan di mesin Anda. Apakah itu otomatis aman? Tindakan pencegahan apa yang harus Anda lakukan?
7. Jelaskan aturan routing hibrida yang masuk akal yang mencakup model lokal.
8. Berapa angka minimal RAM realistis untuk menjalankan agen lokal di pelajaran ini, dan apa keuntungan lebih banyak RAM?
Kembangkan asisten teknik lokal menjadi peninjau dokumentasi lokal untuk proyek kecil pilihan Anda (gunakan salah satu folder pelajaran di repo ini jika Anda mau).
Pengiriman Anda harus:
Menambahkan alat find_todos yang memindai proyek untuk komentar TODO/FIXME dan mengembalikannya dengan nama file dan nomor baris — dengan pemeriksaan sandbox sama seperti read_file.
Kemudian tulis paragraf singkat tentang apa yang akan Anda pindahkan ke cloud dan apa yang akan Anda simpan secara lokal untuk pemeriksa ini, dan alasannya. Anda dinilai berdasarkan apakah komponen lokal terhubung dengan benar dan apakah pemikiran hibrida Anda masuk akal — bukan berdasarkan kualitas model.
Dalam pelajaran ini Anda membangun agen yang berjalan sepenuhnya di mesin Anda sendiri:
Ini menyelesaikan lengkungan penerapan: Pelajaran 16 memperbesar agen ke Microsoft Foundry, dan pelajaran ini memperkecilnya ke satu workstation. Pelajaran berikutnya membahas menjaga keamanan agen yang dikerahkan.
Penafian: Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI Co-op Translator. Meskipun kami berupaya untuk mencapai akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.