![]()
Prethodna lekcija je proširila agente u oblak. Ova ih spušta na jedan stroj. Do kraja ćete imati radnog inženjerskog asistenta koji razmišlja, poziva 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 pravom inženjerskom radu:
Kvaka je u tome što mijenjate vrhunski oblačni model za Mali jezični model (SLM) koji radi na vašem CPU-u, GPU-u ili NPU-u. Ova lekcija govori o izgradnji agenata koji su dobri unutar tog ograničenja, a ne o pretvaranju da to ograničenje ne postoji.
Ova lekcija će obuhvatiti:
Nakon dovršetka ove lekcije, znat ćete kako:
Ova lekcija pretpostavlja da ste završili ranije lekcije i da ste upoznati s:
Također će vam trebati:
requirements.txt, plus foundry-local-sdk, openai i chromadb za ovu lekciju.Vrhunski oblačni model ima stotine milijardi parametara i podatkovni centar iza sebe. SLM ima nekoliko milijardi parametara i mora stati u RAM vašeg laptopa. Ta razlika postavlja jasna očekivanja.
SLM-ovi su dobri u:
SLM-ovi su slabiji u:
Pobjednička strategija za lokalne agente je dakle: neka SLM orkestrira, a alati neka obave težak posao. Model ne treba znati vašu bazu koda — treba znati kada pozvati read_file i search_docs. To direktno odgovara snagama SLM-a.
flowchart LR
U[Programer] --> A[Lokalni SLM agent]
A -->|odlučuje koji alat| T1[read_file]
A -->|odlučuje koji alat| T2[search_docs RAG]
A -->|odlučuje koji alat| T3[analyze_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[Odgovor, potpuno na uređaju]
Microsoft Foundry Local je lagani runtime koji preuzima, upravlja i servisira modele u potpunosti na vašem stroju. Njegova najvažnija značajka za nas je da izlaže OpenAI-kompatibilnu HTTP točku — što znači da OpenAI SDK i Microsoft Agent Frameworkov OpenAI klijent rade s njim samo promjenom base_url. Sve što ste naučili o izgradnji agenata prenosi se direktno; samo se točka pomiče iz oblaka na localhost.
Foundry Local također automatski bira najbolju verziju modela za vaš hardver — CPU build, CUDA/GPU build ili NPU build — pa ne morate ručno optimizirati za svaku mašinu.
Instalirajte Foundry Local (vidi dokumentaciju za vaš OS), zatim provjerite da radi:
# 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
Nakon što je servis pokrenut, imate lokalnu, OpenAI-kompatibilnu točku (obično http://localhost:PORT/v1). Bilježnica koristi foundry-local-sdk da automatski pronađe točku, tako da ne morate ručno zadavati 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 generiraju dobro oblikovane strukture poziva alata — što je upravo ono što lokalni chat model pretvara u lokalnog agenta.
Proces je standardni alat-pozivni krug koji već poznajete, samo sada radi lokalno:
sequenceDiagram
participant U as Korisnik
participant A as Qwen Agent (lokalno)
participant T as Lokalni alat
U->>A: "Što radi auth.py?"
A->>A: Odluči: pozvati read_file
A->>T: read_file("auth.py")
T-->>A: sadržaj datoteke
A->>A: Razmisli o sadržaju
A-->>U: Objašnjenje
Pretraživanje dokumentacije je ono gdje lokalni agenti zaista donose vrijednost. 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 na zahtjev dohvaća relevantne dijelove.
Koristimo Chromu, ugrađenu vektorsku pohranu koja radi unutar procesa bez potrebe za serverom. Cijeli lanac 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[Lokalno ugradi upit]
QE --> V
V -->|top-k dijelovi| A[Qwen agent]
A --> Ans[Utemeljen odgovor]
Ovo je isti obrazac Agentic RAG iz Lekcije 5 — jedina promjena je da svaki dio sada radi na vašem stroju.
MCP je transportni protokol, 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, upite baza podataka — potpuno offline.
Sigurnosna pozicija je drugačija nego u oblaku, ali nije nepostojeća: lokalni MCP server i dalje radi s dopuštenjima vašeg korisnika, stoga ograničite što može pristupati (npr. direktorij projekta, a ne cijelu početnu mapu) i tretirajte njegove izlaze kao ulaze koje treba provjeriti.
Lokalno-prvo ne znači samo lokalno. Zreli sustavi usmjeravaju prema osjetljivosti i težini zadatka:
| Situacija | Gdje radi |
|---|---|
| Osjetljiv kod / podaci, ili offline | Lokalni SLM |
| Jednostavan, ograničen zadatak | Lokalni SLM (jeftino, brzo) |
| Teško višeskokovsko rezoniranje nad neosjetljivim podacima | Oblačni model |
| Sve, tijekom prekida rada | 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 oslanja na lokalno kada oblak nije dostupan, tako da agent gubi na kvaliteti, ali ne i potpuno propada.
flowchart LR
Q[Zahtjev] --> S{Osjetljivo ili izvan mreže?}
S -->|da| L[Lokalni SLM]
S -->|ne| C{Treba li duboko razmišljanje?}
C -->|ne| L
C -->|da| Cloud[Model u oblaku]
L --> Out[Odgovor]
Cloud --> Out
Otvorite code_samples/17-local-agent-foundry-local.ipynb i prolazite kroz njega. Izgradit ćete lokalnog inženjerskog asistenta koji radi potpuno na vašem radnom stroju i može:
Niti jednom točkom ne koristite cloud inference.
Asistent se povezuje na Foundry Local putem OpenAI-kompatibilne točke, tako da 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 pronalazi/preuzima model i daje nam lokalnu krajnju točku.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key je lokalni rezervni znak
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\")
Obratite pozornost na sandbox provjeru — čak i lokalno, alat koji čita proizvoljne putanje predstavlja rizik. Bilježnica drži svaki alat ograničenim na jedan korijen projekta.
Testirajte svoje razumijevanje prije prelaska na zadatak.
1. Dajte 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 koda oblačnog agenta s Foundry Local?
4. Zašto koristimo specifično Qwen model za pozivanje funkcija, a ne bilo koji SLM?
5. Koje komponente u lokalnom RAG lancu rade na stroju?
6. Lokalni MCP server radi na vašem stroju. Čini li to automatski sigurnim? Koju mjeru opreza biste i dalje trebali poduzeti?
7. Opišite smisleno pravilo hibridnog usmjeravanja koje uključuje lokalni model.
8. Koji je realan minimum 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 (ako želite, koristite jednu od lekcijskih mapa ovog repozitorija).
Vaša predaja treba:
Dodati alat find_todos koji pretražuje projekt za TODO/FIXME komentare i vraća ih s informacijama o datoteci i broju retka — uz održavanje iste sandbox provjere kao kod read_file.
Zatim napišite kratak odlomak o čemu biste premjestili u oblak, a što biste zadržali lokalno za ovog recenzenta i zašto. Procjenjujete se prema tome jesu li lokalne komponente pravilno povezane i je li vaše hibridno zaključivanje ispravno — ne prema kvaliteti modela.
U ovoj lekciji izgradili ste agenta koji radi potpuno na vašem vlastitom računalu:
Ovo zaokružuje put implementacije: Lekcija 16 je skalirala agente u Microsoft Foundry, a ova lekcija ih je skalirala na jedno radno mjesto. Sljedeća lekcija bavi se održavanjem sigurnosti 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.