[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699T8WQCBWS1JQW5TBYACET":3,"skill-same:01M699T8WQCBWS1JQW5TBYACET":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},"01M699T8WQCBWS1JQW5TBYACET","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\u002Fru\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# Создание локальных AI-агентов с Foundry Local и Qwen\n\n> Сопроводительное умение для [Урока 17 – Создание локальных AI-агентов](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md).\n> Используйте его, чтобы помочь ученику построить агента, который самостоятельно рассуждает, вызывает инструменты и ищет\n> документацию полностью на своей машине — без облачных вычислений. Основывайте каждое\n> предложение на содержании урока и запускаемой тетради.\n\n## Триггеры\n\nАктивируйте это умение, когда ученик хочет:\n- Запустить агента **полностью на устройстве** ради конфиденциальности, экономии или офлайн-режима.\n- Обслуживать модель локально с помощью **Foundry Local** и подключаться через OpenAI-совместимый эндпоинт.\n- Использовать модель с **функциональным вызовом Qwen** для надежных локальных вызовов инструментов.\n- Добавить **локальный RAG** (Chroma) или **локальный MCP сервер**.\n- Разработать **гибридную** стратегию маршрутизации локально\u002Fв облаке.\n\n## Основная ментальная модель\n\nSLM жертвует охватом ради конфиденциальности, экономии и офлайн-работы. Победная\nстратегия: **дать SLM управлять и позволить инструментам выполнять тяжелую работу.** Модели\nне нужно *знать* кодовую базу — ей нужно знать, когда вызывать\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)  # локальный заполнитель\n```\n\n~8 ГБ ОЗУ — реалистичный минимум; 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- **Изолированные инструменты**: каждый файловый инструмент разрешает пути и отклоняет всё за пределами одной корневой папки проекта — даже локально инструмент работает с разрешениями пользователя.\n- **Цикл вызова инструментов**: зарегистрировать инструменты с схемой 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Это отражает идею маршрутизации моделей из Урока 16, с рабочей станцией как одним\nиз маршрутов. Предпочитайте конструкции, которые могут перейти к локальному варианту, чтобы агент деградировал в качестве,\nа не полностью выходил из строя.\n\n## Ограничения для помощника\n\n- Каждый файловый\u002Fинструментальный вызов ограничивать изолированной проектной директорией.\n- Не отправлять код или данные в облако, если целью ученика является конфиденциальность\u002Fофлайн — весь конвейер должен оставаться локальным.\n- Устанавливать реалистичные ожидания по качеству SLM; опираться на инструменты и RAG, а не на запомненные моделью знания.\n- Обратите внимание, что в Уроке 17 **нет** эндпоинта Foundry Responses, поэтому действие облачного smoke-теста не применяется — проверяйте, запуская тетрадь локально.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Отказ от ответственности**:\nЭтот документ был переведен с использованием сервиса машинного перевода [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Создание локальных AI-агентов с Foundry Local и Qwen\n\n> Сопроводительное умение для [Урока 17 – Создание локальных AI-агентов](..\u002F..\u002F..\u002F17-creating-local-ai-agents\u002FREADME.md).\n> Используйте его, чтобы помочь ученику построить агента, который самостоятельно рассуждает, вызывает инструменты и ищет\n> документацию полностью на своей машине — без облачных вычислений. Основывайте каждое\n> предложение на содержании урока и запускаемой тетради.\n\n## Триггеры\n\nАктивируйте это умение, когда ученик хочет:\n- Запустить агента **полностью на устройстве** ради конфиденциальности, экономии или офлайн-режима.\n- Обслуживать модель локально с помощью **Foundry Local** и подключаться через OpenAI-совместимый эндпоинт.\n- Использовать модель с **функциональным вызовом Qwen** для надежных локальных вызовов инструментов.\n- Добавить **локальный RAG** (Chroma) или **локальный MCP сервер**.\n- Разработать **гибридную** стратегию маршрутизации локально\u002Fв облаке.\n\n## Основная ментальная модель\n\nSLM жертвует охватом ради конфиденциальности, экономии и офлайн-работы. Победная\nстратегия: **дать SLM управлять и позволить инструментам выполнять тяжелую работу.** Модели\nне нужно *знать* кодовую базу — ей нужно знать, когда вызывать\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)  # локальный заполнитель\n```\n\n~8 ГБ ОЗУ — реалистичный минимум; 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- **Изолированные инструменты**: каждый файловый инструмент разрешает пути и отклоняет всё за пределами одной корневой папки проекта — даже локально инструмент работает с разрешениями пользователя.\n- **Цикл вызова инструментов**: зарегистрировать инструменты с схемой 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Это отражает идею маршрутизации моделей из Урока 16, с рабочей станцией как одним\nиз маршрутов. Предпочитайте конструкции, которые могут перейти к локальному варианту, чтобы агент деградировал в качестве,\nа не полностью выходил из строя.\n\n## Ограничения для помощника\n\n- Каждый файловый\u002Fинструментальный вызов ограничивать изолированной проектной директорией.\n- Не отправлять код или данные в облако, если целью ученика является конфиденциальность\u002Fофлайн — весь конвейер должен оставаться локальным.\n- Устанавливать реалистичные ожидания по качеству SLM; опираться на инструменты и RAG, а не на запомненные моделью знания.\n- Обратите внимание, что в Уроке 17 **нет** эндпоинта Foundry Responses, поэтому действие облачного smoke-теста не применяется — проверяйте, запуская тетрадь локально.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Отказ от ответственности**:\nЭтот документ был переведен с использованием сервиса машинного перевода [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\u002Fru\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\u002Fru\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"]