![]()
Předchozí lekce škálovala agenty nahoru do cloudu. Tato je přenáší dolů na jeden stroj. Na konci budete mít fungujícího inženýrského asistenta, který rozumí, volá nástroje, čte vaše soubory a vyhledává v dokumentaci — bez jediného cloudového inferenčního volání.
Proč byste to chtěli? Tři důvody, které se neustále objevují v reálné inženýrské práci:
Podmínkou je, že vyměňujete nejmodernější cloudový model za Small Language Model (SLM) běžící na vašem CPU, GPU nebo NPU. Tato lekce je o vytváření agentů, kteří jsou dobří v rámci tohoto omezení, místo předstírání, že omezení neexistuje.
Tato lekce pokrývá:
Po dokončení této lekce budete vědět, jak:
Tato lekce předpokládá, že jste dokončili předchozí lekce a jste pohodlní s:
Také budete potřebovat:
requirements.txt, plus foundry-local-sdk, openai a chromadb pro tuto lekci.Nejmodernější cloudový model má stovky miliard parametrů a za sebou datové centrum. SLM má pár miliard parametrů a musí se vejít do RAM vašeho notebooku. Tento rozdíl nastavuje jasná očekávání.
SLM vynikají v:
SLM jsou slabší v:
Vítězná strategie pro lokální agenty je proto: nechte SLM orchestraci a nechte nástroje dělat těžkou práci. Model nemusí znát vaši kódovou základnu — musí vědět, kdy volat read_file a search_docs. To přímo odpovídá silným stránkám SLM.
flowchart LR
U[Vývojář] --> A[Místní SLM Agent]
A -->|rozhoduje, který nástroj| T1[read_file]
A -->|rozhoduje, který nástroj| T2[search_docs RAG]
A -->|rozhoduje, který nástroj| T3[analyze_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[Odpověď, plně na zařízení]
Microsoft Foundry Local je lehký runtime, který stahuje, spravuje a poskytuje modely kompletně na vašem stroji. Jeho nejdůležitější funkcí pro nás je, že vystavuje OpenAI-kompatibilní HTTP endpoint — což znamená, že OpenAI SDK a OpenAI klient Microsoft Agent Frameworku s ním fungují pouze změnou base_url. Vše, co jste se naučili o budování agentů, přechází přímo; jen endpoint se přesouvá z cloudu na localhost.
Foundry Local také automaticky vybere nejlepší verzi modelu pro váš hardware — CPU build, CUDA/GPU build nebo NPU build — takže nemusíte ručně optimalizovat pro každý stroj.
Nainstalujte Foundry Local (viz dokumentaci pro váš OS) a poté ověřte, že funguje:
# Instalace (příklad; postupujte podle dokumentace pro vaši platformu)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Stáhněte a spusťte model Qwen, poté spusťte lokální službu
foundry model run qwen2.5-7b-instruct
foundry service status
Jakmile služba běží, máte lokální OpenAI-kompatibilní endpoint (typicky http://localhost:PORT/v1). Notebok používá foundry-local-sdk k automatickému zjištění endpointu, takže nemusíte zadávat port natvrdo.
Agent je agentem pouze pokud může volat nástroje. Mnoho SLM dokáže chatovat, ale vytváří nespolehlivá, špatně formátovaná volání nástrojů. Qwen modely jsou trénovány pro volání funkcí a konzistentně vytváří dobře formátované struktury volání nástrojů — což přesně umožňuje proměnit lokální chat model v lokální agenta.
Průběh je standardní smyčka volání nástrojů, kterou už znáte, jen běží na zařízení:
sequenceDiagram
participant U as Uživatel
participant A as Qwen Agent (místní)
participant T as Lokální nástroj
U->>A: "Co dělá auth.py?"
A->>A: Rozhodnout: zavolat read_file
A->>T: read_file("auth.py")
T-->>A: obsah souboru
A->>A: Analyzovat obsah
A-->>U: Vysvětlení
Vyhledávání v dokumentaci je místem, kde lokální agenti prokazují svůj přínos. Místo abyste doufali, že SLM si zapamatoval dokumentaci vašeho frameworku, zakódujete tyto dokumenty do lokální vektorové databáze a necháte agenta na vyžádání získávat relevantní úryvky.
Používáme Chroma, vnořený vektorový úložiště, které běží v procesu bez nutnosti serveru. Potrubí je kompletně lokální: lokální embedding model → lokální vektory → lokální vyhledávání → lokální SLM.
flowchart TB
D[Vaše dokumentace / kód] --> E[Lokální embedding model]
E --> V[(Chroma vektorová databáze - na disku)]
Q[Dotaz agenta] --> QE[Lokální vložení dotazu]
QE --> V
V -->|top-k částí| A[Agent Qwen]
A --> Ans[Odpověď na základě zdrojů]
Toto je stejný Agentický RAG vzor jako v Lekci 5 — jediný rozdíl je, že všechny komponenty běží na vašem stroji.
MCP je transport, ne cloudová služba. MCP server může běžet jako lokální proces na stdio, poskytující nástroje vašemu agentovi přes standardní protokol. To vám umožňuje znovu použít rostoucí ekosystém MCP serverů — přístup k souborovému systému, git operace, dotazy do databáze — zcela offline.
Bezpečnostní postoj se liší od cloudu, ale není nulový: lokální MCP server běží s oprávněními vašeho uživatele, proto nastavte rozsah, co může ovlivnit (adresář projektu, ne celou domovskou složku) a považujte jeho výstupy za vstupy, které je třeba ověřit.
Priorita lokálního neznamená pouze lokální. Zralé systémy volí podle citlivosti a obtížnosti:
| Situace | Kde běží |
|---|---|
| Citlivý kód / data nebo offline | Lokální SLM |
| Jednoduchý, omezený úkol | Lokální SLM (levné, rychlé) |
| Obtížné vícekrokové uvažování nad necitlivými daty | Cloudový model |
| Všechno během výpadku | Lokální SLM (přiměřené snížení kvality) |
To odráží koncept směrování modelu z Lekce 16 — akorát že jeden z „modelů“ je vaše vlastní zařízení. Robustní design se při nedostupnosti cloudu vrací k lokálnímu, takže agent klesá v kvalitě místo úplného pádu.
flowchart LR
Q[Požadavek] --> S{Citlivé nebo offline?}
S -->|ano| L[Lokální SLM]
S -->|ne| C{Potřebuje hluboké uvažování?}
C -->|ne| L
C -->|ano| Cloud[Cloudový model]
L --> Out[Odpověď]
Cloud --> Out
Otevřete code_samples/17-local-agent-foundry-local.ipynb a projděte ho. Vytvoříte lokálního inženýrského asistenta, který běží kompletně na vašem pracovním stroji a umí:
Žádné cloudové inference nejsou použity.
Asistent se připojuje k Foundry Local přes OpenAI-kompatibilní endpoint, takže kód agenta vypadá téměř identicky jako v cloudových lekcích — mění se jen klient:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local najde/stáhne model a poskytne nám lokální koncový bod.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key je lokální zástupce
Nástroje jsou obyčejné Python funkce omezené na adresář 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\")
Všimněte si sandboxové kontroly — i lokálně je nástroj čtoucí libovolné cesty rizikový. Notebook omezuje každý nástroj na jeden kořenový adresář projektu.
Otestujte své porozumění před tím, než přejdete k úkolu.
1. Uveďte dva konkrétní důvody, proč spustit agenta lokálně místo v cloudu.
2. Jaké je doporučené rozdělení práce mezi SLM a jeho nástroji v lokálním agentovi a proč?
3. Co umožňuje opětovné použití cloudového kódu agenta s Foundry Local?
4. Proč používáme právě Qwen model s voláním funkcí namísto jakéhokoli SLM?
5. Které komponenty v lokálním RAG pipeline běží na stroji?
6. Lokální MCP server běží na vašem stroji. Znamená to, že je automaticky bezpečný? Jaké opatření byste měli stále přijmout?
7. Popište smysluplné pravidlo hybridního směrování zahrnující lokální model.
8. Jaký je reálný minimální požadavek na RAM pro běh lokálního agenta v této lekci a co vám více RAM přinese?
Rozšiřte lokálního inženýrského asistenta na lokálního recenzenta dokumentace pro malý projekt dle vašeho výběru (můžete použít některou lekční složku z tohoto repozitáře).
Vaše řešení by mělo:
Přidat nástroj find_todos, který prohledá projekt pro komentáře TODO/FIXME a vrátí je se souborem a číslem řádku — s použitím stejné sandboxové kontroly jako read_file.
Pak napište krátký odstavec o tom, co byste přesunuli do cloudu a co byste ponechali lokálně pro tohoto recenzenta a proč. Hodnoceni jste za to, zda jsou lokální komponenty správně propojené a zda je vaše hybridní uvažování správné — ne za kvalitu modelu.
V této lekci jste vytvořili agenta, který běží zcela na vašem vlastním počítači:
Tím se uzavírá nasazovací oblouk: Lekce 16 škálovala agenty do Microsoft Foundry, a tato lekce je škáluje dolů na jedno pracovní stanici. Následující lekce se zaměřuje na zabezpečení nasazených agentů.
Nasazení škálovatelných agentů
Prohlášení o omezení odpovědnosti: Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.