![]()
Edellinen oppitunti skaalasi agentteja pilveen. Tämä tuo ne alas yhdelle koneelle. Lopuksi sinulla on toimiva insinööriassistentti, joka päättelyttää, kutsuu työkaluja, lukee tiedostojasi ja etsii dokumentaatiotasi — ilman yhtäkään pilvipohjaista inferenssikutsua.
Miksi haluaisit sen? Kolme syytä, jotka nousevat jatkuvasti esiin todellisessa insinöörityössä:
Kiinteä asia on, että vaihdat eturivin pilvimallin pieneen kielimalliin (SLM), joka pyörii suoraan CPU:lla, GPU:lla tai NPU:lla. Tämä oppitunti keskittyy rakentamaan agentteja, jotka ovat hyviä tässä rajassa sen sijaan, että teeskentelet rajan puuttuvan.
Tässä oppitunnissa käsitellään:
Tämän oppitunnin jälkeen osaat:
Tämä oppitunti olettaa, että olet käynyt läpi aiemmat oppitunnit ja hallitset:
Tarvitset myös:
requirements.txt, sekä foundry-local-sdk, openai ja chromadb käytettäväksi tässä oppitunnissa.Eturivin pilvimalli sisältää satoja miljardeja parametreja ja toimii datakeskuksen takana. SLM:ssä on muutama miljardi parametria ja sen pitää mahtua kannettavan tietokoneen RAM-muistiin. Tämä ero asettaa selkeät odotukset.
SLM:t ovat hyviä:
SLM:t ovat heikompia:
Paikallisten agenttien voittava strategia on siis: anna SLM:n orkestroida, ja anna työkalujen tehdä raskas työ. Mallin ei tarvitse tietää koodikantaasi — sen tarvitsee tietää, milloin kutsua read_file ja search_docs. Tämä tukee suoraan SLM:n vahvuuksia.
flowchart LR
U[Kehittäjä] --> A[Paikallinen SLM-agentti]
A -->|päättää työkalun| T1[lue_tiedosto]
A -->|päättää työkalun| T2[hae_asiakirjat RAG]
A -->|päättää työkalun| T3[analysoi_koodi]
T1 --> A
T2 --> A
T3 --> A
A --> R[Vastaus, täysin laitteella]
Microsoft Foundry Local on kevyt runtime, joka lataa, hallinnoi ja palvelee malleja kokonaan koneellasi. Sen tärkein ominaisuus meille on, että se tarjoaa OpenAI-yhteensopivan HTTP-rajapinnan — mikä tarkoittaa, että OpenAI SDK ja Microsoft Agent Frameworkin OpenAI-asiakas toimivat sen kanssa vain muuttamalla base_url-osoitetta. Kaikki agenttien rakentamisesta opitut asiat siirtyvät suoraan; vain päätepiste vaihtuu pilvestä localhostiin.
Foundry Local valitsee automaattisesti parhaan malliversion laitteistollesi — CPU-version, CUDA/GPU-version tai NPU-version — joten sinun ei tarvitse optimoida käsin eri koneille.
Asenna Foundry Local (katso dokumentaatio käyttöjärjestelmällesi) ja varmista, että se toimii:
# Asenna (esimerkki; seuraa ohjeita alustallesi)
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). Notebook käyttää foundry-local-sdk:ta löytääkseen päätepisteen automaattisesti, joten sinun ei tarvitse kovakoodata porttia.
Agentti on agentti vain, jos se voi kutsua työkaluja. Monet SLM:t voivat chattailla mutta tuottavat epäluotettavia, virheellisiä työkalukutsuja. Qwen-mallit on koulutettu funktiokutsuihin ja ne tuottavat johdonmukaisesti hyvin muotoiltuja työkalukutsurakenteita — mikä tekee paikallisesta chat-mallista paikallisen agentin.
Prosessi on normaali työkalukutsusilmukka, jonka olet jo oppinut, vain että se pyörii 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 todella ansaitsevat paikkansa. Sen sijaan, että toivoisit SLM:n muistaneen kehyskirjastosi dokumentaation, upotat ne paikalliseen vektorikantaan ja annat agentin hakea tarpeelliset osat pyynnöstä.
Käytämme Chromaa, upotettua vektoritallenninta, joka pyörii prosessin sisällä ilman palvelinta. Putki on täysin paikallinen: paikallinen upotemalli → paikalliset vektorit → paikallinen haku → paikallinen SLM.
flowchart TB
D[Asiakirjasi / koodisi] --> E[Paikallinen upotusmalli]
E --> V[(Chroma-vektoritietokanta - levyllä)]
Q[Agentin kysely] --> QE[Upota kysely paikallisesti]
QE --> V
V -->|top-k osat| A[Qwen-agentti]
A --> Ans[Perusteltu vastaus]
Tämä on sama Agenttinen RAG-kaava kuin Oppitunnissa 5 — ainoa ero on, että kaikki komponentit toimivat koneellasi.
MCP on tiedonsiirtoprotokolla, ei pilvipalvelu. MCP-palvelin voi toimia paikallisena prosessina stdio:n kautta ja tarjota työkaluja agentillesi standardiprotokollalla. Näin voit käyttää MCP-palvelinten kasvavaa ekosysteemiä — tiedostojärjestelmän käyttö, git-operaatiot, tietokantakyselyt — kokonaan offline-tilassa.
Turvallisuusnäkökulma on erilainen kuin pilvessä, mutta ei poissa: paikallinen MCP-palvelin toimii käyttäjäsi oikeuksilla, joten rajoita mitä se saa käyttää (esim. projektihakemisto, ei koko kotihakemisto) ja käsittele sen tuottamat tulokset syötteinä, jotka validoit ennen käyttöä.
Paikallinen ei tarkoita pelkästään paikallista. Kypsät järjestelmät ohjaavat työn herkkävaikutteisuuden ja vaikeuden mukaan:
| Tilanne | Missä se toimii |
|---|---|
| Herkkä koodi/data tai offline | Paikallinen SLM |
| Yksinkertainen, rajattu tehtävä | Paikallinen SLM (halpa, nopea) |
| Vaativa monivaiheinen päättely ei-herkissä tiedoissa | Pilvimalli |
| Kaikki offline-tilassa | Paikallinen SLM (pehmeä vikaantuminen) |
Tämä heijastaa mallin reitityksen ideaa Oppitunnista 16 — paitsi että yksi “malleista” on nyt oma koneesi. Vankka suunnittelu siirtyy paikalliseen, kun pilvi ei ole käytettävissä, joten agentin laatu heikkenee hallitusti eikä se epäonnistu täysin.
flowchart LR
Q[Pyyntö] --> S{Herkkä tai offline?}
S -->|kyllä| L[Paikallinen SLM]
S -->|ei| C{Tarvitseeko syvällistä päättelyä?}
C -->|ei| L
C -->|kyllä| Cloud[Pilvimalli]
L --> Out[Vastaus]
Cloud --> Out
Avaa code_samples/17-local-agent-foundry-local.ipynb ja työstä se läpi. Rakennat paikallisen insinööriassistentin, joka pyörii kokonaan työasemallasi ja voi:
Pilvipohjaisia inferenssejä ei käytetä missään vaiheessa.
Assistentti yhdistää Foundry Localiin OpenAI-yhteensopivan rajapinnan kautta, joten agenttikoodi on lähes identtinen pilvioppien kanssa — ainoastaan asiakas vaihtuu:
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. Notebook pitää jokaisen työkalun rajattuna yhteen projektin juureen.
Testaa ymmärrystäsi ennen tehtävään siirtymistä.
1. Anna kaksi konkreettista syytä ajaa agenttia 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 valitsemme erityisesti Qwen-funktiokutsumallin eikä mitä tahansa SLM:ää?
5. Mitä komponentteja paikallisessa RAG-putkessa ajetaan koneella?
6. Paikallinen MCP-palvelin toimii koneellasi. Teekö se siitä automaattisesti turvallisen? Mitä varotoimia sinun silti tulisi noudattaa?
7. Kuvaile järkevä hybridireitityssääntö, joka sisältää paikallisen mallin.
8. Mikä on realistinen minimimäärä RAMia paikallisen agentin ajamiseen tässä oppitunnissa, ja mitä enemmän RAMia tuo?
Laajenna paikallinen insinööriassistentti paikalliseksi dokumentaation tarkistajaksi valitsemallesi pienelle projektille (voit käyttää tämän repoon oppituntikansioita halutessasi).
Palautuksesi tulisi:
Lisää find_todos-työkalu, joka skannaa projektista TODO-/FIXME-kommentit ja palauttaa ne tiedoston ja rivinumeron kanssa — pitäen samat hiekkalaatikkotarkistukset kuin read_file.
Kirjoita sitten lyhyt kappale siitä, mitä siirtäisit pilveen ja mitä pitäisit paikallisesti tälle tarkastajalle, ja miksi. Sinua arvioidaan sen perusteella, onko paikalliset komponentit kytketty oikein yhteen ja onko hybridipäättelysi perusteltua — ei mallin laadun mukaan.
Tässä oppitunnissa loit agentin, joka toimii kokonaan omalla koneellasi:
Tämä täydentää käyttöönoton kaaren: Oppitunti 16 laajensi agenteja Microsoft Foundryyn, ja tämä oppitunti pienensi ne yhdelle työasemalle. Seuraavassa oppitunnissa siirrytään käytössä olevien agenttien turvallisuuteen.
Skaalautuvien agenttien käyttöönotto
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.