- Дата публикации
Microsoft Agent Framework и Foundry Toolkit теперь доступны всем: как запускать своих ИИ-агентов в Python и .NET
Что нового
Microsoft открыла общий доступ к Microsoft Agent Framework и инструментам Foundry Toolkit для VS Code. Теперь это не эксперимент, а полноценный фреймворк для разработки и оркестрации ИИ-агентов с официальной поддержкой двух стеков:
- Python (через пакет
agent-frameworkи под-пакеты из каталогаpython/packages) - .NET (через пакет
Microsoft.Agents.AIи связанные пакеты для Foundry и OpenAI)
Ключевые новшества и возможности:
- Мульти-языковой фреймворк: единый подход к агентам и их оркестрации для Python и .NET.
- Графовые воркфлоу: построение цепочек и сетей агентов и функций с:
- потоковой передачей данных (streaming),
- чекпоинтами (checkpointing),
- участием человека в цикле (human-in-the-loop),
- «перемоткой» состояния (time-travel) воркфлоу.
- DevUI: интерактивный интерфейс разработчика для разработки, тестирования и отладки агентов и их рабочих процессов.
- AF Labs: экспериментальные пакеты для:
- бенчмаркинга,
- обучения с подкреплением (reinforcement learning),
- исследовательских задач.
- Готовые примеры: базовые агенты на Python и .NET, интеграция с Microsoft Foundry, Azure OpenAI и OpenAI API.
- Инфраструктура для продакшена: поддержка хостинга через Azure Functions, Durable Task, Durable Agents и Durable Workflows.
Фреймворк рассчитан как на простые чат-боты, так и на сложные многоагентные системы с оркестрацией по графу.
Как это работает
Базовая идея
Microsoft Agent Framework — это прослойка между LLM (например, развернутыми через Microsoft Foundry, Azure OpenAI или OpenAI API) и вашим приложением. Он даёт:
- абстракцию агента (Agent / AIAgent),
- подключение к источнику модели (Foundry, OpenAI и т.п.),
- оркестрацию нескольких агентов и функций в виде графа,
- инструменты для запуска, отладки и хостинга.
Архитектура на Python
В Python вы устанавливаете единый пакет:
pip install agent-framework # Это поставит все подпакеты, отдельные пакеты лежат в `python/packages`.
# На Windows первая установка может занять минуту.
Затем создаёте агента, указывая клиент Foundry и инструкции:
# pip install agent-framework
# Используйте `az login` для аутентификации в Azure CLI
import os
import asyncio
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
async def main():
# Инициализация чат-агента с Microsoft Foundry
# endpoint, deployment name и api version можно задать через переменные окружения
# или передать напрямую в конструктор FoundryChatClient
agent = Agent(
client=FoundryChatClient(
credential=AzureCliCredential(),
# project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
# model=os.environ["FOUNDRY_MODEL_DEPLOYMENT_NAME"],
),
name="HaikuBot",
instructions="You are an upbeat assistant that writes beautifully.",
)
print(await agent.run("Write a haiku about Microsoft Agent Framework."))
if __name__ == "__main__":
asyncio.run(main())
Под капотом Agent использует FoundryChatClient, который ходит в Microsoft Foundry, а AzureCliCredential берёт токен из Azure CLI (после az login).
Архитектура на .NET
В .NET вы добавляете NuGet-пакет:
dotnet add package Microsoft.Agents.AI
Для интеграции с Microsoft Foundry — отдельный пакет:
// dotnet add package Microsoft.Agents.AI.Foundry
// Используйте `az login` для аутентификации в Azure CLI
using Azure.AI.Projects;
using Azure.Identity;
using System;
using Azure.AI.Projects;
using Azure.Identity;
var endpoint = Environment.GetEnvironmentVariable("AZURE_AI_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("AZURE_AI_PROJECT_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME")
?? "gpt-5.4-mini";
var agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
name: "HaikuBot",
instructions: "You are an upbeat assistant that writes beautifully."
);
Console.WriteLine(await agent.RunAsync("Write a haiku about Microsoft Agent Framework."));
Здесь AIProjectClient подключается к вашему проекту в Microsoft Foundry, а AsAIAgent превращает его в агента с конкретной моделью (по умолчанию gpt-5.4-mini).
Для OpenAI API — другой пакет и клиент:
// dotnet add package Microsoft.Agents.AI.OpenAI
using System;
using OpenAI;
using OpenAI.Responses;
// Замените <apikey> на ваш OpenAI API key.
var agent = new OpenAIClient("<apikey>")
.GetResponsesClient()
.AsAIAgent(
model: "gpt-5.4-mini",
name: "HaikuBot",
instructions: "You are an upbeat assistant that writes beautifully."
);
Console.WriteLine(await agent.RunAsync("Write a haiku about Microsoft Agent Framework."));
Графовые воркфлоу и DevUI
Фреймворк описывает сложные процессы как графы:
- узлы — агенты или детерминированные функции,
- рёбра — потоки данных между ними.
Внутри реализованы:
- streaming — поэтапная передача частичных ответов,
- checkpointing — сохранение состояния, чтобы восстановиться после сбоя или откатиться назад,
- human-in-the-loop — точки, где решение должен принять человек,
- time-travel — возврат к предыдущему состоянию воркфлоу.
DevUI подключается к этим воркфлоу и даёт интерфейс для:
- запуска сценариев,
- просмотра хода выполнения,
- отладки, когда что-то идёт не так.
AF Labs
AF Labs — набор экспериментальных пакетов, которые не входят в стабильное ядро, но дают доступ к:
- бенчмаркам агентов и воркфлоу,
- экспериментам с reinforcement learning,
- исследовательским фичам.
Это зона для тех, кто хочет выжимать максимум из агентов и моделей и не боится нестабильных API.
Конфигурация через переменные окружения
Большинство примеров полагаются на переменные окружения. Основные:
AZURE_OPENAI_ENDPOINT— URL ресурса Azure OpenAI.AZURE_OPENAI_DEPLOYMENT_NAME— имя деплоймента модели (например,gpt-4o-mini).AZURE_AI_PROJECT_ENDPOINT— endpoint проекта Microsoft Foundry.AZURE_AI_MODEL_DEPLOYMENT_NAME— имя деплоймента модели в Foundry.OPENAI_API_KEY— ключ платформы OpenAI для не-Azure сценариев.
Фреймворк считывает эти переменные, чтобы не хардкодить конфигурацию в коде.
Аутентификация
Основные варианты:
- Azure CLI:
AzureCliCredentialиDefaultAzureCredentialиспользуют вход в систему черезaz login. - API-ключи: для OpenAI — явная передача ключа
OPENAI_API_KEYили строки в конструкторOpenAIClient.
Типичные проблемы:
- Ошибки аутентификации с Azure — вы не выполнили
az loginперед запуском приложения. - Ошибки по API-ключу — неправильный или отсутствующий ключ, либо ключ от другого ресурса.
Совет от Microsoft: DefaultAzureCredential удобно использовать локально, но в продакшене лучше перейти на более конкретные креденшалы, например ManagedIdentityCredential. Это уменьшит задержки, снизит риск нежелательного перебора источников учётных данных и потенциальных проблем с безопасностью.
Что это значит для вас
Кому это нужно
- Разработчики на Python и .NET, которые уже используют LLM и хотят уйти от самописных обвязок вокруг API.
- Инженеры по данным и ML, строящие многоагентные системы, пайплайны и сложные цепочки запросов.
- Команды, работающие с Azure: Foundry, Azure OpenAI, Durable Functions, Durable Task.
Какие задачи решает
-
Быстрый старт с агентами
- Пара строк кода — и у вас агент, который умеет общаться с пользователем.
- Примеры «hello-world → продакшен» есть и для Python, и для .NET.
-
Сложные многоагентные сценарии
- Оркестрация нескольких агентов и функций через граф.
- Поддержка human-in-the-loop, когда нужно ручное подтверждение или выбор.
- Чекпоинты и «перемотка» для долгих или дорогих процессов.
-
Хостинг и интеграция
- Хостинг через Azure Functions и Durable Task.
- A2A (agent-to-agent) сценарии.
- End-to-end примеры: от простого агента до полноценного приложения с оценкой качества.
-
Исследования и эксперименты
- AF Labs для бенчмаркинга и RL-экспериментов.
- Подходящий инструмент, если вы тестируете разные архитектуры агентов.
Где стоит применять
- Корпоративные ассистенты: внутренние чат-боты для документации, поддержки сотрудников, helpdesk.
- Автоматизация бизнес-процессов: многошаговые сценарии с участием людей (одобрения, проверки, генерация и ревью документов).
- Инструменты для разработчиков: ассистенты в IDE, системы помощи по коду и логам.
- Прототипирование ИИ-продуктов: быстрые MVP, где важно быстро собрать цепочки агентов и функций.
Где лучше не использовать
- Если вы пишете совсем простой однострочный скрипт к OpenAI API и не планируете масштабировать, фреймворк может быть избыточным.
- Если ваш стек строго не-Python и не-.NET, интеграция потребует дополнительных прослоек.
- Если у вас нет доступа к Azure или OpenAI API (из-за политики компании или регуляторных ограничений), значительная часть функциональности потеряет смысл.
Доступность из России
Microsoft Foundry, Azure OpenAI и OpenAI API могут требовать:
- доступ к зарубежным облачным сервисам,
- корректную оплату зарубежным провайдерам,
- иногда — использование VPN из-за сетевых ограничений.
Перед внедрением в продакшен стоит проверить юридические и технические ограничения в вашей организации.
Место на рынке
По сути, Microsoft Agent Framework конкурирует с несколькими классами решений:
- самописные обвязки вокруг HTTP-клиентов к LLM,
- фреймворки оркестрации LLM-агентов (в экосистемах Python и .NET),
- облачные пайплайн-платформы для ML и LLM.
Конкретных цифр по скорости, стоимости запросов или сравнению с другими стеками Microsoft не приводит. Зато видно упор на:
- глубокую интеграцию с Azure (Foundry, Azure Functions, Durable Task),
- поддержку и Python, и .NET как «первоклассных» стеков,
- наличие DevUI и AF Labs как части экосистемы, а не внешних тулов.
Если вы уже живёте в Azure и используете Foundry или Azure OpenAI, этот фреймворк логично рассматривать как основной способ сборки и оркестрации агентов.
Установка
Python
pip install agent-framework # Это установит все подпакеты, отдельные пакеты смотрите в `python/packages`.
# На Windows первая установка может занять минуту.
После установки авторизуйтесь в Azure CLI (если используете Foundry или Azure OpenAI):
az login
.NET
Базовый пакет агентов:
dotnet add package Microsoft.Agents.AI
Для работы с Microsoft Foundry:
dotnet add package Microsoft.Agents.AI.Foundry
Для работы с OpenAI API:
dotnet add package Microsoft.Agents.AI.OpenAI
Как запустить: рабочие примеры кода
Простой агент на Python (Microsoft Foundry)
# pip install agent-framework
# Используйте `az login` для аутентификации в Azure CLI
import os
import asyncio
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
async def main():
# Инициализация чат-агента с Microsoft Foundry
# endpoint, deployment name и api version можно задать через переменные окружения
# или передать напрямую в конструктор FoundryChatClient
agent = Agent(
client=FoundryChatClient(
credential=AzureCliCredential(),
# project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
# model=os.environ["FOUNDRY_MODEL_DEPLOYMENT_NAME"],
),
name="HaikuBot",
instructions="You are an upbeat assistant that writes beautifully.",
)
print(await agent.run("Write a haiku about Microsoft Agent Framework."))
if __name__ == "__main__":
asyncio.run(main())
Простой агент на .NET (Microsoft Foundry, токен через Azure)
// dotnet add package Microsoft.Agents.AI.Foundry
// Используйте `az login` для аутентификации в Azure CLI
using Azure.AI.Projects;
using Azure.Identity;
using System;
using Azure.AI.Projects;
using Azure.Identity;
var endpoint = Environment.GetEnvironmentVariable("AZURE_AI_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("AZURE_AI_PROJECT_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME")
?? "gpt-5.4-mini";
var agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
.AsAIAgent(
model: deploymentName,
name: "HaikuBot",
instructions: "You are an upbeat assistant that writes beautifully."
);
Console.WriteLine(await agent.RunAsync("Write a haiku about Microsoft Agent Framework."));
Простой агент на .NET (OpenAI Responses)
// dotnet add package Microsoft.Agents.AI.OpenAI
using System;
using OpenAI;
using OpenAI.Responses;
// Замените <apikey> на ваш OpenAI API key.
var agent = new OpenAIClient("<apikey>")
.GetResponsesClient()
.AsAIAgent(
model: "gpt-5.4-mini",
name: "HaikuBot",
instructions: "You are an upbeat assistant that writes beautifully."
);
Console.WriteLine(await agent.RunAsync("Write a haiku about Microsoft Agent Framework."));
Где искать примеры и документацию
Microsoft предлагает несколько наборов примеров.
Python
- Getting Started — пошаговый туториал от «hello-world» до хостинга.
- Agent Concepts — примеры по темам: инструменты, middleware, провайдеры и т.д.
- Workflows — создание воркфлоу и их интеграция с агентами.
- Hosting — A2A, Azure Functions, Durable Task.
- End-to-End — полноценные приложения, оценка и демо.
.NET
- Getting Started — путь от «hello agent» до хостинга.
- Agent Concepts — базовое создание агентов и использование инструментов.
- Agent Providers — разные провайдеры агентов.
- Workflows — сложные многоагентные паттерны и оркестрация.
- Hosting — A2A, Durable Agents, Durable Workflows.
- End-to-End — готовые приложения и демо.
Если чего-то не хватает, Microsoft предлагает:
- еженедельные office hours,
- Discord-канал для вопросов,
- GitHub Issues для багов и фич-реквестов.
Фреймворк уже сейчас закрывает типичные сценарии разработки ИИ-агентов в экосистеме Azure и даёт удобный путь от прототипа до продакшена — особенно, если вы работаете на Python или .NET и хотите меньше думать про низкоуровневую интеграцию с LLM.