# Local AI Agents

> Активируйте это умение, когда ученик хочет: - Запустить агента полностью на устройстве ради конфиденциальности, экономии или офлайн-режима. - Обслуживать модель локально с помощью Foundry Local и подключаться через OpenAI-совместимый эндпоинт. - Использовать модель с функциональным вызовом Qwen для надежных локальных вызовов инструментов. - Добавить локальный RAG (Chroma) или локальный MCP сервер.

- Skill: `thedixitjain/local-ai-agents-24` (Agent Skill)
- Install (CLI): `npx skillmds add thedixitjain/local-ai-agents-24`
- Raw SKILL.md: https://api.skillmd.com/api/skills/thedixitjain/local-ai-agents-24/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: thedixitjain (https://skillmd.com/u/thedixitjain)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/thedixitjain/local-ai-agents-24

---

# Создание локальных AI-агентов с Foundry Local и Qwen

> Сопроводительное умение для [Урока 17 – Создание локальных AI-агентов](../../../17-creating-local-ai-agents/README.md).
> Используйте его, чтобы помочь ученику построить агента, который самостоятельно рассуждает, вызывает инструменты и ищет
> документацию полностью на своей машине — без облачных вычислений. Основывайте каждое
> предложение на содержании урока и запускаемой тетради.

## Триггеры

Активируйте это умение, когда ученик хочет:
- Запустить агента **полностью на устройстве** ради конфиденциальности, экономии или офлайн-режима.
- Обслуживать модель локально с помощью **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`.

## Основные требования к настройке

```bash
foundry model run qwen2.5-7b-instruct
foundry service status
```

```python
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`](../../../17-creating-local-ai-agents/code_samples/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 DISCLAIMER START -->
**Отказ от ответственности**:
Этот документ был переведен с использованием сервиса машинного перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

---

**Source:** [`microsoft/ai-agents-for-beginners`](https://github.com/microsoft/ai-agents-for-beginners) → `translations/ru/.agents/skills/local-ai-agents/SKILL.md`

