![]()
Ang nakaraang aralin ay nag-scale ng mga agent pataas sa cloud. Ang araling ito ay nagdadala sa kanila pababa sa isang solong makina. Sa katapusan, magkakaroon ka ng gumaganang engineering assistant na nakapag-iisip, tumatawag ng mga tool, nagbabasa ng iyong mga file, at naghahanap sa iyong dokumentasyon — nang walang kahit isang tawag sa cloud inference.
Bakit mo ito gugustuhing gawin? Tatlong dahilan na palaging lumilitaw sa totoong gawaing engineering:
Ang kapalit ay nagte-trade ka ng frontier cloud model para sa isang Small Language Model (SLM) na tumatakbo sa iyong CPU, GPU, o NPU. Ang araling ito ay tungkol sa pagbuo ng mga agent na mabisa sa loob ng limitasyong iyon kaysa magkunwari na wala itong limitasyon.
Tatalakayin sa araling ito:
Pagkatapos matapos ang araling ito, malalaman mo kung paano:
Inaasahan ng araling ito na natapos mo na ang mga naunang aralin at komportable ka sa:
Kailangan mo rin:
requirements.txt, pati na ang foundry-local-sdk, openai, at chromadb para sa araling ito.Ang frontier cloud model ay may daan-daang bilyong parameters at sinusuportahan ng isang data centre. Ang SLM ay may ilang bilyong parameters at kailangang magkasya sa RAM ng iyong laptop. Ang pagkakaibang iyon ang nagtatakda ng malinaw na mga inaasahan.
Mahusay ang SLMs sa:
Mahina ang SLMs sa:
Kaya ang winning strategy para sa mga lokal na agent ay: hayaan ang SLM na mag-orchestrate, at hayaang ang mga tool ang gumawa ng mabibigat na gawain. Hindi kailangang alamin ng model ang iyong codebase — kailangan lang nitong malaman kung kailan tatawagin ang read_file at search_docs. Ito ay direktang tumutugma sa mga lakas ng SLM.
flowchart LR
U[Tagapaglathala] --> A[Lokal na Ahente ng SLM]
A -->|nagpapasya kung aling kasangkapan| T1[basahin_ang_file]
A -->|nagpapasya kung aling kasangkapan| T2[maghanap_ng_dok RAG]
A -->|nagpapasya kung aling kasangkapan| T3[suriin_ang_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[Sagot, ganap na sa aparato]
Microsoft Foundry Local ay isang magaan na runtime na nagda-download, nagma-manage, at nagseserbisyo ng mga modelo nang lubusan sa iyong makina. Ang pinakamahalagang katangian nito para sa atin ay naglalantad ito ng isang OpenAI-compatible HTTP endpoint — ibig sabihin, ang OpenAI SDK at ang Microsoft Agent Framework’s OpenAI client ay gumagana laban dito sa pamamagitan lamang ng pagbabago ng base_url. Lahat ng natutunan mo tungkol sa paggawa ng mga agent ay direktang maililipat; ang endpoint lang ang lumilipat mula sa cloud papuntang localhost.
Pinipili rin ng Foundry Local ang pinakamainam na build ng isang model para sa iyong hardware nang awtomatiko — isang CPU build, CUDA/GPU build, o NPU build — kaya hindi mo na kailangang mano-manong i-optimize bawat makina.
I-install ang Foundry Local (tingnan ang dokumentasyon para sa iyong OS), pagkatapos kumpirmahin na ito ay gumagana:
# I-install (halimbawa; sundin ang mga dokumento para sa iyong plataporma)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# I-download at patakbuhin ang isang Qwen na modelo, pagkatapos simulan ang lokal na serbisyo
foundry model run qwen2.5-7b-instruct
foundry service status
Kapag tumatakbo na ang serbisyo, mayroon ka nang lokal na OpenAI-compatible endpoint (karaniwang http://localhost:PORT/v1). Ginagamit ng notebook ang foundry-local-sdk para awtomatikong mahanap ang endpoint, kaya hindi mo na kailangang i-hardcode ang port.
Ang isang agent ay isang agent lamang kung kaya nitong tumawag ng mga tool. Maraming SLM ang maaaring makipag-chat pero naglalabas ng hindi maaasahan o maling porma ng mga tawag sa tool. Ang mga Qwen model ay sinanay para sa function calling at palaging naglalabas ng maayos na mga istruktura ng tawag sa tool — na siyang siyang nagbabago ng lokal na chat model para maging isang lokal na agent.
Ang proseso ay ang karaniwang tool-calling loop na kilala mo na, ngunit tumatakbo ito sa device:
sequenceDiagram
participant U as Gumagamit
participant A as Ahente ng Qwen (lokal)
participant T as Lokal na Kasangkapan
U->>A: "Ano ang ginagawa ng auth.py?"
A->>A: Magpasya: tawagin ang read_file
A->>T: read_file("auth.py")
T-->>A: nilalaman ng file
A->>A: Mag-isip batay sa nilalaman
A-->>U: Paliwanag
Ang paghahanap sa dokumentasyon ang pinanggagalingan ng halaga ng mga lokal na agent. Sa halip na umasa na na-memorize ng SLM ang dokumentasyon ng iyong framework, inilalagay mo ang mga dokumentong iyon sa isang lokal na vector database at hinahayaan ang agent na kunin ang mga kaukulang bahagi kapag kailangan.
Ginagamit natin ang Chroma, isang embedded vector store na tumatakbo kasabay ng proseso nang walang kailangang server. Ang pipeline ay ganap na lokal: lokal na embedding model → lokal na vectors → lokal na retrieval → lokal na SLM.
flowchart TB
D[Ang iyong mga dokumento / code] --> E[Lokal na embedding na modelo]
E --> V[(Chroma vector DB - sa disk)]
Q[Agent na query] --> QE[I-embed ang query nang lokal]
QE --> V
V -->|nangungunang-k mga bahagi| A[Qwen na agent]
A --> Ans[Naka-ground na sagot]
Ito ay parehas na Agentic RAG pattern mula sa Aralin 5 — ang nag-iisang pagbabago ay bawat bahagi ay tumatakbo sa iyong makina.
Ang MCP ay isang transport, hindi isang cloud service. Maaaring tumakbo ang isang MCP server bilang lokal na proseso sa stdio, na nagpapakita ng mga tool sa iyong agent gamit ang standard na protocol. Pinapahintulutan ka nitong gamitin muli ang lumalaking ecosystem ng mga MCP server — access sa filesystem, mga operasyon sa git, mga query sa database — ganap na offline.
Iba ang security posture kaysa sa cloud, ngunit hindi ito nawawala: ang isang lokal na MCP server ay tumatakbo pa rin gamit ang mga permiso ng iyong user, kaya i-scope kung ano ang maaari nitong abutin (isang project directory lang, hindi ang buong home folder mo) at ituring ang mga output nito bilang mga input na kailangang i-validate.
Ang lokal muna ay hindi nangangahulugang lokal lang. Ang mga mature na sistema ay nagruruta base sa sensitivity at kahirapan:
| Sitwasyon | Kung saan ito tumatakbo |
|---|---|
| Sensitibong code / data, o offline | Lokal na SLM |
| Simpleng natuukoy na gawain | Lokal na SLM (murang, mabilis) |
| Mahirap na multi-hop na reasoning sa hindi sensitibong data | Cloud model |
| Lahat, sa panahon ng outage | Lokal na SLM (magandang pagbaba ng kalidad) |
Nilalarawan nito ang ideya ng model routing mula sa Aralin 16 — maliban na ngayon ang isa sa mga “modelo” ay ang sarili mong makina. Ang matibay na disenyo ay bumabalik sa lokal kapag hindi magagamit ang cloud, kaya ang agent ay bumababa ang kalidad sa halip na biglang mag-fail.
flowchart LR
Q[Kahilingan] --> S{Sensitibo o offline?}
S -->|oo| L[Lokal na SLM]
S -->|hindi| C{Kailangan ng malalim na pag-iisip?}
C -->|hindi| L
C -->|oo| Cloud[Modelo sa Cloud]
L --> Out[Tugon]
Cloud --> Out
Buksan ang code_samples/17-local-agent-foundry-local.ipynb at gawin ito. Magbuo ka ng isang lokal na engineering assistant na tumatakbo nang buo sa iyong workstation at kaya:
Walang ginamit na cloud inference anumang oras.
Kumokonekta ang assistant sa Foundry Local sa pamamagitan ng OpenAI-compatible endpoint, kaya halos pareho lang ang code ng agent sa mga aralin sa cloud — pagbabago lang ang client:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Natagpuan/ng Download ng Foundry Local ang modelo at nagbibigay sa atin ng lokal na endpoint.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # Ang api_key ay isang lokal na placeholder
Ang mga tool ay mga ordinaryong Python function na naka-scope sa isang project directory:
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\")
Pansinin ang sandbox check — kahit lokal, ang tool na nagbabasa ng anumang path ay pabigat. Pinananatili ng notebook na bawat tool ay naka-scope sa isang project root lamang.
Subukin ang iyong pang-unawa bago lumipat sa asignatura.
1. Magbigay ng dalawang konkretong dahilan kung bakit mas maganda na patakbuhin ang agent nang lokal kaysa sa cloud.
2. Ano ang inirerekomendang hatian ng gawain sa pagitan ng SLM at ng mga tool nito sa isang lokal na agent, at bakit?
3. Ano ang nagpapahintulot na magamit muli ang cloud agent code sa Foundry Local?
4. Bakit partikular na gumagamit tayo ng Qwen function-calling model sa halip na anumang SLM?
5. Sa lokal na RAG pipeline, aling mga bahagi ang tumatakbo sa makina?
6. Ang isang lokal na MCP server ay tumatakbo sa iyong makina. Ginagawa ba nitong awtomatikong ligtas ito? Ano ang dapat pa ring maging pag-iingat?
7. Ilahad ang isang makatwirang hybrid na patakaran sa routing na kasama ang lokal na modelo.
8. Ano ang makatotohanang minimum na halaga ng RAM para patakbuhin ang lokal na agent sa araling ito, at ano ang naibibigay ng mas maraming RAM?
Palawakin ang lokal na engineering assistant upang maging isang lokal na documentation reviewer para sa maliit na proyekto ng iyong pagpili (pwedeng gamitin ang isa sa mga lesson folder ng repo na ito).
Ang iyong isusumite ay dapat:
Magdagdag ng find_todos na tool na sinusuri ang proyekto para sa mga TODO/FIXME na mga komento at ibinabalik ang mga ito kasama ang file at numero ng linya — na pinapanatili ang parehong sandbox check tulad ng read_file.
Pagkatapos ay sumulat ng isang maikling talata tungkol sa ano ang ilalagay mo sa cloud at ano ang panatilihin mo lokal para sa reviewer na ito, at bakit. Ikaw ay sinusuri kung ang mga lokal na bahagi ay maayos na nakakabit at kung ang iyong hybrid na pangangatwiran ay matibay — hindi sa kalidad ng modelo.
Sa araling ito gumawa ka ng isang agent na patakbo nang buong-buo sa iyong sariling makina:
Tinapos nito ang deployment arc: Sa Lesson 16 pinalaki ang mga agent sa Microsoft Foundry, at sa araling ito pinaliit sila sa isang workstation lang. Ang susunod na aralin ay tungkol sa pagpapanatiling secure ng mga deplayadong agent.
Pagtatanggi: Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na Co-op Translator. Bagama’t nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang maling pagkakaintindi o maling interpretasyon na nagmula sa paggamit ng pagsasaling ito.