[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69A0YK5TXYSS4J69SMSM1PM":3,"skill-same:01M69A0YK5TXYSS4J69SMSM1PM":59},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":32,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M69A0YK5TXYSS4J69SMSM1PM","local-ai-agents",null,"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\u002Fzh-HK\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[18,19],"ai agents","local ai agents","2026-11-10 10:12:30",false,"---\nname: local-ai-agents\nlicense: MIT\n---\n# 使用 Foundry Local 和 Qwen 建立本地 AI 代理\n\n> 與[課程 17 – 建立本地 AI 代理](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md) 的輔助技能。\n> 幫助學習者在他們自己的機器上構建一個能推理、調用工具並搜尋\n> 文件的代理 — 完全不依賴雲端推理。每一項建議都基於課程內容和可運行的筆記本。\n\n\n\n\n- 為了隱私、成本或離線原因，\u003Cstrong>完全在設備上\u003C\u002Fstrong>運行代理。\n- 使用 **Foundry Local** 於本地部署模型，並透過 OpenAI 相容端點連接。\n- 使用 **Qwen 函數調用** 模型來驅動可靠的本地工具調用。\n- 添加 **本地 RAG**（Chroma）或者 **本地 MCP 服務器**。\n- 設計 \u003Cstrong>混合式\u003C\u002Fstrong> 本地\u002F雲端路由策略。\n\n\n\n\n**讓 SLM 負責協調，並讓工具承擔繁重工作。** 模型不需要 \u003Cem>知道\u003C\u002Fem> 程式碼庫 — 它只需要知道什麼時候調用\n策略：**讓 SLM 來協調，並讓工具負責繁重工作。** 模型不需要\u003Cem>知道\u003C\u002Fem>代碼庫——它只需知道何時呼叫\nmodel does not need to *know* the codebase — it needs to know when to call\n`read_file` 和 `search_docs`。這符合 SLM 的優勢（有界決策\n如工具選擇）並避開其弱點（廣泛知識、長多跳推理）。\n\n\n## 為什麼是這些特定部分\n\n- **Foundry Local** 暴露了一個 **與 OpenAI 相容的 HTTP 端點**，因此雲端代理代碼只需更改 `base_url`（並使用本地的佔位符 API 金鑰）即可轉移。它還會自動為該設備選擇最佳的構建（CPU\u002FGPU\u002FNPU）。\n- **Qwen** 模型訓練用於函數呼叫，並穩定傳出格式良好的工具呼叫 —— 這就是將本地聊天模型轉變為本地代理的關鍵。\n- **Chroma** 在同一進程中運行並將向量存儲於磁盤，因此整個 RAG 流程（嵌入 → 存儲 → 檢索 → 推理）保持本地化。\n- **MCP** 是一種傳輸工具，而非雲服務：MCP 伺服器可以透過 `stdio` 在本地運行。\n\n## 基本設置要點\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\n約需 8 GB RAM 是現實的最低需求；GPU\u002FNPU 有助益但非必須。\n\n## 關鍵模式重現\n\n指向學習者筆記本\n[`17-local-agent-foundry-local.ipynb`](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002Fcode_samples\u002F17-local-agent-foundry-local.ipynb):\n\n- \u003Cstrong>受沙盒限制的工具\u003C\u002Fstrong>：每個文件工具解析路徑，並拒絕任何單一專案根目錄外的請求 —— 即使在本地，工具也在使用者權限下運行。\n- \u003Cstrong>工具呼叫迴圈\u003C\u002Fstrong>：使用 OpenAI 工具架構註冊工具，在本地執行請求的工具，反饋結果，重複直到得出最終答案。\n- **本地 RAG**：將文件上傳至 Chroma 集合；`search_docs` 返回 top-k 片段。\n- **本地 MCP**：通過 `stdio` 連接到本地伺服器；將其範圍限定於項目目錄並驗證其輸出。\n\n## 混合路由（本地作為其中一個模型）\n\n| 情境 | 運行地點 |\n|-----------|---------------|\n| 敏感數據／離線 | 本地 SLM |\n| 簡單、範圍有限的任務 | 本地 SLM（廉價且快速） |\n| 複雜的多步推理且非敏感數據 | 雲端模型 |\n| 雲端故障 | 本地 SLM（漸進式降級） |\n\n此方法反映第 16 課的模型路由概念，將工作站作為其中一條路由。優先考慮可回退到本地的設計，讓代理程式在品質上漸進下降，而非完全失效。\n\n\n\n## 助理的防護措施\n\n- 保持所有檔案／工具操作限定於沙盒化的項目目錄內。\n- 當學習者的明確目標是隱私或離線時，切勿將代碼或數據發送到雲端 —— 保持整個流程在本地完成。\n- 設置對 SLM 品質的合理預期；依賴工具和 RAG，而非模型的記憶知識。\n- 注意第 17 課 \u003Cstrong>沒有\u003C\u002Fstrong> Foundry Responses 端點，因此雲端煙霧測試操作不適用 —— 請通過在本地運行筆記本進行驗證。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**：\n本文件由 AI 翻譯服務 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 翻譯而成。雖然我們致力於確保準確性，但請注意，機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊，建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# 使用 Foundry Local 和 Qwen 建立本地 AI 代理\n\n> 與[課程 17 – 建立本地 AI 代理](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md) 的輔助技能。\n> 幫助學習者在他們自己的機器上構建一個能推理、調用工具並搜尋\n> 文件的代理 — 完全不依賴雲端推理。每一項建議都基於課程內容和可運行的筆記本。\n\n\n\n\n- 為了隱私、成本或離線原因，\u003Cstrong>完全在設備上\u003C\u002Fstrong>運行代理。\n- 使用 **Foundry Local** 於本地部署模型，並透過 OpenAI 相容端點連接。\n- 使用 **Qwen 函數調用** 模型來驅動可靠的本地工具調用。\n- 添加 **本地 RAG**（Chroma）或者 **本地 MCP 服務器**。\n- 設計 \u003Cstrong>混合式\u003C\u002Fstrong> 本地\u002F雲端路由策略。\n\n\n\n\n**讓 SLM 負責協調，並讓工具承擔繁重工作。** 模型不需要 \u003Cem>知道\u003C\u002Fem> 程式碼庫 — 它只需要知道什麼時候調用\n策略：**讓 SLM 來協調，並讓工具負責繁重工作。** 模型不需要\u003Cem>知道\u003C\u002Fem>代碼庫——它只需知道何時呼叫\nmodel does not need to *know* the codebase — it needs to know when to call\n`read_file` 和 `search_docs`。這符合 SLM 的優勢（有界決策\n如工具選擇）並避開其弱點（廣泛知識、長多跳推理）。\n\n\n## 為什麼是這些特定部分\n\n- **Foundry Local** 暴露了一個 **與 OpenAI 相容的 HTTP 端點**，因此雲端代理代碼只需更改 `base_url`（並使用本地的佔位符 API 金鑰）即可轉移。它還會自動為該設備選擇最佳的構建（CPU\u002FGPU\u002FNPU）。\n- **Qwen** 模型訓練用於函數呼叫，並穩定傳出格式良好的工具呼叫 —— 這就是將本地聊天模型轉變為本地代理的關鍵。\n- **Chroma** 在同一進程中運行並將向量存儲於磁盤，因此整個 RAG 流程（嵌入 → 存儲 → 檢索 → 推理）保持本地化。\n- **MCP** 是一種傳輸工具，而非雲服務：MCP 伺服器可以透過 `stdio` 在本地運行。\n\n## 基本設置要點\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\n約需 8 GB RAM 是現實的最低需求；GPU\u002FNPU 有助益但非必須。\n\n## 關鍵模式重現\n\n指向學習者筆記本\n[`17-local-agent-foundry-local.ipynb`](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002Fcode_samples\u002F17-local-agent-foundry-local.ipynb):\n\n- \u003Cstrong>受沙盒限制的工具\u003C\u002Fstrong>：每個文件工具解析路徑，並拒絕任何單一專案根目錄外的請求 —— 即使在本地，工具也在使用者權限下運行。\n- \u003Cstrong>工具呼叫迴圈\u003C\u002Fstrong>：使用 OpenAI 工具架構註冊工具，在本地執行請求的工具，反饋結果，重複直到得出最終答案。\n- **本地 RAG**：將文件上傳至 Chroma 集合；`search_docs` 返回 top-k 片段。\n- **本地 MCP**：通過 `stdio` 連接到本地伺服器；將其範圍限定於項目目錄並驗證其輸出。\n\n## 混合路由（本地作為其中一個模型）\n\n| 情境 | 運行地點 |\n|-----------|---------------|\n| 敏感數據／離線 | 本地 SLM |\n| 簡單、範圍有限的任務 | 本地 SLM（廉價且快速） |\n| 複雜的多步推理且非敏感數據 | 雲端模型 |\n| 雲端故障 | 本地 SLM（漸進式降級） |\n\n此方法反映第 16 課的模型路由概念，將工作站作為其中一條路由。優先考慮可回退到本地的設計，讓代理程式在品質上漸進下降，而非完全失效。\n\n\n\n## 助理的防護措施\n\n- 保持所有檔案／工具操作限定於沙盒化的項目目錄內。\n- 當學習者的明確目標是隱私或離線時，切勿將代碼或數據發送到雲端 —— 保持整個流程在本地完成。\n- 設置對 SLM 品質的合理預期；依賴工具和 RAG，而非模型的記憶知識。\n- 注意第 17 課 \u003Cstrong>沒有\u003C\u002Fstrong> Foundry Responses 端點，因此雲端煙霧測試操作不適用 —— 請通過在本地運行筆記本進行驗證。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免責聲明**：\n本文件由 AI 翻譯服務 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 翻譯而成。雖然我們致力於確保準確性，但請注意，機器自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊，建議進行專業人工翻譯。我們不對因使用本翻譯而產生的任何誤解或誤釋承擔責任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":14},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fzh-HK\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":7,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill local-ai-agents",{"tool":41,"command":42},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill local-ai-agents",{"tool":44,"command":45},"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\u002Fzh-HK\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",true,[49,55],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Fconsumer-adapters.md","REFERENCE","参考文档",2027,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fdocs\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-design-system\u002Freferences\u002Fconsumer-adapters.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Ftokens.md",3040,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fdocs\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-design-system\u002Freferences\u002Ftokens.md",[60,78,89,94,102,109],{"skillNo":61,"name":62,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":75,"publishedAt":20},"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,70],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[76,77],"testing","testing course samples",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":86,"publishedAt":20},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000023","Skill与智能体开发",[87,8,88],"docs","microsoft docs",{"skillNo":90,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":20},"01M69A1VPZFJQ1HNGTZQ5P3WSC","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[18,19],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":20},"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",[],[101],"jupyter notebook",{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":20},"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",[],[108],"deploying scalable agents",{"skillNo":110,"name":111,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":20},"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",[],[115],"azure openai to responses"]