Создание локальных AI-агентов с Foundry Local и Qwen
Сопроводительное умение для Урока 17 – Создание локальных AI-агентов. Используйте его, чтобы помочь ученику построить агента, который самостоятельно рассуждает, вызывает инструменты и ищет документацию полностью на своей машине — без облачных вычислений. Основывайте каждое предложение на содержании урока и запускаемой тетради.
Триггеры
Активируйте это умение, когда ученик хочет:
- Запустить агента полностью на устройстве ради конфиденциальности, экономии или офлайн-режима.
- Обслуживать модель локально с помощью Foundry Local и подключаться через OpenAI-совместимый эндпоинт.
- Использовать модель с функциональным вызовом Qwen для надежных локальных вызовов инструментов.
- Добавить локальный RAG (Chroma) или локальный MCP сервер.
- Разработать гибридную стратегию маршрутизации локально/в облаке.
Основная ментальная модель
SLM жертвует охватом ради конфиденциальности, экономии и офлайн-работы. Победная
стратегия: дать SLM управлять и позволить инструментам выполнять тяжелую работу. Модели
не нужно знать кодовую базу — ей нужно знать, когда вызывать
read_file и search_docs. Это играет на сильных сторонах SLM (ограниченные решения,
такие как выбор инструмента) и избегает слабостей (широкие знания, длинные многошаговые
рассуждения).
Почему именно эти компоненты
- Foundry Local предоставляет OpenAI-совместимый HTTP эндпоинт, так что код облачного агента переносится изменением только
base_url(и использованием локального фиктивного API ключа). Также автоматически выбирает лучшую сборку (CPU/GPU/NPU) для машины. - Модели Qwen обучены для функциональных вызовов и стабильно генерируют корректные вызовы инструментов — это то, что превращает локальную чат-модель в локального агента.
- Chroma работает в том же процессе и хранит векторы на диске, поэтому весь конвейер RAG (встраивание → сохранение → извлечение → рассуждение) остаётся локальным.
- MCP — это транспорт, а не облачная служба: MCP сервер может работать локально через
stdio.
Основные требования к настройке
foundry model run qwen2.5-7b-instruct
foundry service status
from foundry_local import FoundryLocalManager
from openai import OpenAI
manager = FoundryLocalManager("qwen2.5-7b-instruct")
client = OpenAI(base_url=manager.endpoint, api_key=manager.api_key) # локальный заполнитель
~8 ГБ ОЗУ — реалистичный минимум; GPU/NPU помогает, но не обязателен.
Основные паттерны для воспроизведения
Направьте ученика на тетрадь
17-local-agent-foundry-local.ipynb:
- Изолированные инструменты: каждый файловый инструмент разрешает пути и отклоняет всё за пределами одной корневой папки проекта — даже локально инструмент работает с разрешениями пользователя.
- Цикл вызова инструментов: зарегистрировать инструменты с схемой OpenAI, выполнять запрошенные инструменты локально, возвращать результаты, повторять до получения окончательного ответа.
- Локальный RAG: добавлять документы в коллекцию Chroma;
search_docsвозвращает топ-k фрагментов. - Локальный MCP: подключаться к локальному серверу через
stdio; ограничивать область действия проектной директорией и проверять его вывод.
Гибридная маршрутизация (локальный как одна из моделей)
| Ситуация | Где выполняется |
|---|---|
| Конфиденциальные данные / офлайн | Локальный SLM |
| Простая, ограниченная задача | Локальный SLM (дешево, быстро) |
| Сложное многошаговое рассуждение над неконфиденциальными данными | Облачная модель |
| Сбой облака | Локальный SLM (плавное ухудшение) |
Это отражает идею маршрутизации моделей из Урока 16, с рабочей станцией как одним из маршрутов. Предпочитайте конструкции, которые могут перейти к локальному варианту, чтобы агент деградировал в качестве, а не полностью выходил из строя.
Ограничения для помощника
- Каждый файловый/инструментальный вызов ограничивать изолированной проектной директорией.
- Не отправлять код или данные в облако, если целью ученика является конфиденциальность/офлайн — весь конвейер должен оставаться локальным.
- Устанавливать реалистичные ожидания по качеству SLM; опираться на инструменты и RAG, а не на запомненные моделью знания.
- Обратите внимание, что в Уроке 17 нет эндпоинта Foundry Responses, поэтому действие облачного smoke-теста не применяется — проверяйте, запуская тетрадь локально.
Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
Source: microsoft/ai-agents-for-beginners → translations/ru/.agents/skills/local-ai-agents/SKILL.md