AutoGen: фреймворк Microsoft для мультиагентных приложений

· 3 мин чтения
multi-agent framework python microsoft
📂 Исходный код на GitHub

Фреймворк для сборки мультиагентных AI-систем: событийные агенты, групповые чаты, MCP-инструменты, no-code студия и распределённый рантайм.

AutoGen: фреймворк Microsoft для мультиагентных приложений

AutoGen — фреймворк от Microsoft Research для создания мультиагентных AI-приложений. Агенты в нём могут работать автономно или вместе с человеком. Проект задал стандарт многослойной архитектуры для агентных фреймворков и вдохновил целое поколение похожих решений.

Важный контекст: AutoGen переведён в режим поддержки. Новых функций там не появится, развитие ведёт сообщество. Для новых проектов Microsoft рекомендует Microsoft Agent Framework — готовое к продакшену продолжение AutoGen со стабильными API и долгосрочной поддержкой. Тем не менее AutoGen остаётся рабочим инструментом, а его архитектура — отличным учебником по устройству мультиагентных систем. Код распространяется под лицензией MIT, документация — под CC BY 4.0.

Установка

Нужен Python 3.10 или новее. Базовый набор ставится двумя пакетами:

pip install -U "autogen-agentchat" "autogen-ext[openai]"

Для no-code конструктора агентов есть отдельный пакет:

pip install -U "autogenstudio"

Hello World на AgentChat

Минимальный пример: один ассистент на модели GPT-4.1. Понадобится ключ OPENAI_API_KEY.

import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient

async def main() -> None:
    model_client = OpenAIChatCompletionClient(model="gpt-4.1")
    agent = AssistantAgent("assistant", model_client=model_client)
    print(await agent.run(task="Say 'Hello World!'"))
    await model_client.close()

asyncio.run(main())

Кроме OpenAI поддерживаются и другие провайдеры — список моделей есть в документации AgentChat.

Работа с MCP-серверами

AutoGen умеет подключаться к MCP-серверам через McpWorkbench. В примере ниже агент получает инструменты Playwright MCP и работает с браузером:

# First run S0 to install the MCP server.
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StdioServerParams


async def main() -> None:
    model_client = OpenAIChatCompletionClient(model="gpt-4.1")
    server_params = StdioServerParams(
        command="npx",
        args=[
            "@playwright/mcp@latest",
            "--headless",
        ],
    )
    async with McpWorkbench(server_params) as mcp:
        agent = AssistantAgent(
            "web_browsing_assistant",
            model_client=model_client,
            workbench=mcp, # For multiple MCP servers, put them in a list.
            model_client_stream=True,
            max_tool_iterations=10,
        )
        await Console(agent.run_stream(task="Find out how many contributors for the microsoft/autogen repository"))


asyncio.run(main())

Авторы предупреждают: подключайте только доверенные MCP-серверы. Они могут выполнять команды в вашем окружении и получать доступ к чувствительным данным.

Оркестрация нескольких агентов

Самый простой способ собрать команду — превратить агентов в инструменты с помощью AgentTool. Общий ассистент сам решает, к какому эксперту обратиться:

import asyncio

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.tools import AgentTool
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient


async def main() -> None:
    model_client = OpenAIChatCompletionClient(model="gpt-4.1")

    math_agent = AssistantAgent(
        "math_expert",
        model_client=model_client,
        system_message="You are a math expert.",
        description="A math expert assistant.",
        model_client_stream=True,
    )
    math_agent_tool = AgentTool(math_agent, return_value_as_last_message=True)

    chemistry_agent = AssistantAgent(
        "chemistry_expert",
        model_client=model_client,
        system_message="You are a chemistry expert.",
        description="A chemistry expert assistant.",
        model_client_stream=True,
    )
    chemistry_agent_tool = AgentTool(chemistry_agent, return_value_as_last_message=True)

    agent = AssistantAgent(
        "assistant",
        system_message="You are a general assistant. Use expert tools when needed.",
        model_client=model_client,
        model_client_stream=True,
        tools=[math_agent_tool, chemistry_agent_tool],
        max_tool_iterations=10,
    )
    await Console(agent.run_stream(task="What is the integral of x^2?"))
    await Console(agent.run_stream(task="What is the molecular weight of water?"))


asyncio.run(main())

Более сложные сценарии — групповые чаты и другие паттерны — описаны в документации AgentChat.

Три слоя архитектуры

Главная идея AutoGen — слоистая конструкция. Каждый слой отвечает за своё и опирается на нижние. Это позволяет работать на разном уровне абстракции: от высокоуровневых API до отдельных компонентов.

  • Core API (autogen-core) — передача сообщений, событийные агенты, локальный и распределённый рантайм. Есть кросс-языковая поддержка: Python и .NET.
  • AgentChat API (autogen-agentchat) — упрощённый слой для быстрых прототипов. Построен поверх Core API и поддерживает типовые паттерны: чат двух агентов, групповые чаты.
  • Extensions API (autogen-ext) — расширения от первой и третьей сторон: клиенты LLM (OpenAI, AzureOpenAI), выполнение кода и другие возможности.

Инструменты разработчика

Вокруг фреймворка есть два инструмента.

AutoGen Studio (autogen-studio) — no-code GUI для сборки мультиагентных приложений. Запускается одной командой:

autogenstudio ui --port 8080 --appdir ./my-app

Студия предназначена для прототипирования. Это не продакшен-приложение: аутентификацию, безопасность и остальное для боевого развертывания авторы предлагают добавлять самостоятельно на базе фреймворка.

AutoGen Bench (agbench) — набор бенчмарков для оценки качества работы агентов.

Magentic-One

Показательный пример того, что строится на AutoGen, — Magentic-One. Это команда агентов, которая решает задачи, требующие работы с браузером, выполнения кода и работы с файлами. Команда собрана на AgentChat API и Extensions API.

Миграция со старых версий

Переход с AutoGen v0.2 на актуальную линейку — это не обновление, а переезд. Релизы v0.4+ переписали ядро: появились событийный рантайм, типизированные сообщения и новая структура пакетов. Старый код на autogen напрямую не совместим с autogen-agentchat. Официальный гид по миграции разбирает типовые сценарии и замену старых конструкций.

Куда идти дальше

Если вы начинаете новый проект, берите Microsoft Agent Framework. Если у вас уже есть код на AutoGen, поможет гид по миграции. Актуальные версии пакетов публикуются на странице релизов.

Сообщество собирается в GitHub Discussions и Discord-сервере, но проект теперь ведёт сообщество, поэтому ответы могут приходить небыстро. Вклад принимается только в виде исправлений багов, патчей безопасности и улучшений документации — правила описаны в CONTRIBUTING.md. Частые вопросы разобраны в FAQ.

AutoGen больше не флагман Microsoft, но именно он сделал мультиагентные системы доступными тысячам разработчиков. Даже сегодня его исходники — один из лучших способов понять, как устроены событийные агенты, распределённые рантаймы и оркестрация команд LLM.

Источник: https://github.com/microsoft/autogen