Open-source фреймворк от Microsoft для создания multi-agent систем с групповыми чатами, памятью и интеграцией с любыми LLM. ★ 4.7/5
Переход на официальный сайт продукта.
Полный обзор AutoGen — open-source фреймворка от Microsoft для создания multi-agent систем с групповыми чатами, памятью и интеграцией с любыми LLM
Microsoft AutoGen — это open-source фреймворк для создания агентных AI-систем, разработанный Microsoft Research и опубликованный на GitHub в августе 2023 года. За три года проект набрал более 60 000 звёзд и стал одним из самых популярных инструментов в экосистеме agentic AI. AutoGen позволяет разработчикам создавать многоагентные (multi-agent) системы, где несколько AI-агентов общаются друг с другом, координируют действия и совместно решают сложные задачи — от генерации кода до анализа данных и автоматизации бизнес-процессов.
Ключевая идея AutoGen — разговорное программирование (conversational programming). Вместо жёсткой оркестрации через графы или пайплайны, агенты общаются в естественном чате, передавая друг другу контекст и результаты. Это делает систему гибкой: агенты могут адаптироваться к неожиданным ситуациям, запрашивать помощь у других агентов и принимать решения на лету. Фреймворк поддерживает любые LLM — OpenAI, Anthropic, локальные модели через Ollama, Azure AI и другие — через универсальный слой ChatCompletionClient.
Пятислойная архитектура AutoGen: провайдеры LLM → агенты → инфраструктура → песочница → расширения
| Компонент | Тип | Назначение | API (ключевые методы) |
|---|---|---|---|
| AssistantAgent | LLM-агент | Основной AI-агент. Пишет код, анализирует, генерирует ответы через LLM. Может вызывать инструменты и делегировать задачи. | on_messages(), run(), run_stream() |
| UserProxyAgent | Прокси-агент | Представляет пользователя. Выполняет код в песочнице, запускает shell-команды, передаёт ввод/вывод между человеком и AI-агентами. | initiate_chat(), send() |
| GroupChat | Оркестратор | Групповой чат, где несколько агентов общаются в общем пространстве. Менеджер выбирает следующего выступающего по кругу (round-robin) или случайно. | GroupChat(agents=[...]), GroupChatManager |
| SelectorGroupChat | Оркестратор | Умный групповой чат с LLM-селектором. На каждом шаге LLM выбирает, какой агент должен ответить следующим — это гибче, чем round-robin. | SelectorGroupChat(agents=[...], model_client=...) |
| ToolAgent | Инструментальный | Агент, специализирующийся на вызове внешних инструментов: поиск в интернете, вызов API, работа с файлами. Обёртка над function calling. | ToolAgent(tools=[...]) |
| CodeExecutorAgent | Исполнитель | Безопасное выполнение кода в Docker-контейнере или локально. Изолирует исполнение от основной системы. | DockerCommandLineCodeExecutor, LocalCommandLineCodeExecutor |
| Memory (ListMemory) | Память | Хранение контекста между сессиями. Поддерживает Redis, MongoDB, ChromaDB как бэкенды для долговременной памяти агентов. | ListMemory, RedisMemory, MongoDBMemory |
AutoGen требует Python ≥ 3.10. Установка занимает одну команду:
# Базовая установка (ядро + агенты) pip install pyautogen # С Docker-песочницей для безопасного выполнения кода pip install "pyautogen[docker]" # Полная установка: веб-серфинг, графы, Redis, Jupyter pip install "pyautogen[all]"
Минимальный рабочий пример — создание двух агентов, которые обсуждают задачу:
import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.teams import RoundRobinGroupChat from autogen_ext.models.openai import OpenAIChatCompletionClient async def main(): # Клиент для LLM (GPT-4o) client = OpenAIChatCompletionClient( model="gpt-4o", api_key="sk-..." ) # AI-ассистент writer = AssistantAgent( name="writer", model_client=client, system_message="Ты — AI-писатель. Пиши текст на русском." ) # Критик critic = AssistantAgent( name="critic", model_client=client, system_message="Ты — редактор. Проверяй текст и давай правки." ) # Групповой чат: агенты общаются по кругу team = RoundRobinGroupChat( participants=[writer, critic], max_turns=4 ) stream = team.run_stream( task="Напиши короткую статью о квантовых вычислениях" ) async for msg in stream: print(f"[{msg.source}]: {msg.content}") asyncio.run(main())
Для работы нужен API-ключ OpenAI (или другого провайдера). Локальные модели подключаются через OllamaChatCompletionClient.
Коронная фича AutoGen — групповые чаты агентов. В отличие от линейных пайплайнов (A → B → C), агенты в групповом чате общаются в общем пространстве. Менеджер (RoundRobinGroupChat или SelectorGroupChat) координирует общение. SelectorGroupChat использует LLM для динамического выбора следующего выступающего — это позволяет обрабатывать сложные сценарии, где агент сам решает, кому передать слово.
AutoGen умеет автоматически генерировать и выполнять код. AssistantAgent пишет Python-скрипт, CodeExecutorAgent запускает его в изолированном Docker-контейнере, а результат возвращается в чат. Это особенно полезно для анализа данных, где AI может написать pandas-скрипт, выполнить его и показать результат — всё в рамках одного диалога.
Агенты могут вызывать внешние инструменты — от веб-поиска до API-запросов. AutoGen использует нативный function calling LLM-провайдеров, преобразуя Python-функции в JSON Schema автоматически:
from autogen_core.tools import FunctionTool async def web_search(query: str) -> str: """Поиск в интернете по заданному запросу.""" # реальная реализация поиска return f"Результаты поиска по: {query}" search_tool = FunctionTool(web_search, name="web_search") agent = AssistantAgent( name="searcher", model_client=client, tools=[search_tool] # агент сам решит, когда вызвать инструмент )
Начиная с версии 0.7, AutoGen поддерживает долговременную память через ListMemory, RedisMemory и MongoDBMemory. Агенты запоминают контекст между сессиями, что позволяет строить системы с накапливаемым опытом — ассистентов, которые помнят предыдущие разговоры и учатся на них.
Для тех, кто не хочет писать код, Microsoft предлагает AutoGen Studio — веб-интерфейс для визуального создания агентов, настройки групповых чатов и тестирования multi-agent сценариев. Запускается локально одной командой: autogenstudio ui.
Microsoft Research представила Magentic-One — систему из 5 специализированных агентов (Orchestrator, WebSurfer, FileSurfer, Coder, ComputerTerminal), построенную на AutoGen. Это эталонная реализация, показывающая лучшие практики использования фреймворка для сложных задач — от веб-автоматизации до генерации и выполнения кода.
| Критерий | AutoGen | CrewAI | LangGraph | OpenAI Agents SDK | Agno |
|---|---|---|---|---|---|
| Парадигма | Conversational (чат) | Ролевая (Crew) | Графовая (DAG) | Оркестрация | Гибридная |
| Групповые чаты | ✅ Встроенные | ⚠️ Через иерархию | ❌ Нет | ❌ Нет | ⚠️ Ограниченно |
| Выполнение кода | ✅ Docker-песочница | ❌ Нет | ⚠️ Через инструменты | ⚠️ Code Interpreter | ❌ Нет |
| LLM-провайдеры | Любые (OpenAI, Anthropic, Ollama, Gemini, Bedrock, Azure) | Любые через LiteLLM | Любые через LangChain | Только OpenAI | Любые |
| Память агентов | ✅ ListMemory, Redis, MongoDB | ✅ Кратковременная | ✅ Checkpointer | ⚠️ Conversation history | ✅ Agent Memory |
| Low-code UI | ✅ AutoGen Studio | ⚠️ CrewAI Studio (beta) | ❌ Нет | ❌ Нет | ⚠️ Playground |
| Лицензия / Цена | CC-BY-4.0 / MIT / Бесплатно | Apache 2.0 / Бесплатно | MIT / Бесплатно | Apache 2.0 / Бесплатно | MIT / Бесплатно |
| GitHub Stars | ⭐ 60k | ⭐ 28k | ⭐ 12k | ⭐ 25k | ⭐ 18k |
| Сложность входа | Средняя | Низкая | Высокая | Низкая | Средняя |
AutoGen выигрывает по возможностям групповых чатов и безопасного выполнения кода, но имеет средний порог входа. CrewAI проще для начала, LangGraph мощнее для сложных графовых сценариев, OpenAI SDK проще, но привязан к OpenAI.
AutoGen — один из самых быстрорастущих AI-фреймворков. С момента создания в августе 2023 года проект прошёл путь от исследовательского прототипа до production-ready платформы с многослойной архитектурой. В 2025 году команда провела крупный рефакторинг (версии 0.7.x), разделив монолит на модульные пакеты: autogen-core, autogen-agentchat, autogen-ext. Это улучшило расширяемость и позволило подключать фреймворк в любые проекты без лишних зависимостей.
Команда AutoGen (под руководством Microsoft Research) активно развивает фреймворк. Основные направления на 2025–2026:
RedisMemory и MongoDBMemory в сторону векторной памяти с семантическим поиском (RAG-like retrieval для истории диалогов).Microsoft AutoGen — лучший выбор для создания multi-agent систем в 2026 году, если ваша задача требует гибкого взаимодействия нескольких AI-агентов. Уникальная conversational-парадигма с групповыми чатами, встроенная песочница для безопасного выполнения кода и широкая поддержка LLM-провайдеров делают AutoGen лидером в своём классе.
AutoGen рекомендуется для: проектов, где несколько AI-агентов должны совместно решать сложные задачи — генерация кода + его проверка, исследовательские ассистенты, автоматизация бизнес-процессов с участием нескольких ролей. Особенно рекомендуем для команд, которым нужна гибкая conversational-оркестрация вместо жёстких графов. Если вы только начинаете знакомство с multi-agent системами — начните с AutoGen Studio, чтобы оценить возможности без написания кода.
Практический сценарий — три агента совместно анализируют CSV-файл с продажами: DataLoader загружает данные, Analyst строит визуализации, Reviewer проверяет корректность выводов:
from autogen_agentchat.agents import AssistantAgent, CodeExecutorAgent from autogen_agentchat.teams import SelectorGroupChat from autogen_ext.code_executors.docker import DockerCommandLineCodeExecutor async def analyze_sales(csv_path: str): executor = DockerCommandLineCodeExecutor( image="python:3.12-slim", timeout=120 ) # Три специализированных агента loader = AssistantAgent( name="DataLoader", model_client=client, system_message="Ты загружаешь CSV-файлы через pandas. Показываешь shape, dtypes и первые 5 строк." ) analyst = AssistantAgent( name="Analyst", model_client=client, system_message="Ты анализируешь данные: считаешь метрики, строишь графики matplotlib. Код выполняй через code_executor." ) reviewer = AssistantAgent( name="Reviewer", model_client=client, system_message="Ты проверяешь выводы Analyst: нет ли ошибок, корректны ли расчёты. Если есть проблемы — укажи их." ) code_exec = CodeExecutorAgent( name="code_executor", code_executor=executor ) # SelectorGroupChat — LLM выбирает следующего выступающего team = SelectorGroupChat( participants=[loader, analyst, reviewer, code_exec], model_client=client, max_turns=10 ) stream = team.run_stream( task=f"Проанализируй файл {csv_path}: загрузи данные, построй график продаж по месяцам, проверь корректность анализа." ) console = Console() async for message in stream: if hasattr(message, 'content'): console.print(f"\[[bold cyan]{message.source}\[/bold cyan]] {message.content[:300]}")
Этот паттерн — «генерация → исполнение → критика» — один из самых мощных в AutoGen. Агенты сами решают, кому передать слово, и могут делать несколько итераций для улучшения результата.
AutoGen легко интегрируется с внешними API и сервисами через механизм инструментов. Рассмотрим пример подключения поискового API и базы данных:
from autogen_agentchat.agents import AssistantAgent from autogen_core.tools import FunctionTool import httpx async def search_tavily(query: str) -> dict: """Поиск в интернете через Tavily API.""" async with httpx.AsyncClient() as client: resp = await client.post( "https://api.tavily.com/search", json={"api_key": "tvly-...", "query": query} ) return resp.json() async def query_db(sql: str) -> list: """Выполнить SQL-запрос к PostgreSQL.""" conn = await asyncpg.connect("postgresql://...") rows = await conn.fetch(sql) await conn.close() return [dict(r) for r in rows] # Агент-исследователь с доступом к поиску и БД researcher = AssistantAgent( name="researcher", model_client=client, tools=[ FunctionTool(search_tavily, name="web_search"), FunctionTool(query_db, name="database_query") ], system_message="Ты — исследователь. Используй web_search для поиска информации и database_query для запросов к БД." ) # Агент сам решит, когда и какой инструмент вызвать response = await researcher.run( task="Найди последние новости о квантовых вычислениях и проверь, есть ли они в нашей базе знаний" )
Такой подход позволяет строить агентов, которые самостоятельно комбинируют данные из разных источников — поисковых систем, баз данных, CRM, внутренних API — без необходимости программировать жёсткую логику оркестрации.
Ключевая особенность AutoGen 0.7+ — полностью асинхронное ядро (autogen-core), построенное на Python asyncio. Все агенты и команды (чат-группы) работают асинхронно, что позволяет:
run_stream().TextMessage, ToolCallMessage, HandoffMessage) через pub/sub-подобный механизм.from autogen_agentchat.messages import TextMessage, HandoffMessage from autogen_core import RoutedAgent, message_handler class CustomAgent(RoutedAgent): """Пользовательский агент с обработчиками сообщений.""" @message_handler async def handle_text(self, message: TextMessage, ctx) -> None: """Обработка текстовых сообщений.""" print(f"[{self.id}] Получено: {message.content}") @message_handler async def handle_handoff(self, message: HandoffMessage, ctx) -> None: """Передача контекста между агентами.""" print(f"Передача от {message.source} к {message.target}")
Начните с AutoGen сегодня — установите фреймворк за минуту и запустите первого агента. Ознакомьтесь с официальной документацией, изучите Magentic-One как эталонную реализацию или попробуйте AutoGen Studio для визуального создания агентов без кода.
Microsoft AutoGen — open-source (CC-BY-4.0 / MIT). Бесплатно. Python ≥ 3.10. Активная разработка с августа 2023.