AutoGen: фреймворк Microsoft для мультиагентных приложений
📂 Исходный код на GitHubФреймворк для сборки мультиагентных AI-систем: событийные агенты, групповые чаты, MCP-инструменты, no-code студия и распределённый рантайм.
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