[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699EQRN4HVG2KED5CCTKFCN":3,"skill-same:01M699EQRN4HVG2KED5CCTKFCN":59},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M699EQRN4HVG2KED5CCTKFCN","local-ai-agents",null,"Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud\u002Flocal routing, and privacy, cost, and offline trade-offs.","microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79423,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Ffi\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,9,27,28,29],"ai agents","local ai agents","MCP","foundry","foundry local","microsoft foundry","2026-11-10 10:12:30",false,"---\nname: local-ai-agents\ndescription: Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud\u002Flocal routing, and privacy, cost, and offline trade-offs.\nlicense: MIT\n---\n# Paikallisten tekoälyagenttien luominen Foundry Localin ja Qwenin avulla\n\n> Seuraava taito tukee [Oppitunti 17 – Paikallisten tekoälyagenttien luominen](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md).\n> Käytä sitä auttamaan oppijaa rakentamaan agentti, joka päättää, kutsuu työkaluja ja etsii\n> dokumentaatiota kokonaan omalla koneellaan — ilman pilvipalvelimen tulkintaa. Perusta kaikki\n> suositukset oppitunnin sisältöön ja ajettavaan muistikirjaan.\n\n## Laukaisimet\n\nAktivoi tämä taito, kun oppija haluaa:\n- Suorittaa agentin **täysin laitteella** yksityisyyden, kustannusten tai offline-tilan vuoksi.\n- Palvella mallia paikallisesti **Foundry Localilla** ja yhdistää OpenAI-yhteensopivan päätepisteen kautta.\n- Käyttää **Qwen-funktiokutsumallia** luotettavien paikallisten työkalukutsujen ajamiseen.\n- Lisätä **paikallinen RAG** (Chroma) tai **paikallinen MCP-palvelin**.\n- Suunnitella **hybridimallinen** paikallinen\u002Fpilvierottelu.\n\n## Keskeinen ajatusmalli\n\nSLM (pieni kielimalli) uhraa laajuuden yksityisyydelle, kustannuksille ja offline-toiminnalle. Voittava\nstrategia: **anna SLM:n orkestroida ja anna työkalujen hoitaa raskas työ.** Mallin ei tarvitse \n*tuntea* koodipohjaa — sen täytyy tietää, milloin kutsua\n`read_file` ja `search_docs`. Tämä hyödyntää SLM:n vahvuuksia (rajatut päätökset kuten työkalun valinta)\nja välttää sen heikkouksia (laaja tieto, monivaiheinen päättely).\n\n\n## Miksi juuri nämä osat\n\n- **Foundry Local** tarjoaa **OpenAI-yhteensopivan HTTP-päätepisteen**, joten pilviagentin koodi siirtyy muuttamalla vain `base_url` (ja käyttämällä paikallista paikkamerkki-API-avainta). Se myös valitsee automaattisesti parhaan rakennelman (CPU\u002FGPU\u002FNPU) koneelle.\n- **Qwen**-mallit on koulutettu funktiokutsuihin ja ne tuottavat johdonmukaisesti hyvin muodostettuja työkalukutsuja — tämä muuttaa paikallisen *keskustelu*mallin paikalliseksi *agentiksi*.\n- **Chroma** toimii prosessissa ja tallentaa vektorit levylle, joten koko RAG-putki (upotus → tallennus → haku → päättely) pysyy paikallisena.\n- **MCP** on siirtotekniikka, ei pilvipalvelu: MCP-palvelin voi toimia paikallisesti `stdio` yli.\n\n## Asennusvaatimukset\n\n```bash\nfoundry model run qwen2.5-7b-instruct\nfoundry service status\n```\n\n```python\nfrom foundry_local import FoundryLocalManager\nfrom openai import OpenAI\n\nmanager = FoundryLocalManager(\"qwen2.5-7b-instruct\")\nclient = OpenAI(base_url=manager.endpoint, api_key=manager.api_key)  # local placeholder\n```\n\nNoin 8 GB RAM on realistinen vähimmäisvaatimus; GPU\u002FNPU auttaa, mutta ei ole pakollinen.\n\n## Tärkeimmät mallit jäljittelyyn\n\nOpasta oppijaa käyttämään muistikirjaa\n[`17-local-agent-foundry-local.ipynb`](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002Fcode_samples\u002F17-local-agent-foundry-local.ipynb):\n\n- **Säilötyt työkalut**: jokainen tiedostotyökalu ratkaisee polut ja hylkää kaiken yhden projektin juurihakemiston ulkopuolelta — jopa paikallisesti työkalu toimii käyttäjän oikeuksilla.\n- **Työkalukutsusilmukka**: rekisteröi työkalut OpenAI-työkalu-kaavion kanssa, suorita pyydetyt työkalut paikallisesti, palautetaan tulokset, toista kunnes saadaan lopullinen vastaus.\n- **Paikallinen RAG**: päivitä dokumentit Chroman kokoelmaan; `search_docs` palauttaa top-k-palasia.\n- **Paikallinen MCP**: yhdistä paikalliseen palvelimeen `stdio` kautta; rajaa projektiin ja validoi sen tulokset.\n\n## Hybridirakenteet (paikallinen yhtenä malleista)\n\n| Tilanne | Missä se ajetaan |\n|-----------|---------------|\n| Herkkä data \u002F offline | Paikallinen SLM |\n| Yksinkertainen, rajattu tehtävä | Paikallinen SLM (halpa, nopea) |\n| Vaikea monivaiheinen päättely epäherkässä datassa | Pilvimalli |\n| Pilvipalvelun häiriö | Paikallinen SLM (pehmeä degradatio) |\n\nTämä heijastaa mallin ohjauksen ideaa Oppitunnista 16, jolloin työasema on yksi\nreiteistä. Suosi malleja, jotka tarvittaessa tukeutuvat paikalliseen, jotta agentti heikkenee\nlaadultaan sen sijaan, että epäonnistuisi kokonaan.\n\n## Avustajan turvaverkot\n\n- Pidä jokainen tiedosto-\u002Ftyökaluoperaatio rajattuna säilöttyyn projektihakemistoon.\n- Älä lähetä koodia tai dataa pilveen, kun oppijan tavoite on yksityisyys\u002Foffline — pidä koko putki paikallisena.\n- Aseta realistiset odotukset SLM:n laadulle; luota työkaluihin ja RAGiin mieluummin kuin mallin muistiin.\n- Huomioi, että Oppitunnilla 17 ei ole Foundry Responses -päätepistettä, joten pilven toiminnan savutesti ei päde — vahvista suorittamalla muistikirja paikallisesti.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Vastuuvapauslauseke**:\nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-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.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Paikallisten tekoälyagenttien luominen Foundry Localin ja Qwenin avulla\n\n> Seuraava taito tukee [Oppitunti 17 – Paikallisten tekoälyagenttien luominen](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md).\n> Käytä sitä auttamaan oppijaa rakentamaan agentti, joka päättää, kutsuu työkaluja ja etsii\n> dokumentaatiota kokonaan omalla koneellaan — ilman pilvipalvelimen tulkintaa. Perusta kaikki\n> suositukset oppitunnin sisältöön ja ajettavaan muistikirjaan.\n\n## Laukaisimet\n\nAktivoi tämä taito, kun oppija haluaa:\n- Suorittaa agentin **täysin laitteella** yksityisyyden, kustannusten tai offline-tilan vuoksi.\n- Palvella mallia paikallisesti **Foundry Localilla** ja yhdistää OpenAI-yhteensopivan päätepisteen kautta.\n- Käyttää **Qwen-funktiokutsumallia** luotettavien paikallisten työkalukutsujen ajamiseen.\n- Lisätä **paikallinen RAG** (Chroma) tai **paikallinen MCP-palvelin**.\n- Suunnitella **hybridimallinen** paikallinen\u002Fpilvierottelu.\n\n## Keskeinen ajatusmalli\n\nSLM (pieni kielimalli) uhraa laajuuden yksityisyydelle, kustannuksille ja offline-toiminnalle. Voittava\nstrategia: **anna SLM:n orkestroida ja anna työkalujen hoitaa raskas työ.** Mallin ei tarvitse \n*tuntea* koodipohjaa — sen täytyy tietää, milloin kutsua\n`read_file` ja `search_docs`. Tämä hyödyntää SLM:n vahvuuksia (rajatut päätökset kuten työkalun valinta)\nja välttää sen heikkouksia (laaja tieto, monivaiheinen päättely).\n\n\n## Miksi juuri nämä osat\n\n- **Foundry Local** tarjoaa **OpenAI-yhteensopivan HTTP-päätepisteen**, joten pilviagentin koodi siirtyy muuttamalla vain `base_url` (ja käyttämällä paikallista paikkamerkki-API-avainta). Se myös valitsee automaattisesti parhaan rakennelman (CPU\u002FGPU\u002FNPU) koneelle.\n- **Qwen**-mallit on koulutettu funktiokutsuihin ja ne tuottavat johdonmukaisesti hyvin muodostettuja työkalukutsuja — tämä muuttaa paikallisen *keskustelu*mallin paikalliseksi *agentiksi*.\n- **Chroma** toimii prosessissa ja tallentaa vektorit levylle, joten koko RAG-putki (upotus → tallennus → haku → päättely) pysyy paikallisena.\n- **MCP** on siirtotekniikka, ei pilvipalvelu: MCP-palvelin voi toimia paikallisesti `stdio` yli.\n\n## Asennusvaatimukset\n\n```bash\nfoundry model run qwen2.5-7b-instruct\nfoundry service status\n```\n\n```python\nfrom foundry_local import FoundryLocalManager\nfrom openai import OpenAI\n\nmanager = FoundryLocalManager(\"qwen2.5-7b-instruct\")\nclient = OpenAI(base_url=manager.endpoint, api_key=manager.api_key)  # local placeholder\n```\n\nNoin 8 GB RAM on realistinen vähimmäisvaatimus; GPU\u002FNPU auttaa, mutta ei ole pakollinen.\n\n## Tärkeimmät mallit jäljittelyyn\n\nOpasta oppijaa käyttämään muistikirjaa\n[`17-local-agent-foundry-local.ipynb`](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002Fcode_samples\u002F17-local-agent-foundry-local.ipynb):\n\n- **Säilötyt työkalut**: jokainen tiedostotyökalu ratkaisee polut ja hylkää kaiken yhden projektin juurihakemiston ulkopuolelta — jopa paikallisesti työkalu toimii käyttäjän oikeuksilla.\n- **Työkalukutsusilmukka**: rekisteröi työkalut OpenAI-työkalu-kaavion kanssa, suorita pyydetyt työkalut paikallisesti, palautetaan tulokset, toista kunnes saadaan lopullinen vastaus.\n- **Paikallinen RAG**: päivitä dokumentit Chroman kokoelmaan; `search_docs` palauttaa top-k-palasia.\n- **Paikallinen MCP**: yhdistä paikalliseen palvelimeen `stdio` kautta; rajaa projektiin ja validoi sen tulokset.\n\n## Hybridirakenteet (paikallinen yhtenä malleista)\n\n| Tilanne | Missä se ajetaan |\n|-----------|---------------|\n| Herkkä data \u002F offline | Paikallinen SLM |\n| Yksinkertainen, rajattu tehtävä | Paikallinen SLM (halpa, nopea) |\n| Vaikea monivaiheinen päättely epäherkässä datassa | Pilvimalli |\n| Pilvipalvelun häiriö | Paikallinen SLM (pehmeä degradatio) |\n\nTämä heijastaa mallin ohjauksen ideaa Oppitunnista 16, jolloin työasema on yksi\nreiteistä. Suosi malleja, jotka tarvittaessa tukeutuvat paikalliseen, jotta agentti heikkenee\nlaadultaan sen sijaan, että epäonnistuisi kokonaan.\n\n## Avustajan turvaverkot\n\n- Pidä jokainen tiedosto-\u002Ftyökaluoperaatio rajattuna säilöttyyn projektihakemistoon.\n- Älä lähetä koodia tai dataa pilveen, kun oppijan tavoite on yksityisyys\u002Foffline — pidä koko putki paikallisena.\n- Aseta realistiset odotukset SLM:n laadulle; luota työkaluihin ja RAGiin mieluummin kuin mallin muistiin.\n- Huomioi, että Oppitunnilla 17 ei ole Foundry Responses -päätepistettä, joten pilven toiminnan savutesti ei päde — vahvista suorittamalla muistikirja paikallisesti.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Vastuuvapauslauseke**:\nTämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-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.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":15,"description":7},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Ffi\u002F.agents\u002Fskills\u002Flocal-ai-agents",26019,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners","https:\u002F\u002Faka.ms\u002Fai-agents-beginners","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-07 12:51:12",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill local-ai-agents",{"tool":51,"command":52},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill local-ai-agents",{"tool":54,"command":55},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill local-ai-agents","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Ffi\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",true,[],[60,76,85,90,98,105],{"skillNo":61,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":73,"publishedAt":30},"01M69A206TRZ8KK0CW0HYJF5V5","testing-course-samples","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[65,68],{"categoryNo":66,"categoryName":67,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[74,75],"testing","testing course samples",{"skillNo":77,"name":78,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":82,"publishedAt":30},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[81],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[83,9,84],"docs","microsoft docs",{"skillNo":86,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":30},"01M69A1VPZFJQ1HNGTZQ5P3WSC","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[24,25],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":30},"01M69A1S947N7MM6V9JF85S2E7","jupyter-notebook","當使用者要求建立、搭建或編輯 Jupyter 筆記本（`.ipynb`）用於實驗、探索或教學時使用；優先使用隨附範本並執行輔助腳本 `new_notebook.py` 來產生一個乾淨的起始筆記本。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fjupyter-notebook\u002FSKILL.md",[],[97],"jupyter notebook",{"skillNo":99,"name":100,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":30},"01M69A1Q8EXPWKZSQK69V6WF22","deploying-scalable-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[104],"deploying scalable agents",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":30},"01M69A1MHZTH3RH9N8VYSYG74X","azure-openai-to-responses","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[111],"azure openai to responses"]