![]()
Predchádzajúca lekcia škálovala agentov hore do cloudu. Táto ich prináša dole na jeden stroj. Na konci budete mať fungujúceho inžinierskeho asistenta, ktorý rozmýšľa, volá nástroje, číta vaše súbory a vyhľadáva vo vašej dokumentácii — bez jedinej cloudovej inferenčnej požiadavky.
Prečo by ste to chceli? Tri dôvody, ktoré sa neustále objavujú v reálnej inžinierskej práci:
Háčik je v tom, že vymieňate špičkový cloudový model za Malý jazykový model (SLM) bežiaci na vašom CPU, GPU alebo NPU. Táto lekcia je o budovaní agentov, ktorí sú dobrí v rámci tohto obmedzenia, namiesto predstierania, že toto obmedzenie neexistuje.
Táto lekcia pokryje:
Po dokončení tejto lekcie budete vedieť:
Táto lekcia predpokladá, že ste absolvovali predchádzajúce lekcie a ste pohodlní s:
Budete tiež potrebovať:
requirements.txt, plus foundry-local-sdk, openai a chromadb pre túto lekciu.Špičkový cloudový model má stovky miliárd parametrov a dátové centrum za sebou. SLM má pár miliárd parametrov a musí sa zmestiť do RAM vášho notebooku. Tento rozdiel nastavuje jasné očakávania.
SLM sú dobré v:
SLM sú slabšie v:
Víťazná stratégia pre lokálnych agentov je teda: nechajte SLM orchestrovať a nechajte nástroje robiť ťažkú prácu. Model nemusí poznať váš kód; musí vedieť, kedy volať read_file a search_docs. To priamo hrá do silných stránok SLM.
flowchart LR
U[Vývojár] --> A[Lokálny SLM agent]
A -->|rozhoduje, ktorý nástroj| T1[read_file]
A -->|rozhoduje, ktorý nástroj| T2[search_docs RAG]
A -->|rozhoduje, ktorý nástroj| T3[analyze_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[Odpoveď, úplne na zariadení]
Microsoft Foundry Local je ľahký runtime, ktorý sťahuje, spravuje a poskytuje modely výhradne na vašom stroji. Jeho najdôležitejšou vlastnosťou pre nás je, že sprístupňuje OpenAI-kompatibilný HTTP endpoint — čo znamená, že OpenAI SDK a klient Microsoft Agent Frameworku pre OpenAI s ním pracujú len so zmenou base_url. Všetko, čo ste sa naučili o budovaní agentov, sa prenáša priamo; mení sa iba endpoint z cloudového na localhost.
Foundry Local tiež automaticky vyberie najlepší build modelu pre váš hardvér — CPU build, CUDA/GPU build alebo NPU build — takže nemusíte manuálne optimalizovať pre každý stroj.
Nainštalujte Foundry Local (pozrite si dokumentáciu pre váš OS), potom potvrďte, že funguje:
# Inštalujte (napríklad; riaďte sa dokumentáciou pre vašu platformu)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Stiahnite a spustite model Qwen, potom spustite lokálnu službu
foundry model run qwen2.5-7b-instruct
foundry service status
Keď služba beží, máte lokálny OpenAI-kompatibilný endpoint (typicky http://localhost:PORT/v1). Notebok používa foundry-local-sdk na automatické zistenie endpointu, takže nemusíte tvrdoko kódovať port.
Agent je agentom iba vtedy, ak dokáže volať nástroje. Mnohé SLM vedia chatovať, ale generujú nespoľahlivé, nesprávne volania nástrojov. Qwen modely sú trénované pre volanie funkcií a konzistentne generujú správne štruktúry volaní nástrojov — presne to premieňa lokálny chat model na lokálneho agenta.
Priebeh je štandardná slučka volania nástrojov, ktorú už poznáte, len beží na zariadení:
sequenceDiagram
participant U as Používateľ
participant A as Agent Qwen (lokálny)
participant T as Lokálny nástroj
U->>A: "Čo robí auth.py?"
A->>A: Rozhodnúť: zavolať read_file
A->>T: read_file("auth.py")
T-->>A: obsah súboru
A->>A: Uvažovať nad obsahom
A-->>U: Vysvetlenie
Vyhľadávanie v dokumentácii je miesto, kde lokálni agenti ukazujú svoju hodnotu. Namiesto spoliehania sa na to, že SLM si zapamätal dokumentáciu vášho frameworku, vložíte tieto dokumenty do lokálnej vektorovej databázy a necháte agenta vyhľadávať relevantné časti na požiadanie.
Používame Chroma, zabudovanú vektorovú databázu, ktorá beží v rámci procesu bez správy servera. Potrubie je úplne lokálne: lokálny embedding model → lokálne vektory → lokálne vyhľadávanie → lokálny SLM.
flowchart TB
D[Vaše dokumenty / kód] --> E[Lokálny embedding model]
E --> V[(Chroma vektorová databáza - na disku)]
Q[Dotaz agenta] --> QE[Lokálne vložiť dotaz]
QE --> V
V -->|top-k útržky| A[Qwen agent]
A --> Ans[Zakotvená odpoveď]
Toto je ten istý vzor Agentic RAG z Lekcie 5 — jediná zmena je, že každá súčasť beží na vašom stroji.
MCP je transport, nie cloudová služba. MCP server môže bežať ako lokálny proces na stdio, sprístupňujúc nástroje agentovi cez štandardný protokol. To umožňuje znovuvyužitie rastúcej ekosystému MCP serverov — prístup k súborovému systému, git operácie, dopyty do databázy — výhradne offline.
Bezpečnostná pozícia je iná ako v cloude, ale nie absentná: lokálny MCP server stále beží s oprávneniami vášho používateľa, preto ohraničte jeho dosah (napríklad na adresár projektu, nie na celý domovský adresár) a považujte jeho výstupy za vstupy, ktoré je potrebné overiť.
Lokálne prioritné neznamená len lokálne. Zrelé systémy smerujú podľa citlivosti a náročnosti:
| Situácia | Kde beží |
|---|---|
| Citlivý kód / dáta, alebo offline | Lokálny SLM |
| Jednoduchá, ohraničená úloha | Lokálny SLM (lacný, rýchly) |
| Náročné viacstupňové uvažovanie o necitlivých dátach | Cloudový model |
| Všetko počas výpadku | Lokálny SLM (jemné degradovanie) |
Toto odráža myšlienku modelového smerovania z Lekcie 16 — s tým rozdielom, že jeden z „modelov“ je teraz váš vlastný stroj. Robustný dizajn sa vracia k lokálnemu modelu, keď cloud nie je dostupný, takže agent degraduje kvalitu namiesto úplného zlyhania.
flowchart LR
Q[Žiadosť] --> S{Citlivé alebo offline?}
S -->|áno| L[Lokálny SLM]
S -->|nie| C{Vyžaduje hlboké uvažovanie?}
C -->|nie| L
C -->|áno| Cloud[Cloudový model]
L --> Out[Odpoveď]
Cloud --> Out
Otvorte code_samples/17-local-agent-foundry-local.ipynb a prejdite si ho. Postavíte lokálneho inžinierskeho asistenta, ktorý beží výhradne na vašom pracovnom stanici a môže:
Žiadna cloudová inference sa nikde nepoužíva.
Asistent sa pripája k Foundry Local cez OpenAI-kompatibilný endpoint, takže kód agenta vyzerá takmer rovnako ako v cloudových lekciách — mení sa iba klient:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local objavuje/stiahne model a poskytuje nám lokálny koncový bod.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key je lokálna zástupná hodnota
Nástroje sú obyčajné Python funkcie ohraničené na adresár projektu:
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\")
Pozor na kontrolu sandboxu — aj lokálne je nástroj, ktorý číta ľubovoľné cesty, rizikom. Notebok udržiava každý nástroj ohraničený na jeden koreň projektu.
Otestujte svoje porozumenie pred prechodom na zadanie.
1. Uveďte dva konkrétne dôvody, prečo spustiť agenta lokálne namiesto v cloude.
2. Aké je odporúčané rozdelenie práce medzi SLM a jeho nástrojmi v lokálnom agentovi a prečo?
3. Čo umožňuje znovuvyužiť cloudový kód agenta s Foundry Local?
4. Prečo teda špecificky používame Qwen model pre volanie funkcií namiesto hocijakého SLM?
5. Ktoré komponenty bežia na stroji v lokálnom RAG potrubí?
6. Lokálny MCP server beží na vašom stroji. Znamená to automaticky, že je bezpečný? Aké opatrenie by ste mali stále dodržiavať?
7. Opíšte rozumné pravidlo hybridného smerovania, ktoré zahŕňa lokálny model.
8. Aký je realistický minimálny RAM údaj pre spustenie lokálneho agenta v tejto lekcii a čo vám dáva viac RAM?
Rozšírte lokálneho inžinierskeho asistenta o lokálneho kontrolóra dokumentácie pre malý projekt podľa vlastného výberu (môžete použiť jeden z priečinkov lekcií v tomto repozitári).
Vaša odovzdaná práca by mala:
Pridať nástroj find_todos ktorý prehľadá projekt kvôli komentárom TODO/FIXME a vráti ich spolu so súborom a číslom riadku — s rovnakou kontrolou sandboxu ako read_file.
Potom napíšte krátky odstavec o tom, čo by ste presunuli do cloudu a čo by ste nechali lokálne pre tohto recenzenta a prečo. Hodnotí sa, či sú lokálne komponenty správne prepojené a či je vaše hybridné uvažovanie správne — nie kvalita modelu.
V tejto lekcii ste vytvorili agenta, ktorý beží úplne na vašom vlastnom zariadení:
Toto uzatvára nasadzovací oblúk: Lekcia 16 škálovala agentov do Microsoft Foundry a táto lekcia ich zmenšila na jedno pracovisko. Nasledujúca lekcia sa venuje zabezpečeniu nasadených agentov.
Nasadzovanie škálovateľných agentov
Vyhlásenie o zodpovednosti: Tento dokument bol preložený pomocou AI prekladateľskej služby Co-op Translator. Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.