[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699J8DKDHZWSSTKXZN4YSMY":3,"skill-same:01M699J8DKDHZWSSTKXZN4YSMY":49},{"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},"01M699J8DKDHZWSSTKXZN4YSMY","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\u002Fja\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> [Lesson 17 – Creating Local AI Agents](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md) の補助スキルです。\n> 学習者がエージェントを構築する際に役立ててください。推論、ツール呼び出し、ドキュメント検索をすべて自身のマシン上で行います — クラウド推論は使いません。すべての推奨事項はレッスン内容と実行可能なノートブックに基づいています。\n> \n> \n\n## トリガー\n\n学習者が以下を望むときにこのスキルを有効にします：\n- プライバシー、コスト、オフラインを理由に\u003Cstrong>完全にデバイス上\u003C\u002Fstrong>でエージェントを動作させたい。\n- **Foundry Local** でローカルにモデルを提供し、OpenAI互換エンドポイント経由で接続したい。\n- \u003Cstrong>Qwenの関数呼び出しモデル\u003C\u002Fstrong>を使って信頼できるローカルのツール呼び出しを行いたい。\n- **ローカルRAG**（Chroma）や\u003Cstrong>ローカルMCPサーバー\u003C\u002Fstrong>を追加したい。\n- \u003Cstrong>ハイブリッド\u003C\u002Fstrong>なローカル／クラウドルーティング戦略を設計したい。\n\n## コアメンタルモデル\n\nSLMはプライバシー、コスト、オフライン運用のために範囲の広さを犠牲にします。勝利の戦略は：**SLMにオーケストレーションを任せ、ツールに重い作業をさせることです。** モデルはコードベースを\u003Cem>知らなくても\u003C\u002Fem>良い — いつ`read_file`や`search_docs`を呼び出すかを知っていれば十分です。これによりSLMの強み（ツール選択のような限定的な意思決定）を活かし、弱み（広範な知識、長いマルチホップ推論）から離れられます。\n\n\n\n\n\n\n## なぜこれらの要素を選ぶのか\n\n- **Foundry Local** は **OpenAI互換のHTTPエンドポイント** を公開しているため、クラウド向けのエージェントコードは`base_url`を変え（かつローカルのプレースホルダーAPIキーを使う）だけで移行可能です。さらにマシンに最適なビルド（CPU\u002FGPU\u002FNPU）を自動選択します。\n- \u003Cstrong>Qwen\u003C\u002Fstrong>モデルは関数呼び出しのために訓練されており、整形式のツール呼び出しを安定して出力します — これがローカルの\u003Cem>チャット\u003C\u002Fem>モデルをローカル\u003Cem>エージェント\u003C\u002Fem>に変えます。\n- \u003Cstrong>Chroma\u003C\u002Fstrong>はプロセス内で動作しディスクにベクトルを格納するため、RAGパイプライン全体（埋め込み → 保存 → 検索 → 推論）がローカルに保たれます。\n- \u003Cstrong>MCP\u003C\u002Fstrong>はクラウドサービスではなくトランスポートです：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`はトップkチャンクを返します。\n- **ローカルMCP**：`stdio`を介してローカルサーバーに接続します；プロジェクトディレクトリにスコープし、出力を検証します。\n\n## ハイブリッドルーティング（ローカルがモデルの一つ）\n\n| 状況 | 実行場所 |\n|-----------|---------------|\n| 機密データ \u002F オフライン | ローカルSLM |\n| 単純で限定的なタスク | ローカルSLM（低コスト、高速） |\n| 非機密データで複雑なマルチホップ推論 | クラウドモデル |\n| クラウド障害時 | ローカルSLM（グレースフルデグラデーション） |\n\nこれはLesson 16のモデルルーティングの考えと対応し、ワークステーションをルートのひとつとしています。エージェントは完全失敗せず品質が落ちる程度に局所フォールバックする設計を推奨します。\n\n\n\n## アシスタント向けのガードレール\n\n- すべてのファイル／ツール操作をサンドボックス化したプロジェクトディレクトリ内に限定してください。\n- 学習者の目的がプライバシーやオフラインの場合、コードやデータをクラウドに送信しないでください — パイプライン全体をローカルに保ちます。\n- SLMの品質に現実的な期待値を設定し、モデルの記憶知識よりツールとRAGに依存してください。\n- Lesson 17には\u003Cstrong>Foundry Responses\u003C\u002Fstrong>のエンドポイントが\u003Cstrong>ありません\u003C\u002Fstrong>ので、クラウドスモークテストの操作は適用されません — ノートブックをローカルで実行して検証してください。\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> [Lesson 17 – Creating Local AI Agents](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md) の補助スキルです。\n> 学習者がエージェントを構築する際に役立ててください。推論、ツール呼び出し、ドキュメント検索をすべて自身のマシン上で行います — クラウド推論は使いません。すべての推奨事項はレッスン内容と実行可能なノートブックに基づいています。\n> \n> \n\n## トリガー\n\n学習者が以下を望むときにこのスキルを有効にします：\n- プライバシー、コスト、オフラインを理由に\u003Cstrong>完全にデバイス上\u003C\u002Fstrong>でエージェントを動作させたい。\n- **Foundry Local** でローカルにモデルを提供し、OpenAI互換エンドポイント経由で接続したい。\n- \u003Cstrong>Qwenの関数呼び出しモデル\u003C\u002Fstrong>を使って信頼できるローカルのツール呼び出しを行いたい。\n- **ローカルRAG**（Chroma）や\u003Cstrong>ローカルMCPサーバー\u003C\u002Fstrong>を追加したい。\n- \u003Cstrong>ハイブリッド\u003C\u002Fstrong>なローカル／クラウドルーティング戦略を設計したい。\n\n## コアメンタルモデル\n\nSLMはプライバシー、コスト、オフライン運用のために範囲の広さを犠牲にします。勝利の戦略は：**SLMにオーケストレーションを任せ、ツールに重い作業をさせることです。** モデルはコードベースを\u003Cem>知らなくても\u003C\u002Fem>良い — いつ`read_file`や`search_docs`を呼び出すかを知っていれば十分です。これによりSLMの強み（ツール選択のような限定的な意思決定）を活かし、弱み（広範な知識、長いマルチホップ推論）から離れられます。\n\n\n\n\n\n\n## なぜこれらの要素を選ぶのか\n\n- **Foundry Local** は **OpenAI互換のHTTPエンドポイント** を公開しているため、クラウド向けのエージェントコードは`base_url`を変え（かつローカルのプレースホルダーAPIキーを使う）だけで移行可能です。さらにマシンに最適なビルド（CPU\u002FGPU\u002FNPU）を自動選択します。\n- \u003Cstrong>Qwen\u003C\u002Fstrong>モデルは関数呼び出しのために訓練されており、整形式のツール呼び出しを安定して出力します — これがローカルの\u003Cem>チャット\u003C\u002Fem>モデルをローカル\u003Cem>エージェント\u003C\u002Fem>に変えます。\n- \u003Cstrong>Chroma\u003C\u002Fstrong>はプロセス内で動作しディスクにベクトルを格納するため、RAGパイプライン全体（埋め込み → 保存 → 検索 → 推論）がローカルに保たれます。\n- \u003Cstrong>MCP\u003C\u002Fstrong>はクラウドサービスではなくトランスポートです：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`はトップkチャンクを返します。\n- **ローカルMCP**：`stdio`を介してローカルサーバーに接続します；プロジェクトディレクトリにスコープし、出力を検証します。\n\n## ハイブリッドルーティング（ローカルがモデルの一つ）\n\n| 状況 | 実行場所 |\n|-----------|---------------|\n| 機密データ \u002F オフライン | ローカルSLM |\n| 単純で限定的なタスク | ローカルSLM（低コスト、高速） |\n| 非機密データで複雑なマルチホップ推論 | クラウドモデル |\n| クラウド障害時 | ローカルSLM（グレースフルデグラデーション） |\n\nこれはLesson 16のモデルルーティングの考えと対応し、ワークステーションをルートのひとつとしています。エージェントは完全失敗せず品質が落ちる程度に局所フォールバックする設計を推奨します。\n\n\n\n## アシスタント向けのガードレール\n\n- すべてのファイル／ツール操作をサンドボックス化したプロジェクトディレクトリ内に限定してください。\n- 学習者の目的がプライバシーやオフラインの場合、コードやデータをクラウドに送信しないでください — パイプライン全体をローカルに保ちます。\n- SLMの品質に現実的な期待値を設定し、モデルの記憶知識よりツールとRAGに依存してください。\n- Lesson 17には\u003Cstrong>Foundry Responses\u003C\u002Fstrong>のエンドポイントが\u003Cstrong>ありません\u003C\u002Fstrong>ので、クラウドスモークテストの操作は適用されません — ノートブックをローカルで実行して検証してください。\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\u002Fja\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\u002Fja\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",true,[],[50,68,79,84,92,99],{"skillNo":51,"name":52,"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":53,"categories":54,"keywords":65,"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",[55,60],{"categoryNo":56,"categoryName":57,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":61,"categoryName":62,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[66,67],"testing","testing course samples",{"skillNo":69,"name":70,"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":71,"categories":72,"keywords":76,"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",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000023","Skill与智能体开发",[77,8,78],"docs","microsoft docs",{"skillNo":80,"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":81,"categories":82,"keywords":83,"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":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"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",[],[91],"jupyter notebook",{"skillNo":93,"name":94,"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":95,"categories":96,"keywords":97,"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",[],[98],"deploying scalable agents",{"skillNo":100,"name":101,"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":102,"categories":103,"keywords":104,"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",[],[105],"azure openai to responses"]