Дата публикации
ai_products

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.

Какие задачи решает

  1. Быстрый старт с агентами

    • Пара строк кода — и у вас агент, который умеет общаться с пользователем.
    • Примеры «hello-world → продакшен» есть и для Python, и для .NET.
  2. Сложные многоагентные сценарии

    • Оркестрация нескольких агентов и функций через граф.
    • Поддержка human-in-the-loop, когда нужно ручное подтверждение или выбор.
    • Чекпоинты и «перемотка» для долгих или дорогих процессов.
  3. Хостинг и интеграция

    • Хостинг через Azure Functions и Durable Task.
    • A2A (agent-to-agent) сценарии.
    • End-to-end примеры: от простого агента до полноценного приложения с оценкой качества.
  4. Исследования и эксперименты

    • 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.


Читайте также