![]()
Pelajaran sebelumnya memperbesar agen ke cloud. Kali ini menurunkannya ke satu mesin saja. Pada akhir pelajaran, Anda akan memiliki asisten teknik yang berfungsi yang mampu bernalar, memanggil alat, membaca file, dan mencari dokumentasi Anda — tanpa satu pun panggilan inferensi cloud.
Mengapa Anda menginginkannya? Ada tiga alasan yang sering muncul dalam pekerjaan teknik nyata:
Kekurangannya adalah Anda menukar model cloud frontier dengan Small Language Model (SLM) yang berjalan di CPU, GPU, atau NPU Anda. Pelajaran ini tentang membangun agen yang baik dalam batasan itu daripada pura-pura tidak ada batasan.
Pelajaran ini akan membahas:
Setelah menyelesaikan pelajaran ini, Anda akan tahu cara:
Pelajaran ini mengasumsikan Anda telah menyelesaikan pelajaran sebelumnya dan nyaman dengan:
Anda juga membutuhkan:
requirements.txt, plus foundry-local-sdk, openai, dan chromadb untuk pelajaran ini.Model cloud frontier mempunyai ratusan miliar parameter dan pusat data di belakangnya. SLM memiliki beberapa miliar parameter dan harus muat di RAM laptop Anda. Perbedaan itu menetapkan ekspektasi yang jelas.
SLM unggul pada:
SLM kurang kuat pada:
Strategi menang untuk agen lokal adalah: biarkan SLM mengorkestrasi, dan biarkan alat mengerjakan tugas berat. Model tidak perlu mengetahui kode Anda — hanya perlu tahu kapan memanggil read_file dan search_docs. Itu langsung memakai 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[analisa_kode]
T1 --> A
T2 --> A
T3 --> A
A --> R[Jawaban, sepenuhnya di perangkat]
Microsoft Foundry Local adalah runtime ringan yang mengunduh, mengelola, dan melayani model sepenuhnya di mesin Anda. Fitur terpenting bagi kami adalah menyediakan endpoint HTTP yang kompatibel dengan OpenAI — artinya SDK OpenAI dan klien OpenAI dari Microsoft Agent Framework dapat bekerja dengannya hanya dengan mengganti base_url. Semua yang Anda pelajari tentang membangun agen dapat langsung dipakai; hanya endpoint yang pindah dari cloud ke localhost.
Foundry Local juga memilih build model terbaik secara otomatis sesuai perangkat keras Anda — build CPU, CUDA/GPU, atau NPU — jadi Anda tidak perlu optimasi manual per mesin.
Instal Foundry Local (lihat dokumentasi untuk OS Anda), lalu pastikan berjalan:
# Instal (contoh; ikuti dokumentasi untuk platform Anda)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Unduh dan jalankan model Qwen, kemudian mulai layanan lokal
foundry model run qwen2.5-7b-instruct
foundry service status
Setelah layanan berjalan Anda sudah memiliki endpoint lokal yang kompatibel OpenAI (biasanya http://localhost:PORT/v1). Notebook menggunakan foundry-local-sdk untuk menemukan endpoint otomatis, jadi Anda tidak perlu mengkodekan port secara statis.
Agen hanya agen jika bisa memanggil alat. Banyak SLM bisa ngobrol tapi hasil panggilan alat sering tidak terpercaya dan salah bentuk. Model Qwen dilatih khusus untuk pemanggilan fungsi dan menghasilkan struktur panggilan alat yang bagus secara konsisten — ini yang mengubah model chat lokal menjadi agen lokal.
Alur kerjanya adalah loop pemanggilan alat standar yang sudah Anda kenal, hanya dijalankan 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 berkas
A->>A: Menalar atas isi
A-->>U: Penjelasan
Pencarian dokumentasi adalah tempat agen lokal berperan. Daripada berharap SLM menghafal dokumen framework Anda, Anda menyematkan dokumen itu ke dalam basis data vektor lokal dan membiarkan agen mengambil bagian yang relevan sesuai permintaan.
Kami memakai Chroma, penyimpanan vektor yang tertanam dan dijalankan dalam proses tanpa server. Alur lengkapnya 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[Sematkan query secara lokal]
QE --> V
V -->|potongan top-k| A[Agen Qwen]
A --> Ans[Jawaban yang berdasar]
Ini pola Agentic RAG yang sama seperti Pelajaran 5 — satu-satunya perubahan adalah setiap komponennya berjalan di mesin Anda.
MCP adalah transportasi, bukan layanan cloud. Server MCP bisa berjalan sebagai proses lokal di stdio, menyediakan alat kepada agen Anda lewat protokol standar. Ini memungkinkan Anda menggunakan ulang ekosistem server MCP yang terus berkembang — akses filesystem, operasi git, query database — sepenuhnya offline.
Sikap keamanan berbeda dari cloud, tapi bukan tidak ada: server MCP lokal berjalan dengan izin pengguna Anda, jadi batasi apa yang bisa diakses (misalnya folder proyek, bukan folder rumah seluruhnya) dan perlakukan keluaran sebagai masukan untuk divalidasi.
Prioritas lokal tidak berarti hanya lokal. Sistem matang mengarahkan 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 non-sensitif | Model Cloud |
| Semua tugas saat pemadaman | SLM Lokal (degradasi mulus) |
Ini mencerminkan konsep routing model dari Pelajaran 16 — kecuali salah satu “model” sekarang adalah mesin Anda sendiri. Desain tangguh kembali ke lokal saat cloud tidak tersedia, sehingga agen menurun kualitasnya daripada gagal total.
flowchart LR
Q[Permintaan] --> S{Sensitif atau offline?}
S -->|ya| L[SLM Lokal]
S -->|tidak| C{Membutuhkan 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 kerjakan. Anda akan membangun asisten teknik lokal yang berjalan sepenuhnya di workstation Anda dan dapat:
Tidak ada inferensi cloud yang digunakan di titik manapun.
Asisten terhubung ke Foundry Local melalui endpoint kompatibel OpenAI, jadi kode agen hampir sama dengan pelajaran cloud — hanya klien yang diganti:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local menemukan/mengunduh model dan memberikan kami 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 adalah fungsi Python biasa yang dibatasi pada folder 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 — meskipun lokal, alat yang membaca path sewenang-wenang berisiko. Notebook membatasi setiap alat di root proyek tunggal.
Uji pemahaman Anda sebelum melanjutkan ke tugas.
1. Berikan dua alasan konkret menjalankan agen secara lokal daripada di cloud.
2. Bagaimana pembagian kerja yang direkomendasikan antara SLM dan alatnya dalam agen lokal, dan mengapa?
3. Apa yang memungkinkan penggunaan ulang kode agen cloud dengan Foundry Local?
4. Mengapa kita khususnya menggunakan model pemanggil fungsi Qwen daripada sembarang SLM?
5. Dalam pipeline RAG lokal, komponen mana saja yang berjalan di mesin?
6. Server MCP lokal berjalan di mesin Anda. Apakah itu otomatis aman? Apa tindakan pencegahan yang harus Anda ambil?
7. Jelaskan aturan routing hybrid yang masuk akal yang memasukkan model lokal.
8. Berapakah angka RAM minimum realistis untuk menjalankan agen lokal di pelajaran ini, dan apa keuntungan RAM lebih banyak?
Kembangkan asisten teknik lokal menjadi peninjau dokumentasi lokal untuk proyek kecil pilihan Anda (gunakan salah satu folder pelajaran repo ini bila suka).
Kiriman Anda harus:
Menambahkan alat find_todos yang memindai proyek mencari komentar TODO/FIXME dan mengembalikannya dengan file dan nomor baris — tetap 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 peninjau ini, dan mengapa. Anda dinilai apakah komponen lokal terhubung dengan benar dan apakah alasan hibrida Anda masuk akal — bukan pada 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 diterapkan.
Menerapkan Agen yang Dapat Diskalakan
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.