![]()
Edellinen oppitunti skaalasi agentteja pilveen. Tämä tuo ne alas yhdelle koneelle. Lopuksi sinulla on toimiva insinöörin assistentti, joka perustelee, kutsuu työkaluja, lukee tiedostojasi ja etsii dokumentaatiostasi — ilman yhtään pilvipohjaista päättelykutsua.
Miksi haluaisit niin? Kolme syytä, jotka nousevat jatkuvasti esiin todellisessa insinöörityössä:
Kiintiönä on, että vaihdat eturivin pilvimallin pieneen kielimalliin (SLM), joka toimii CPU:llasi, GPU:llasi tai NPU:llasi. Tämä oppitunti käsittelee agenttien rakentamista, jotka ovat hyviä tämän rajoitteen puitteissa sen sijaan, että teeskentelet ettei rajoitetta ole.
Tässä oppitunnissa käsitellään:
Oppitunnin suorittamisen jälkeen osaat:
Tämä oppitunti olettaa, että olet suorittanut aikaisemmat oppitunnit ja olet perehtynyt:
Tarvitset myös:
requirements.txt, lisäksi foundry-local-sdk, openai ja chromadb tätä oppituntia varten.Eturivin pilvimallissa on satoja miljardeja parametreja ja datakeskus takana. SLM:llä on muutama miljardi parametria ja se täytyy mahtua kannettavan tietokoneen muistiin. Tämä ero luo selkeät odotukset.
SLM:t ovat hyviä:
SLM:t ovat heikompia:
Menestyksen avain paikallisissa agenteissa on siis: anna SLM:n orkestroida, ja anna työkalujen hoitaa raskas työ. Mallin ei tarvitse tuntea koodikantaasi — sen täytyy tietää milloin kutsua read_file ja search_docs. Tämä sopii suoraan SLM:n vahvuuksiin.
flowchart LR
U[Kehittäjä] --> A[Paikallinen SLM-agentti]
A -->|päättää työkalun| T1[lue_tiedosto]
A -->|päättää työkalun| T2[hae_dokumentteja RAG]
A -->|päättää työkalun| T3[analysoi_koodi]
T1 --> A
T2 --> A
T3 --> A
A --> R[Vastaus, täysin laitteessa]
Microsoft Foundry Local on kevyt suoritusaikaympäristö, joka lataa, hallinnoi ja tarjoaa malleja kokonaan koneellasi. Tärkein ominaisuus meille on, että se tarjoaa OpenAI-yhteensopivan HTTP-päätepisteen — mikä tarkoittaa, että OpenAI SDK ja Microsoft Agent Frameworkin OpenAI-asiakas toimivat sen kanssa vain vaihtamalla base_url:n. Kaikki agentin rakentamiseen liittyvä oppimasi siirtyy suoraan; vain päätepiste muuttaa pilvestä localhost:iin.
Foundry Local valitsee myös automaattisesti parhaan malliversion laitteistollesi — CPU-buildin, CUDA/GPU-buildin tai NPU-buildin — joten sinun ei tarvitse optimoida konetta kohden manuaalisesti.
Asenna Foundry Local (katso dokumentaatio omalle käyttöjärjestelmällesi), ja tarkista toiminta:
# Asenna (esimerkki; seuraa alustan ohjeita)
winget install Microsoft.FoundryLocal # Windows
# brew install microsoft/foundrylocal/foundrylocal # macOS
# Lataa ja suorita Qwen-malli, käynnistä sitten paikallinen palvelu
foundry model run qwen2.5-7b-instruct
foundry service status
Kun palvelu on käynnissä, sinulla on paikallinen, OpenAI-yhteensopiva päätepiste (tyypillisesti http://localhost:PORT/v1). Muistikirja käyttää foundry-local-sdk:ta löytääkseen päätepisteen automaattisesti, joten porttia ei tarvitse kovakoodata.
Agentti on agentti vain jos se voi kutsua työkaluja. Moni SLM voi keskustella mutta tuottaa epäluotettavia, virheellisiä työkalukutsuja. Qwen-mallit on koulutettu funktiokutsuihin ja ne tuottavat johdonmukaisia, hyvin muodostettuja työkalukutsurakenteita — ja juuri tämä tekee paikallisesta keskustelumallista paikallisen agentin.
Kulku on tuttu työkalukutsusilmukka, mutta se toimii laitteellasi:
sequenceDiagram
participant U as Käyttäjä
participant A as Qwen Agentti (paikallinen)
participant T as Paikallinen Työkalu
U->>A: "Mitä auth.py tekee?"
A->>A: Päätä: kutsu read_file
A->>T: read_file("auth.py")
T-->>A: tiedoston sisältö
A->>A: Perustele sisällön perusteella
A-->>U: Selitys
Dokumentaation haku on se, missä paikalliset agentit ansaitsevat paikkansa. Sen sijaan, että toivoisit SLM:n muistaneen kehyskirjastosi dokumentaation, sijoitat dokumentit paikalliseen vektoripohjaiseen tietokantaan ja annat agentin hakea asiaankuuluvat palat tarpeen mukaan.
Käytämme Chromaa, upotettua vektorivarastoa, joka toimii prosessin sisällä ilman palvelimen hallintaa. Prosessi on täysin paikallinen: paikallinen upotusmalli → paikalliset vektorit → paikallinen haku → paikallinen SLM.
flowchart TB
D[Sinun dokumenttisi / koodisi] --> E[Paikallinen upotusmalli]
E --> V[(Chroma-vektoritietokanta - levyllä)]
Q[Agenttikysely] --> QE[Upota kysely paikallisesti]
QE --> V
V -->|top-k osat| A[Qwen-agentti]
A --> Ans[Perusteltu vastaus]
Tämä on sama Agentic RAG -kuvio kuin Oppitunnissa 5 — ainoa ero, että kaikki komponentit toimivat koneellasi.
MCP on tiedonsiirtoprotokolla, ei pilvipalvelu. MCP-palvelin voi toimia paikallisena prosessina stdio:lla, tarjoten työkaluja agentillesi standardiprotokollan kautta. Tällä voit käyttää uudelleen kasvavaa MCP-palvelimien ekosysteemiä — tiedostojärjestelmän käyttö, git-toiminnot, tietokantakyselyt — täysin offline-tilassa.
Turvallisuusnäkökulma on eri kuin pilvessä, mutta ei poissa: paikallinen MCP-palvelin toimii käyttäjäoikeuksillasi, joten rajoita mitä se voi käsitellä (esim. projektihakemisto, ei koko kotihakemistoasi) ja käsittele sen tulosteita syötteinä tarkistuksen kautta.
Paikallinen ei tarkoita vain paikallista. Kypsissä järjestelmissä ohjaus perustuu herkkyyteen ja vaikeuteen:
| Tilanne | Missä toimii |
|---|---|
| Herkkä koodi/data tai offline-tila | Paikallinen SLM |
| Yksinkertainen, rajallinen tehtävä | Paikallinen SLM (halpa, nopea) |
| Vaativa monivaiheinen päättely ei-herkällä datalla | Pilvimalli |
| Kaikki sähkökatkon aikana | Paikallinen SLM (sujuva vikaantuminen) |
Tämä peilaa mallin reititystä Oppitunnista 16 — paitsi että yksi “malleista” on nyt oma koneesi. Vankka rakenne palaa paikalliseen, kun pilvi ei ole käytettävissä, jolloin agentti heikkenee laadullisesti eikä kaadu kokonaan.
flowchart LR
Q[Pyyntö] --> S{Herkkä tai offline?}
S -->|kyllä| L[Paikallinen SLM]
S -->|ei| C{Tarvitseeko syvää päättelyä?}
C -->|ei| L
C -->|kyllä| Cloud[Pilvimalli]
L --> Out[Vastaus]
Cloud --> Out
Avaa code_samples/17-local-agent-foundry-local.ipynb ja käy se läpi. Rakennat paikallisen insinöörin avustajan, joka toimii kokonaan työasemallasi ja voi:
Pilvijohdannaisia ei käytetä missään vaiheessa.
Avustaja yhdistyy Foundry Localiin OpenAI-yhteensopivan päätepisteen kautta, joten agenttikoodi näyttää lähes yhtä hyvältä kuin pilvioppitunneilla — vain asiakas muuttuu:
from foundry_local import FoundryLocalManager
from openai import OpenAI
# Foundry Local löytää/lataa mallin ja antaa meille paikallisen päätepisteen.
manager = FoundryLocalManager(\"qwen2.5-7b-instruct\")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # api_key on paikallinen paikkamerkki
Työkalut ovat tavallisia Python-funktioita, jotka on rajattu projektihakemistoon:
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\")
Huomaa hiekkalaatikkotarkistus — vaikka paikallisesti, työkalu, joka lukee mielivaltaisia polkuja, on riski. Muistikirja pitää kaikki työkalut rajattuina yhteen projektiin.
Testaa ymmärryksesi ennen tehtäviin siirtymistä.
1. Anna kaksi konkreettista syytä ajaa agentti paikallisesti pilven sijaan.
2. Mikä on suositeltu työnjako SLM:n ja sen työkalujen välillä paikallisessa agentissa, ja miksi?
3. Mikä tekee mahdolliseksi pilviagenttikoodin uudelleenkäytön Foundry Localin kanssa?
4. Miksi käytämme nimenomaan Qwen-funktiokutsumallia eikä mitä tahansa SLM:ää?
5. Mitkä komponentit paikallisessa RAG-putkessa toimivat koneella?
6. Jos paikallinen MCP-palvelin toimii koneellasi, tekeekö se siitä automaattisesti turvallisen? Mitä varotoimia kannattaa silti noudattaa?
7. Kuvaile järkevä hybridireitityssääntö, joka sisältää paikallisen mallin.
8. Mikä on realistinen vähimmäismuisti paikallisen agentin ajamiseen tässä oppitunnissa, ja mitä enemmän muisti tarjoaa?
Laajenna paikallista insinöörin assistenttia paikalliseksi dokumenttien tarkastajaksi pienelle valitsemallesi projektille (voit käyttää tätä repo-kansion oppitunnin kansiota, jos haluat).
Palautuksesi tulisi:
Lisätä find_todos-työkalu, joka skannaa projektista TODO/FIXME-kommentit ja palauttaa ne tiedoston ja rivinumeron kanssa — säilyttäen saman hiekkalaatikkotarkistuksen kuin read_file.
Kirjoita sitten lyhyt kappale siitä, mitä siirtäisit pilveen ja mitä pitäisit paikallisena tälle arvioijalle ja miksi. Sinua arvioidaan sen perusteella, onko paikalliset komponentit kytketty oikein ja ovatko hybridiratkaisusi järkeviä — ei mallin laadun perusteella.
Tässä oppitunnissa rakensit agentin, joka toimii kokonaan omalla koneellasi:
Tämä päättää käyttöönoton: Oppitunti 16 suurensi agentteja Microsoft Foundryyn, ja tämä oppitunti pienensi niitä yhdelle työasemalle. Seuraava oppitunti käsittelee käyttöönotettujen agenttien turvallisuuden varmistamista.
Skalautuvien agenttien käyttöönotto
AI-agenttien turvallisuuden varmistaminen
Vastuuvapauslauseke: Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, otathan huomioon, että automaattiset käännökset saattavat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäiskielellä on virallinen lähde. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tämän käännöksen käytöstä aiheutuvista väärinymmärryksistä tai tulkinnoista.