![]()
Prethodna lekcija je skalirala agente prema gore u oblak. Ova ih spušta dolje na jedan stroj. Na kraju ćete imati funkcionalnog inženjerskog asistenta koji razmišlja, zove alate, čita vaše datoteke i pretražuje vašu dokumentaciju — bez ijednog poziva na inference u oblaku.
Zašto biste to željeli? Tri razloga koja se stalno pojavljuju u stvarnom inženjerskom radu:
Pravilo je da mijenjate vodoravni cloud model za Mali jezični model (SLM) koji radi na vašem CPU-u, GPU-u ili NPU-u. Ova lekcija je o izgradnji agenata koji su dobri unutar tog ograničenja, a ne da se pretvarate da ograničenje ne postoji.
Ova lekcija će obuhvatiti:
Nakon dovršetka ove lekcije, znat ćete kako:
Ova lekcija pretpostavlja da ste dovršili prethodne lekcije i da ste upoznati s:
Također će vam trebati:
requirements.txt, plus foundry-local-sdk, openai i chromadb za ovu lekciju.Vodeći oblačni model ima stotine milijardi parametara i podatkovni centar iza sebe. SLM ima nekoliko milijardi parametara i mora stati u RAM vašeg prijenosnog računala. Ta razlika postavlja jasna očekivanja.
SLM-ovi su dobri u:
SLM-ovi su slabiji u:
Dakle, pobjednička strategija za lokalne agente je: dopustite SLM-u da orkestrira, a alatima da obave teški posao. Model ne mora znati vaš kod — mora znati kada pozvati read_file i search_docs. To direktno igra u korist SLM-ovih snaga.
flowchart LR
U[Programer] --> A[Lokalni SLM agent]
A -->|odlučuje koji alat| T1[pročitaj_datoteku]
A -->|odlučuje koji alat| T2[pretraži_dokumente RAG]
A -->|odlučuje koji alat| T3[analiziraj_kod]
T1 --> A
T2 --> A
T3 --> A
A --> R[Odgovor, u potpunosti na uređaju]
Microsoft Foundry Local je lagani runtime koji preuzima, upravlja i poslužuje modele u potpunosti na vašem računalu. Njegova najvažnija značajka za nas je što izlaže OpenAI-kompatibilnu HTTP krajnju točku — što znači da OpenAI SDK i Microsoft Agent Framework-ov OpenAI klijent rade s njom s promjenom samo base_url. Sve što ste naučili o izgradnji agenata prenosi se izravno; samo se krajnja točka pomiče iz oblaka na localhost.
Foundry Local također automatski odabire najbolju verziju modela za vaš hardver — CPU verziju, CUDA/GPU verziju ili NPU verziju — tako da ne morate ručno optimizirati po stroju.
Instalirajte Foundry Local (pogledajte dokumentaciju za vaš OS), zatim provjerite radi li:
# Instalirajte (primjer; slijedite dokumentaciju za vašu platformu)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Preuzmite i pokrenite Qwen model, zatim pokrenite lokalnu uslugu
foundry model run qwen2.5-7b-instruct
foundry service status
Kad je servis pokrenut imate lokalnu, OpenAI-kompatibilnu krajnju točku (tipično http://localhost:PORT/v1). Bilježnica koristi foundry-local-sdk da automatski otkrije krajnju točku, tako da ne morate ručno kodirati port.
Agent je agent samo ako može pozivati alate. Mnogi SLM-ovi mogu chatati, ali proizvode nepouzdane, nepravilne pozive alata. Qwen modeli su trenirani za pozivanje funkcija i dosljedno emitirju pravilno oblikovane pozive alata — što točno pretvara lokalni chat model u lokalnog agenta.
Tijek je standardna petlja pozivanja alata koja vam je već poznata, samo što radi na uređaju:
sequenceDiagram
participant U as Korisnik
participant A as Qwen Agent (lokalno)
participant T as Lokalni Alat
U->>A: "Što radi auth.py?"
A->>A: Odluka: pozvati read_file
A->>T: read_file("auth.py")
T-->>A: sadržaj datoteke
A->>A: Razmišljanje o sadržaju
A-->>U: Objašnjenje
Pretraživanje dokumentacije je gdje lokalni agenti odrađuju svoj posao. Umjesto da se nadate da je SLM zapamtio dokumentaciju vašeg okvira, ugrađujete te dokumente u lokalnu vektorsku bazu podataka i dopuštate agentu da po potrebi dohvaća relevantne dijelove.
Koristimo Chromu, ugrađenu vektorsku pohranu koja radi unutar procesa bez potrebe za serverom. Cijeli tijek je lokalni: lokalni model za ugradnju → lokalni vektori → lokalno dohvaćanje → lokalni SLM.
flowchart TB
D[Vaša dokumentacija / kod] --> E[Lokalni model ugradnje]
E --> V[(Chroma vektorska baza podataka - na disku)]
Q[Upit agenta] --> QE[Ugradi upit lokalno]
QE --> V
V -->|top-k dijelovi| A[Qwen agent]
A --> Ans[Opravdani odgovor]
Ovo je isti Agentic RAG obrazac iz Lekcije 5 — jedina promjena je da svaki dio radi na vašem stroju.
MCP je transport, a ne oblačna usluga. MCP server može raditi kao lokalni proces na stdio, izlažući alate vašem agentu preko standardnog protokola. To vam omogućuje ponovno korištenje rastućeg ekosustava MCP servera — pristup datotečnom sustavu, git operacije, baze podataka — u potpunosti offline.
Sigurnosni pristup je drugačiji nego u oblaku, ali nije odsutan: lokalni MCP server i dalje radi s vašim korisničkim pravima, zato ograničite što može pristupiti (direktorij projekta, a ne cijelu vašu kućnu mapu) i tretirajte njegove izlaze kao ulaze koje treba validirati.
Lokalno-prvo ne znači samo lokalno. Zreli sustavi usmjeravaju prema osjetljivosti i težini:
| Situacija | Gdje radi |
|---|---|
| Osjetljiv kod / podaci ili offline | Lokalni SLM |
| Jednostavan, ograničen zadatak | Lokalni SLM (jeftino, brzo) |
| Teško višeslojno zaključivanje na neosjetljivim podacima | Model u oblaku |
| Sve, tijekom prekida | Lokalni SLM (nježno degradiranje) |
Ovo odražava ideju usmjeravanja modela iz Lekcije 16 — osim što je jedan od “modela” sada vaš vlastiti stroj. Robustan dizajn se prebacuje na lokalno kad oblak nije dostupan, tako agent pada u kvaliteti umjesto da potpuno zakaže.
flowchart LR
Q[Zahtjev] --> S{Osjetljivo ili izvan mreže?}
S -->|da| L[Lokalni SLM]
S -->|ne| C{Potreban duboki rezoniranje?}
C -->|ne| L
C -->|da| Cloud[Model u oblaku]
L --> Out[Odgovor]
Cloud --> Out
Otvorite code_samples/17-local-agent-foundry-local.ipynb i radite kroz nju. Izgradit ćete lokalnog inženjerskog asistenta koji radi potpuno na vašoj radnoj stanici i može:
Nije korištena nimalo inference u oblaku.
Asistent se povezuje na Foundry Local kroz OpenAI-kompatibilnu krajnju točku, pa kod agenta izgleda gotovo identično kao u oblačnim lekcijama — samo se klijent mijenja:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local otkriva/preuzima model i daje nam lokalnu završnu točku.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key je lokalni privremeni pokazivač
Alati su obične Python funkcije ograničene na direktorij projekta:
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\")
Primijetite provjeru sandboxa — čak i lokalno, alat koji čita proizvoljne putanje je rizik. Bilježnica drži svaki alat ograničenim na korijen jednog projekta.
Testirajte svoje razumijevanje prije prelaska na zadatak.
1. Navedite dva konkretna razloga za pokretanje agenta lokalno umjesto u oblaku.
2. Koja je preporučena podjela rada između SLM-a i njegovih alata u lokalnom agentu i zašto?
3. Što omogućuje ponovno korištenje kod agenta za oblak s Foundry Local?
4. Zašto koristimo posebno Qwen model za pozivanje funkcija, a ne bilo koji SLM?
5. Koji dijelovi u lokalnom RAG tijeku rade na stroju?
6. Lokalni MCP server radi na vašem stroju. Čini li to automatski sigurnim? Koju mjeru opreza biste još trebali poduzeti?
7. Opišite razuman hibridni pravilo usmjeravanja koje uključuje lokalni model.
8. Koja je realistična minimalna količina RAM-a za pokretanje lokalnog agenta u ovoj lekciji i što vam donosi više RAM-a?
Proširite lokalnog inženjerskog asistenta u lokalnog recenzenta dokumentacije za mali projekt po vašem izboru (koristite jednu od lekcija ovog repozitorija ako želite).
Vaša predaja treba:
Dodati alat find_todos koji pretražuje projekt za TODO/FIXME komentare i vraća ih s imenom datoteke i brojem retka — zadržavajući istu provjeru sandboxa kao i read_file.
Zatim napišite kratak odlomak o što biste premjestili u oblak, a što biste zadržali lokalno za ovog recenzenta i zašto. Ocjenjujete se na temelju toga jesu li lokalne komponente ispravno povezane i je li vaše hibridno rezoniranje smisleno — a ne na kvaliteti modela.
U ovoj lekciji ste izgradili agenta koji radi u potpunosti na vašem vlastitom računalu:
Ovo završava luk implementacije: Lekcija 16 je skalirala agente u Microsoft Foundry, a ova lekcija ih je skalirala natrag na jedno radno mjesto. Sljedeća lekcija obrađuje sigurnost implementiranih agenata.
Implementacija skalabilnih agenata
Napomena: Ovaj dokument je preveden korištenjem AI prevoditeljskog servisa Co-op Translator. Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati greške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za važne informacije preporuča se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazumevanja ili pogrešne interpretacije koje proizlaze iz korištenja ovog prijevoda.