![]()
Ankstesnėje pamokoje agentai buvo perkeliami į debesį. Šioje jie perkeliami į vieną kompiuterį. Pamokos pabaigoje turėsite veikiančią inžinerijos asistentę, kuri mąsto, iškviečia įrankius, skaito jūsų failus ir ieško jūsų dokumentacijoje — be jokio skambučio į debesies inferenciją.
Kodėl to norėtumėte? Trys priežastys, kurios nuolat kyla realiame inžineriniame darbe:
Svarbiausia yra tai, kad jūs keičiate pažangų debesies modelį į Mažą Kalbos Modelį (SLM), veikiančią jūsų CPU, GPU arba NPU. Ši pamoka yra apie agentų kūrimą, kurie yra geri pagal šį apribojimą, o ne apie apsimetimą, kad apribojimo nėra.
Šioje pamokoje aptarsime:
Užbaigus šią pamoką, jūs žinosite, kaip:
Ši pamoka prielaida, kad esate įvaldę ankstesnes pamokas ir mokate:
Jums taip pat reikės:
requirements.txt šiame repozitorijoje, taip pat foundry-local-sdk, openai ir chromadb šiai pamokai.Pažangus debesies modelis turi šimtus milijardų parametrų ir už jo stovi duomenų centras. Mažas kalbos modelis turi keletą milijardų parametrų ir turi tilpti jūsų nešiojamojo kompiuterio atmintyje. Šis skirtumas nustato aiškius lūkesčius.
SLM gerai sugeba:
SLM blogiau sugeba:
Sėkminga vietinių agentų strategija yra: leiskite SLM orkestruoti, o įrankiams atlikti sunkų darbą. Modeliui nereikia žinoti jūsų kodo bazės — reikia žinoti, kada iškviesti read_file ir search_docs. Tai tiesiogiai atitinka SLM stipriąsias puses.
flowchart LR
U[Kūrėjas] --> A[Vietinis SLM agentas]
A -->|pasirenka įrankį| T1[read_file]
A -->|pasirenka įrankį| T2[search_docs RAG]
A -->|pasirenka įrankį| T3[analyze_code]
T1 --> A
T2 --> A
T3 --> A
A --> R[Atsakymas, pilnai įrenginyje]
Microsoft Foundry Local yra lengvas vykdymo variklis, kuris atsisiunčia, valdo ir aptarnauja modelius visiškai jūsų mašinoje. Svarbiausia mums savybė yra ta, kad jis atveria OpenAI suderinamą HTTP endpoint’ą — tai reiškia, kad OpenAI SDK ir Microsoft Agent Framework OpenAI klientas veikia tiesiog pakeitus base_url. Viskas, ką išmokote apie agentų kūrimą, išlieka nepakitę; tik endpoint’as perkeltas iš debesies į localhost.
Foundry Local taip pat automatiškai parenka geriausią modelio versiją jūsų aparatinei įrangai — CPU versiją, CUDA/GPU versiją ar NPU versiją — tad nereikia optimizuoti rankiniu būdu kiekvienai mašinai.
Įdiekite Foundry Local (žr. dokumentaciją jūsų OS), tada patikrinkite, ar veikia:
# Įdiekite (pavyzdžiui; vadovaukitės savo platformos dokumentacija)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Atsisiųskite ir paleiskite Qwen modelį, tada pradėkite vietinę paslaugą
foundry model run qwen2.5-7b-instruct
foundry service status
Kai paslauga veikia, turite vietinį OpenAI suderinamą endpoint’ą (dažniausiai http://localhost:PORT/v1). Užrašų knyga naudoja foundry-local-sdk, kad automatiškai surastų endpoint’ą, tad jums nereikia rankiniu būdu nurodyti prievado.
Agentas yra tik agentas, jei gali iškviesti įrankius. Daugelis SLM gali bendrauti, bet sukuria nepatikimus, netaisyklingus įrankių kvietimus. Qwen modeliai mokyti iškviesti funkcijas ir nuosekliai generuoja gerai suformuotus įrankių kvietimus — tik tai paverčia vietinį pokalbių modelį vietiniu agentu.
Srautas yra standartinis įrankių kvietimo ciklas, kurį jau pažįstate, tik vykdomas įrenginyje:
sequenceDiagram
participant U as Vartotojas
participant A as Qwen Agentas (vietinis)
participant T as Vietinis įrankis
U->>A: "Ką atlieka auth.py?"
A->>A: Nuspręsti: iškviesti read_file
A->>T: read_file("auth.py")
T-->>A: failo turinys
A->>A: Svarstyti turinį
A-->>U: Paaiškinimas
Dokumentų paieška yra vietinių agentų naudos pagrindas. Užuot tikėjęsi, kad SLM įsiminė jūsų sistemos dokumentus, jūs įkeliat tuos dokumentus į vietinę vektorinę duomenų bazę ir leidžiate agentui pagal poreikį gauti atitinkamas dalis.
Naudojame Chromą, įterptą vektorinį saugyklą, veikiančią vietoje be jokio serverio administravimo. Srautas yra visiškai vietinis: vietinis embedavimo modelis → vietiniai vektoriai → vietinė paieška → vietinis SLM.
flowchart TB
D[Jūsų dokumentai / kodas] --> E[Vietinis įdėjimo modelis]
E --> V[(Chroma vektorinė DB - diske)]
Q[Agento užklausa] --> QE[Vietoje įdėti užklausą]
QE --> V
V -->|aukščiausi k gabalai| A[Qwen agentas]
A --> Ans[Pagrįstas atsakymas]
Tai tas pats Agentic RAG šablonas iš 5 pamokos — vienintelis skirtumas, kad kiekviena dalis veikia jūsų mašinoje.
MCP yra transportas, ne debesijos paslauga. MCP serverį galite paleisti vietiniu procesu per stdio, atverdami įrankius agentui per standartinį protokolą. Tai leidžia pakartotinai naudoti auginančią MCP serverių ekosistemą — failų sistemos prieigą, git operacijas, duomenų bazių užklausas — visiškai neprisijungus.
Saugumo požiūris skiriasi nuo debesies, bet nėra neegzistuojantis: vietinis MCP serveris veikia su jūsų vartotojo leidimais, todėl apribokite, ką jis gali pasiekti (projekto katalogą, ne visą namų aplanką) ir vertinkite jo išvestis kaip įėjimus, kuriuos reikia patikrinti.
Vietinis pirmumas nereiškia vien vietiniai veiksmai. Brandžios sistemos nukreipia užklausas pagal jautrumą ir sudėtingumą:
| Situacija | Kur vykdoma |
|---|---|
| Jautrus kodas / duomenys arba neveikia tinklas | Vietinis SLM |
| Paprastas, ribotas uždavinys | Vietinis SLM (pigu, greita) |
| Sunkus daugiapakopis loginis sprendimas su nejautriais duomenimis | Debesies modelis |
| Viskas, gedimo metu | Vietinis SLM (sklandus taisymas) |
Tai atspindi modelių nukreipimo idėją iš 16 pamokos — tik vienas iš “modelių” dabar yra jūsų mašina. Tvirtas dizainas krinta atgal į vietinį sprendimą, kai debesies nėra, tad agentas blogėja kokybe, bet visiškai nesugenda.
flowchart LR
Q[Užklausa] --> S{Konfidencialu ar neprisijungęs?}
S -->|taip| L[Vietinis SLM]
S -->|ne| C{Reikia gilaus mąstymo?}
C -->|ne| L
C -->|taip| Cloud[Debesų modelis]
L --> Out[Atsakymas]
Cloud --> Out
Atidarykite code_samples/17-local-agent-foundry-local.ipynb ir prašykite jį. Kūrsite vietinį inžinerijos asistentą, kuris veikia visai jūsų darbo vietai ir gali:
Jokios debesies inferencijos nėra naudojama.
Asistentė jungiasi prie Foundry Local per OpenAI suderinamą endpoint’ą, todėl agento kodas atrodo beveik identiškas kaip debesies pamokose — tik klientas pasikeičia:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local aptinka/parsisiunčia modelį ir suteikia mums vietinį galinį tašką.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key yra vietinis vietos laikiklis
Įrankiai yra įprastos Python funkcijos, apribotos projekto katalogu:
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\")
Atkreipkite dėmesį į smėlio dėžės patikrą — net vietoje įrankis, skaitantis bet kokius kelius, yra rizika. Užrašų knyga kiekvieną įrankį riboja iki vieno projekto šaknies katalogo.
Ištestuokite savo supratimą prieš pereidami prie užduoties.
1. Pateikite dvi konkrečias priežastis, kodėl verta vykdyti agentą vietoje, o ne debesyje.
2. Koks yra rekomenduojamas darbo pasidalijimas tarp SLM ir jo įrankių vietiniame agente ir kodėl?
3. Kas leidžia pakartotinai naudoti debesies agentų kodą su Foundry Local?
4. Kodėl būtent naudojame Qwen funkcijų kvietimų modelį, o ne bet kurį SLM?
5. Kuriuose kompiuterio komponentuose vyksta vietinė RAG pipeline?
6. Vietinis MCP serveris veikia jūsų mašinoje. Ar tai automatiškai reiškia, kad jis saugus? Kokias atsargumo priemones turite vis dar taikyti?
7. Apibūdinkite prasmingą hibridinį nukreipimo taisyklę, į kurią įtrauktas vietinis modelis.
8. Kokia reali RAM minimumo reikšmė vietiniam agentui šioje pamokoje ir ką suteikia daugiau RAM?
Išplėskite vietinį inžinerijos asistentą į vietinį dokumentacijos peržiūros įrankį mažam pasirinktiniam projektui (jei norite, naudokite vieną iš šio repozitorijos pamokų katalogų).
Jūsų pateikimas turėtų:
Pridėti find_todos įrankį kuris suranda projekte komentarus TODO/FIXME ir pateikia juos su failu ir eilutės numeriu — išlaikant tą pačią smėlio dėžės patikrą kaip ir read_file.
Tada parašykite trumpą pastraipą apie ką perkelti į debesis ir ką palikti vietoje šiam vertintojui, ir kodėl. Vertinama, ar vietinės komponentės yra teisingai sujungtos ir ar jūsų hibridinis samprotavimas yra pagrįstas — o ne modelio kokybė.
Šioje pamokoje sukūrėte agentą, kuris veikia visiškai jūsų pačių mašinoje:
Tai užbaigia diegimo ciklą: 16-oji pamoka pakėlė agentus į Microsoft Foundry, o ši pamoka sumažino juos iki vieno darbo stoties. Kita pamoka skirta diegimo agentų saugumui.
Diegiami mastelį keičiančių agentų
Atsakomybės apribojimas: Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojama naudoti profesionalų žmogiškąjį vertimą. Mes neatsakome už jokius nesusipratimus ar neteisingą interpretaciją, kilusią naudojantis šiuo vertimu.