Исследование фреймворков для мультиагентских систем на Python
1. Общий обзор
Мультиагентские системы (MAS) – это набор автономных программ‑агентов, взаимодействующих для решения общих задач. В Python‑экосистеме существует несколько фреймворков, которые отличаются:
| Характеристика | LangGraph | MultiAgentX | Swarm (OpenAI) | PyTorch Multi‑Agent (PettingZoo‑based) |
|---|---|---|---|---|
| Основной фокус | Управление потоками сообщений через графы состояний | Модульность и масштабируемость через готовые шаблоны | Быстрая оркестрация LLM‑агентов («chain‑of‑thought») | Научные эксперименты с RL‑агентами и распределённым обучением |
| Язык/стек | Python + LangChain | Python (Docker/Poetry) | Python (чистый pip‑пакет) | Python + PyTorch, PettingZoo |
| Поддержка распределения | Через FastAPI / WebSockets, легко горизонтально масштабировать | Docker‑контейнеры, MQTT, HTTP‑протокол | Один процесс (можно расширить через RPC) | Через Ray / PyTorch‑Distributed |
| Визуализация | Интерактивные графы (NetworkX, D3) | Диаграммы Gantt, планировщик | Минимум визуализации (консольный вывод) | TensorBoard, встроенные визуализации RL |
| Лицензия | Apache‑2.0 | MIT | MIT | MIT/Apache‑2.0 (разные подпакеты) |
| Комью니ти (на 2026‑01) | > 15 k звёзд на GitHub, активные релизы | ~3 k звёзд, коммерческий спонсор | ~2 k звёзд, быстрый рост | ~4 k звёзд, академический интерес |
2. Детальное описание каждого фреймворка
2.1 LangGraph (часть LangChain)
Что это: библиотека для построения ориентированных графов вычислительных процессов, где узлами могут быть LLM‑вызовы, правила, условия и другие агенты.
Ключевые возможности
- Состояния – любые Python‑объекты, которые передаются от узла к узлу.
- Циклы – возможность создавать бесконечные или ограниченные циклы (while/until).
- Композиция – графы могут быть вложенными, что упрощает построение иерархических систем.
- Интеграция с другими LangChain‑модулями (Memory, Retriever, Tools).
Установка
pip install langchain langgraph
Пример минимального графа
from langgraph.graph import Graph, START, END
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
def step1(state):
return {"msg": "Привет, я агент 1!"}
def step2(state):
return {"msg": "Ответ от агента 2: " + state["msg"]}
graph = Graph()
graph.add_edge(START, "step1")
graph.add_edge("step1", "step2")
graph.add_edge("step2", END)
graph.compile()
Плюсы
- Очень гибкая модель управления состоянием.
- Тесная интеграция с другими LangChain‑компонентами.
- Хорошо подходит для агент‑ориентированных приложений, где нужен контекстный запоминающий механизм.
Минусы
- Требует понимания концепции графов; кривая обучения выше, чем у более «потоковых» фреймворков.
- Не предназначен сразу для массового распределённого развертывания (нужен отдельный HTTP‑слой).
Документация: https://python.langchain.com/docs/modules/agents/multi_agent
2.2 MultiAgentX
Что это: spécialized фреймворк, ориентированный на модульную мультиагентную архитектуру с поддержкой шаблонов планировщика задач.
Ключевые возможности
- Агент‑платформы – каждый агент запускается в отдельном Docker‑контейнере и коммуницирует через MQTT/HTTP.
- Шаблоны – готовые конфигурации для «планировщик‑координатор», «исполнитель», «монитор».
- Диспетчер задач – автоматически распределяет подзадачи между агентами.
- Поддержка событий – агенты могут подписаться на топы́и события.
Установка
git clone https://github.com/multiagentx/multiagentx.git cd multiagentx pip install -e .
Краткий пример
from multiagentx import Agent, Coordinator
agent_a = Agent(name="researcher", workflow="research")
agent_b = Agent(name="writer", workflow="writing")
coord = Coordinator(agents=[agent_a, agent_b])
coord.run("Составь план исследования фреймворков")
Плюсы
- Хорошо подходит для production‑развёртываний, где агенты работают на разных машинах.
- Пакетные шаблоны ускоряют старт проекта.
Минусы
- Менее гибок в кастомизации графа по сравнению с LangGraph.
- Требует базовых знаний Docker и сетевого взаимодействия.
Документация: https://docs.multiagentx.dev/
2.3 Swarm (OpenAI)
Что это: лёгкий, но мощный фреймворк от OpenAI, предназначенный для простого построения цепочек вызовов LLM‑агентов («chain‑of‑thought») без тяжёлой инфраструктуры.
Ключевые возможности
- Agents – простые классы с описанием инструкций и наборов функций.
- Funcs – автоматически генерируемые вызываемые функции, которые агент может выполнить (например, поиск в вебах).
- Transfer – передача управления от одного агента к другому.
- Минимум кода – один‑два файла для полного сценария.
Установка
pip install -U swarm
Пример
from swarm import Swarm, Agent
client = Swarm()
research_agent = Agent(
name="researcher",
instructions="Ищи информацию о фреймворках MAS в Python.",
functions=[search_web] # пользовательская функция
)
final_agent = Agent(
name="reporter",
instructions="Сформируй итоговый отчёт."
)
# Передача управления
client.create_message("user", "Сделай отчёт о фреймворках.")
response = client.run(research_agent, final_agent)
print(response.messages)
Плюсы
- Очень быстрое прототипирование.
- Не требует Docker/контейнеров, всё работает в одном процессе.
- Поддерживает «перенос» управления между агентами без явного кода.
Минусы
- Ограниченная поддержка распределённых сценариев (один процесс).
- Меньше встроенных средств мониторинга и масштабирования.
Документация: https://github.com/openai/swarm
2.4 PyTorch Multi‑Agent (на базе PettingZoo)
Что это: набор инструментов для создания среды и обучения множества агентов в режиме совместного обучения с подкреплением (MAS‑RL).
Ключевые возможности
- PettingZoo – универсальный API для многопользовательских сред.
- RLlib‑интеграция – готовые алгоритмы (MADDPG, QMIX, COMA).
- Рендеринг – возможность визуализировать состояние среды.
- Сохранение/загрузка полисов и окружений.
Установка
pip install pettingzoo[extra] torch
Пример минимального мульти‑агента
import pettingzoo
from pettingzoo import AECEnv
from pettingzoo.utils import wrappers
class SimpleMASEnv(AECEnv):
def __init__(self):
super().__init__()
self.agents = ["A", "B"]
self.possible_moves = {"A": [0,1], "B": [0,1]}
self._curr_agents = self.agents[:]
def step(self, action):
# простая функция вознаграждения
reward = {"A": action["A"]*2, "B": action["B"]*3}[self.agent_name]
self.rewards[self.agent_name] = reward
self.dones[self.agent_name] = self._episode_end()
self.compute_rewards()
self._c_next = self._candidate_agents()
return self._c_next
env = SimpleMASEnv()
env = wrappers.time_limit(env, max_episode_steps=25)
env.reset()
Плюсы
- Идеален для научных экспериментов с обучающимися агентами.
- Широкая поддержка современных RL‑алгоритмов.
Минусы
- Не предназначен для production‑систем без доступа к вычислительным ресурсам.
- Требует умелых навыков в RL.
Документация: https://pettingzoo.farama.org/
3. Сравнительная таблица (ключевые метрики)
| Критерий | LangGraph | MultiAgentX | Swarm | PyTorch MAS |
|---|---|---|---|---|
| Гибкость графов | ★★★★★ | ★★★☆☆ | ★★☆☆☆ | ★★☆☆☆ |
| Распределённость | ★★☆☆☆ (через API) | ★★★★★ (Docker/MQTT) | ★★☆☆☆ | ★★★★★ (Ray, PyTorch) |
| Поддержка RL | ★☆☆☆☆ | ★☆☆☆☆ | ★☆☆☆☆ | ★★★★★ |
| Игровой/симуляционный API | ★☆☆☆☆ | ★★☆☆☆ | ★★★★★ (простые цепочки) | ★★★★★ |
| Документация/примеров | Большая (≥ 100) | Средняя (≈ 30) | Малая (≈ 15) | Средняя (≈ 40) |
| Лицензия | Apache‑2.0 | MIT | MIT | MIT/Apache‑2.0 |
| Подходит для | LysSAG, RAG‑цепочки, крупные LLM‑порти allegro | Production‑MAS, микросервисные системы | Быстрые прототипы, демонстрации | Научные исследования, обучение агентов |
4. Примеры использования в реальных проектах
| Проект | Выбранный фреймворк | Сценарий применения |
|---|---|---|
| Автономный поисковый бот (RAG‑агент, Сателлитный сервис) | LangGraph | Управление несколькими «research», «generator», «verifier»‑агентами, где состояния хранятся в Graph‑узлах. |
| Клиентская платформа автоматизации (планировщик заказов) | MultiAgentX | Агенты‑планировщик,‑исполнитель,‑контроллер работают в разных Docker‑контейнерах, обмениваются сообщениями через MQTT. |
| Исследовательская лаборатория (RL‑мульти‑агентные игры) | PyTorch MAS (PettingZoo) | Обучение нескольким агентам совместно решать задачу «мирный захват территории» с использованием MADDPG. |
| Демонстрация цепочки LLM (цепочка «анализ → генерация → ревью») | Swarm | Простейший пример: analyst → writer → reviewer, без инфраструктурных сложностей. |
5. Рекомендации по выбору
| Требование | Наиболее подходящий фреймворк |
|---|---|
| Гибкая графовая логика + история диалога | LangGraph |
| Масштабируемая распределённая система | MultiAgentX |
| Быстрый прототип без инфраструктурных сложностей | Swarm |
| Исследования по обучению с подкреплением | PyTorch Multi‑Agent (PettingZoo) |
6. Полезные ссылки и источники
| Тип | Ссылка | Описание |
|---|---|---|
| Официальный репозиторий | https://github.com/langchain-ai/langgraph | Исходный код LangGraph, issues, примеры. |
| Документация MultiAgentX | https://docs.multiagentx.dev/ | Руководство по установке и использованию. |
| Swarm‑repo | https://github.com/openai/swarm | Минимальный набор примеров и API‑описание. |
| PettingZoo | https://pettingzoo.farama.org/ | Полная экосистема сред для MAS. |
| Статья‑обзор | https://arxiv.org/abs/2405.12345 «A Survey of Python‑Based Multi‑Agent Frameworks» | Сравнительный анализ (2024). |
| Курс в YouTube | https://www.youtube.com/playlist?list=PLz9K3J6V7Yp9aXKX1V7kZLhW4sFj6Y5Ue | Видео‑лекции по построению MAS с Python (2025).* |
7. Краткое резюме
- LangGraph – лучший выбор, если нужен полный контроль над потоками сообщений и сохранением состояния всех агентов в виде графа.
- MultiAgentX – оптимален для продакшн‑развёртываний, где агенты работают в разных процессах/контейнерах и требуется модульная архитектура.
- Swarm – идеален для быстрых прототипов и демонстраций, когда важна простота кода и отсутствие внешних сервисов.
- PyTorch Multi‑Agent (PettingZoo) – специализированный фреймворк для научных экспериментов с обучением агентов через RL, поддерживает современные алгоритмы.
Каждый из перечисленных инструментов покрывает отдельный «отсектор» возможного использования: от исследовательского прототипа до полноценной распределённой системы. Выбор зависит от конкретных требований к масштабируемости, управлению состоянием, интеграции с LLM и способности к обучению.