Практическая мастерская по запуску языковых моделей на собственном компьютере и созданию интеллектуальных приложений с помощью Foundry Local и Microsoft Agent Framework.
Что такое Foundry Local? Foundry Local — это легковесная среда выполнения, которая позволяет скачивать, управлять и предоставлять языковые модели полностью на вашем оборудовании. Она предоставляет совместимый с OpenAI API, так что любое средство или SDK, поддерживающее OpenAI, может подключаться — облачный аккаунт не требуется.
Арабский | Бенгальский | Болгарский | Бирманский (Мьянма) | Китайский (упрощённый) | Китайский (традиционный, Гонконг) | Китайский (традиционный, Макао) | Китайский (традиционный, Тайвань) | Хорватский | Чешский | Датский | Нидерландский | Эстонский | Финский | Французский | Немецкий | Греческий | Иврит | Хинди | Венгерский | Индонезийский | Итальянский | Японский | Каннада | Кхмерский | Корейский | Литовский | Малайский | Малаялам | Маратхи | Непальский | Нигерийский пиджин | Норвежский | Персидский (фарси) | Польский | Португальский (Бразилия) | Португальский (Португалия) | Пенджаби (гурмукхи) | Румынский | Русский | Сербский (кириллица) | Словацкий | Словенский | Испанский | Суахили | Шведский | Тагальский (филиппинский) | Тамильский | Телугу | Тайский | Турецкий | Украинский | Урду | Вьетнамский
Предпочитаете клонировать локально?
Этот репозиторий включает более 50 переводов, что существенно увеличивает размер скачивания. Чтобы клонировать без переводов, используйте спарс-чекаут:
Bash / macOS / Linux:
git clone --filter=blob:none --sparse https://github.com/microsoft-foundry/Foundry-Local-Lab.git cd Foundry-Local-Lab git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'CMD (Windows):
git clone --filter=blob:none --sparse https://github.com/microsoft-foundry/Foundry-Local-Lab.git cd Foundry-Local-Lab git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"Это даст вам всё необходимое для прохождения курса с гораздо более быстрой загрузкой.
По окончании мастерской вы сможете:
| # | Цель |
|---|---|
| 1 | Установить Foundry Local и управлять моделями с помощью CLI |
| 2 | Овладеть API SDK Foundry Local для программного управления моделями |
| 3 | Подключаться к локальному серверу вывода через SDK для Python, JavaScript и C# |
| 4 | Построить пайплайн Retrieval-Augmented Generation (RAG), который основывает ответы на ваших данных |
| 5 | Создавать AI-агентов с постоянными инструкциями и персонажами |
| 6 | Оркестрировать многоагентные рабочие процессы с обратными связями |
| 7 | Изучить производственное прикладное приложение — Zava Creative Writer |
| 8 | Создавать фреймворки для оценки с золотыми наборами данных и оцениванием LLM как судьи |
| 9 | Транскрибировать аудио с Whisper — распознавание речи на устройстве с использованием Foundry Local SDK |
| 10 | Компилировать и запускать кастомные или Hugging Face модели с ONNX Runtime GenAI и Foundry Local |
| 11 | Позволять локальным моделям вызывать внешние функции с помощью паттерна tool-calling |
| 12 | Создавать браузерный UI для Zava Creative Writer с потоковой трансляцией в реальном времени |
| Требование | Подробности |
|---|---|
| Оборудование | Минимум 8 ГБ ОЗУ (рекомендуется 16 ГБ); CPU с поддержкой AVX2 или поддерживаемый GPU |
| ОС | Windows 10/11 (x64/ARM), Windows Server 2025 или macOS 13+ |
| Foundry Local CLI | Установка через winget install Microsoft.FoundryLocal (Windows) или brew tap microsoft/foundrylocal && brew install foundrylocal (macOS). Подробнее в гайде по началу работы |
| Среда выполнения языка | Python 3.9+ и/или .NET 9.0+ и/или Node.js 18+ |
| Git | Для клонирования этого репозитория |
# 1. Клонируйте репозиторий
git clone https://github.com/microsoft-foundry/foundry-local-lab.git
cd foundry-local-lab
# 2. Убедитесь, что Foundry Local установлен
foundry model list # Список доступных моделей
foundry model run phi-3.5-mini # Начать интерактивный чат
# 3. Выберите языковую дорожку (см. лабораторную работу Часть 2 для полной настройки)| Язык | Быстрый старт |
|---|---|
| Python | cd python && pip install -r requirements.txt && python foundry-local.py |
| C# | cd csharp && dotnet run |
| JavaScript | cd javascript && npm install && node foundry-local.mjs |
Руководство по лаборатории: labs/part1-getting-started.md
- Что такое Foundry Local и как он работает
- Установка CLI на Windows и macOS
- Изучение моделей — список, загрузка, запуск
- Понимание псевдонимов моделей и динамических портов
Руководство по лаборатории: labs/part2-foundry-local-sdk.md
- Зачем использовать SDK вместо CLI для разработки приложений
- Полная справка по API SDK для Python, JavaScript и C#
- Управление сервисом, просмотр каталога, жизненный цикл модели (скачать, загрузить, выгрузить)
- Быстрые шаблоны: инициализация Python-конструктора, JavaScript
init(), C#CreateAsync() - Метаданные
FoundryModelInfo, псевдонимы и выбор оптимальной модели под оборудование
Руководство по лаборатории: labs/part3-sdk-and-apis.md
- Подключение к Foundry Local из Python, JavaScript и C#
- Использование Foundry Local SDK для программного управления сервисом
- Потоковые чат-запросы через совместимый с OpenAI API
- Справочник методов SDK для каждого языка
Примеры кода:
| Язык | Файл | Описание |
|---|---|---|
| Python | python/foundry-local.py |
Базовый потоковый чат |
| C# | csharp/BasicChat.cs |
Потоковый чат на .NET |
| JavaScript | javascript/foundry-local.mjs |
Потоковый чат на Node.js |
Руководство по лаборатории: labs/part4-rag-fundamentals.md
- Что такое RAG и почему это важно
- Создание внутренней базы знаний в памяти
- Поиск по ключевым словам с подсчётом совпадений
- Составление основанных на данных системных запросов
- Запуск полного RAG-пайплайна на устройстве
Примеры кода:
| Язык | Файл |
|---|---|
| Python | python/foundry-local-rag.py |
| C# | csharp/RagPipeline.cs |
| JavaScript | javascript/foundry-local-rag.mjs |
Руководство по лаборатории: labs/part5-single-agents.md
- Что такое AI-агент (в отличие от прямого вызова LLM)
- Паттерн
ChatAgentи Microsoft Agent Framework - Системные инструкции, персонажи и многошаговые диалоги
- Структурированный вывод (JSON) от агентов
Примеры кода:
| Язык | Файл | Описание |
|---|---|---|
| Python | python/foundry-local-with-agf.py |
Один агент с Agent Framework |
| C# | csharp/SingleAgent.cs |
Один агент (паттерн ChatAgent) |
| JavaScript | javascript/foundry-local-with-agent.mjs |
Один агент (паттерн ChatAgent) |
Руководство по лаборатории: labs/part6-multi-agent-workflows.md
- Многоагентные пайплайны: исследователь → писатель → редактор
- Последовательная оркестрация и циклы обратной связи
- Общая конфигурация и структурированные передачи между агентами
- Проектирование собственного многоагентного рабочего процесса
Примеры кода:
| Язык | Файл | Описание |
|---|---|---|
| Python | python/foundry-local-multi-agent.py |
Пайплайн с тремя агентами |
| C# | csharp/MultiAgent.cs |
Пайплайн с тремя агентами |
| JavaScript | javascript/foundry-local-multi-agent.mjs |
Пайплайн с тремя агентами |
Руководство по лаборатории: labs/part7-zava-creative-writer.md
- Производственное многоагентное приложение с 4 специализированными агентами
- Последовательный пайплайн с петлями обратной связи от оценщика
- Потоковый вывод, поиск по каталогу продуктов, структурированные JSON-передачи
- Полная реализация на Python (FastAPI), JavaScript (Node.js CLI) и C# (.NET консоль)
Примеры кода:
| Язык | Каталог | Описание |
|---|---|---|
| Python | zava-creative-writer-local/src/api/ |
Веб-сервис FastAPI с оркестратором |
| JavaScript | zava-creative-writer-local/src/javascript/ |
CLI приложение на Node.js |
| C# | zava-creative-writer-local/src/csharp/ |
Консольное приложение .NET 9 |
Руководство по лаборатории: labs/part8-evaluation-led-development.md
- Создание системного фреймворка оценки AI-агентов с использованием золотых наборов данных
- Правила проверки (длина, покрытие ключевых слов, запрещённые термины) + оценивание LLM как судьи
- Сравнение вариантов подсказок с агрегированными картами оценок
- Расширение паттерна агента Zava Editor из части 7 в офлайн-тесты
- Треки для Python, JavaScript и C#
Примеры кода:
| Язык | Файл | Описание |
|---|---|---|
| Python | python/foundry-local-eval.py |
Фреймворк оценки |
| C# | csharp/AgentEvaluation.cs |
Фреймворк оценки |
| JavaScript | javascript/foundry-local-eval.mjs |
Фреймворк оценки |
Руководство по лаборатории: labs/part9-whisper-voice-transcription.md
- Распознавание речи с помощью OpenAI Whisper, работающего локально
- Обработка аудио с приоритетом конфиденциальности — аудио никогда не покидает ваше устройство
- Поддержка Python, JavaScript и C# с использованием
client.audio.transcriptions.create()(Python/JS) иAudioClient.TranscribeAudioAsync()(C#) - Включены образцы аудио файлов в стиле Zava для практических занятий
Примеры кода:
| Language | File | Description |
|---|---|---|
| Python | python/foundry-local-whisper.py |
Распознавание речи Whisper |
| C# | csharp/WhisperTranscription.cs |
Распознавание речи Whisper |
| JavaScript | javascript/foundry-local-whisper.mjs |
Распознавание речи Whisper |
Примечание: В этой лабораторной работе используется Foundry Local SDK для программной загрузки и подгрузки модели Whisper, затем аудио отправляется на локальный совместимый с OpenAI эндпоинт для транскрипции. Модель Whisper (
whisper) указана в каталоге Foundry Local и полностью выполняется на устройстве — не требуются ключи облачного API или доступ в сеть.
Руководство по лабораторной работе: labs/part10-custom-models.md
- Компиляция моделей Hugging Face в оптимизированный формат ONNX с помощью построителя моделей ONNX Runtime GenAI
- Аппаратно-специфичная компиляция (CPU, NVIDIA GPU, DirectML, WebGPU) и квантизация (int4, fp16, bf16)
- Создание конфигурационных файлов шаблонов чата для Foundry Local
- Добавление скомпилированных моделей в кэш Foundry Local
- Запуск пользовательских моделей через CLI, REST API и OpenAI SDK
- Пример для справки: полная компиляция Qwen/Qwen3-0.6B
Руководство по лабораторной работе: labs/part11-tool-calling.md
- Позволяет локальным моделям вызывать внешние функции (tool/function calling)
- Определение схем инструментов с использованием формата вызова функций OpenAI
- Обработка многошагового потока общения с вызовом инструментов
- Локальное выполнение вызовов инструментов и возврат результатов модели
- Выбор подходящей модели для сценариев вызова инструментов (Qwen 2.5, Phi-4-mini)
- Использование нативного
ChatClientSDK для вызова инструментов (JavaScript)
Примеры кода:
| Language | File | Description |
|---|---|---|
| Python | python/foundry-local-tool-calling.py |
Вызов инструментов с погодой/населенностью |
| C# | csharp/ToolCalling.cs |
Вызов инструментов с .NET |
| JavaScript | javascript/foundry-local-tool-calling.mjs |
Вызов инструментов с ChatClient |
Руководство по лабораторной работе: labs/part12-zava-ui.md
- Добавление браузерного фронтенда для Zava Creative Writer
- Сервис общего UI на Python (FastAPI), JavaScript (Node.js HTTP) и C# (ASP.NET Core)
- Обработка потокового NDJSON в браузере с использованием Fetch API и ReadableStream
- Значки статуса агента в реальном времени и потоковая передача текста статьи
Код (общий UI):
| File | Description |
|---|---|
zava-creative-writer-local/ui/index.html |
Макет страницы |
zava-creative-writer-local/ui/style.css |
Стили |
zava-creative-writer-local/ui/app.js |
Логика чтения потока и обновления DOM |
Добавления на бэкенде:
| Language | File | Description |
|---|---|---|
| Python | zava-creative-writer-local/src/api/main.py |
Обновлен для обслуживания статического UI |
| JavaScript | zava-creative-writer-local/src/javascript/server.mjs |
Новый HTTP-сервер, оборачивающий оркестратор |
| C# | zava-creative-writer-local/src/csharp-web/Program.cs |
Новый минимальный API проект ASP.NET Core |
Руководство по лабораторной работе: labs/part13-workshop-complete.md
- Итоги всего, что вы создали за все 12 частей
- Дополнительные идеи для расширения ваших приложений
- Ссылки на ресурсы и документацию
├── python/ # Python examples
│ ├── foundry-local.py # Basic chat
│ ├── foundry-local-with-agf.py # Single agent (AGF)
│ ├── foundry-local-rag.py # RAG pipeline
│ ├── foundry-local-multi-agent.py # Multi-agent workflow
│ ├── foundry-local-eval.py # Agent evaluation framework
│ ├── foundry-local-whisper.py # Whisper voice transcription
│ ├── foundry-local-tool-calling.py # Tool/function calling
│ └── requirements.txt
├── csharp/ # C# examples
│ ├── Program.cs # CLI router (chat|rag|agent|multi|eval|whisper|toolcall)
│ ├── BasicChat.cs # Basic chat
│ ├── RagPipeline.cs # RAG pipeline
│ ├── SingleAgent.cs # Single agent (ChatAgent pattern)
│ ├── MultiAgent.cs # Multi-agent workflow
│ ├── AgentEvaluation.cs # Agent evaluation framework
│ ├── WhisperTranscription.cs # Whisper voice transcription
│ ├── ToolCalling.cs # Tool/function calling
│ └── csharp.csproj
├── javascript/ # JavaScript examples
│ ├── foundry-local.mjs # Basic chat
│ ├── foundry-local-with-agent.mjs # Single agent
│ ├── foundry-local-rag.mjs # RAG pipeline
│ ├── foundry-local-multi-agent.mjs # Multi-agent workflow
│ ├── foundry-local-eval.mjs # Agent evaluation framework
│ ├── foundry-local-whisper.mjs # Whisper voice transcription
│ ├── foundry-local-tool-calling.mjs # Tool/function calling
│ └── package.json
├── zava-creative-writer-local/ # Production multi-agent app
│ ├── ui/ # Shared browser UI (Part 12)
│ │ ├── index.html # Page layout
│ │ ├── style.css # Styling
│ │ └── app.js # Stream reader and DOM updates
│ └── src/
│ ├── api/ # Python FastAPI service
│ │ ├── main.py # FastAPI server (serves UI)
│ │ ├── orchestrator.py # Pipeline coordinator
│ │ ├── foundry_config.py # Shared Foundry Local config
│ │ ├── requirements.txt
│ │ └── agents/ # Researcher, Product, Writer, Editor
│ ├── javascript/ # Node.js CLI and web server
│ │ ├── main.mjs # CLI entry point
│ │ ├── server.mjs # HTTP server with UI (Part 12)
│ │ ├── foundryConfig.mjs
│ │ └── package.json
│ ├── csharp/ # .NET 9 console app
│ │ ├── Program.cs
│ │ └── ZavaCreativeWriter.csproj
│ └── csharp-web/ # .NET 9 web API (Part 12)
│ ├── Program.cs
│ └── ZavaCreativeWriterWeb.csproj
├── labs/ # Step-by-step lab guides
│ ├── part1-getting-started.md
│ ├── part2-foundry-local-sdk.md
│ ├── part3-sdk-and-apis.md
│ ├── part4-rag-fundamentals.md
│ ├── part5-single-agents.md
│ ├── part6-multi-agent-workflows.md
│ ├── part7-zava-creative-writer.md
│ ├── part8-evaluation-led-development.md
│ ├── part9-whisper-voice-transcription.md
│ ├── part10-custom-models.md
│ ├── part11-tool-calling.md
│ ├── part12-zava-ui.md
│ └── part13-workshop-complete.md
├── samples/
│ └── audio/ # Zava-themed WAV files for Part 9
│ ├── generate_samples.py # TTS script (pyttsx3) to create WAVs
│ └── README.md # Sample descriptions
├── AGENTS.md # Coding agent instructions
├── package.json # Root devDependency (mermaid-cli)
├── LICENSE # MIT licence
└── README.md
| Resource | Link |
|---|---|
| Сайт Foundry Local | foundrylocal.ai |
| Каталог моделей | foundrylocal.ai/models |
| Foundry Local GitHub | github.com/microsoft/foundry-local |
| Руководство для начала работы | Microsoft Learn - Foundry Local |
| Справочник Foundry Local SDK | Microsoft Learn - SDK Reference |
| Microsoft Agent Framework | Microsoft Learn - Agent Framework |
| OpenAI Whisper | github.com/openai/whisper |
| ONNX Runtime GenAI | github.com/microsoft/onnxruntime-genai |
Данный материал мастерской предоставляется для образовательных целей.
Успешной работы! 🚀
Отказ от ответственности: Этот документ был переведен с помощью сервиса машинного перевода Co-op Translator. Несмотря на то, что мы стремимся к точности, пожалуйста, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для важной информации рекомендуется обращаться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.