Паттерны — это язык поверх фреймворков
Заметил повторение? Supervisor в LangGraph, GroupChatManager в AutoGen, hierarchical process в CrewAI — это одна и та же идея, выраженная по-разному. Паттерн координации — это абстракция над инструментом: описание как устроена коммуникация и принятие решений в команде, независимо от того, чем ты её собираешь.
Знать паттерны важнее, чем знать API конкретного фреймворка. API меняются и устаревают, а паттерны — устойчивый словарь: «здесь нам нужен Supervisor», «а тут лучше Pipeline». Этот раздел даёт такой словарь. Начинаем с Supervisor — он закрывает огромную долю реальных задач.
Мы разберём четыре способа координации: Supervisor (центр раздаёт), Pipeline (конвейер), Swarm (агенты передают управление друг другу) и Debate (спорят ради истины). Плюс отдельно — как они обмениваются данными (shared state vs message passing). Supervisor — первый и самый ходовой.
Как устроен Supervisor
В основе — топология звезды: в центре координатор (supervisor), по краям специалисты (workers). Вся коммуникация идёт через центр. Supervisor получает задачу, разбивает на подзадачи, выбирает исполнителя для каждой, отдаёт ему работу, получает результат — и решает следующий шаг: делегировать ещё или закончить.
Ключевое свойство: воркеры не общаются между собой — только с супервайзером. Это и сила (централизованный контроль, ясная ответственность), и ограничение (центр — узкое место). Supervisor мыслит как руководитель: он держит общую картину, а специалисты делают узкую работу, не зная о существовании друг друга.
Сильные и слабые стороны
- централизованный контроль и ясная логика
- легко добавлять воркеров (масштабируемость)
- понятная ответственность: за всё отвечает центр
- просто отлаживать — один «дирижёр»
- центр — узкое место и точка отказа
- лишний «хоп» через супервайзера на каждом шаге
- при многих воркерах координатор перегружается
- качество держится на «уме» супервайзера
Когда воркеров становится слишком много для одного супервайзера, его делят: вводят супервайзеров над супервайзерами (команды команд). Это та же иерархия, что мы видели в уроках про subgraphs и Supervisor модуля 03. Начинай с одного уровня; иерархию добавляй, только когда координатор реально захлёбывается.
Один паттерн — три реализации
Главная мысль раздела: паттерн один, инструменты разные. Покажем Supervisor в трёх знакомых фреймворках — обрати внимание, что идея везде идентична.
# --- LangGraph (модуль 03): узел-маршрутизатор + условные рёбра ---
builder.add_node("supervisor", supervisor)
for w in WORKERS:
builder.add_edge(w, "supervisor") # воркер → назад в центр
builder.add_conditional_edges("supervisor", route,
{**{w: w for w in WORKERS}, "FINISH": END})
# --- AutoGen: GroupChatManager выбирает спикера ---
manager = GroupChatManager(groupchat=groupchat, llm_config=llm_config)
user_proxy.initiate_chat(manager, message="...")
# --- CrewAI: hierarchical process с менеджером ---
Crew(agents=[...], tasks=[...], process=Process.hierarchical,
manager_llm=ChatOpenAI(model="gpt-4o"))
# ВО ВСЕХ ТРЁХ: центральный координатор раздаёт работу воркерам,
# собирает результат и решает следующий шаг
Видишь? Разный синтаксис — один паттерн. Поняв Supervisor как идею (центр делегирует, воркеры отчитываются, центр решает), ты реализуешь его на любом инструменте, даже на голом коде с if-ами. Это и есть ценность мышления паттернами.
Когда брать Supervisor
Supervisor — отличный выбор по умолчанию для команд, где нужна централизованная координация:
- Динамическая маршрутизация: кто работает следующим, зависит от промежуточного результата — центр решает в рантайме.
- Разные специалисты: есть набор узких ролей, и под каждую подзадачу нужно подобрать подходящего.
- Нужен контроль и аудит: все решения проходят через один узел — легко логировать и проверять.
- Возможны повторы/доработки: супервайзер может отправить задачу тому же воркеру ещё раз.
А вот если работа — строго линейная (A→B→C без ветвлений), центр избыточен: проще Pipeline (следующий урок). И если воркеры должны сами передавать управление по контексту — это Swarm. Supervisor — про централизованное решение «кто следующий».
Как и в каждой реализации (FINISH в LangGraph/AutoGen, лимиты в CrewAI), центральному координатору нужно уметь сказать «готово». Иначе цикл «делегировал → получил → делегировал» не остановится. Условие завершения + предохранитель по числу шагов — обязательны в любом Supervisor.
Типичные ошибки
В чистом Supervisor вся коммуникация идёт через координатор. Прямые связи воркер↔воркер ломают паттерн (это уже Swarm/Network) и путают ответственность.
Всё качество держится на координаторе: плохо планирует и делегирует — разваливается команда. Супервайзеру нужна сильная модель и чёткие инструкции о ролях воркеров.
Если порядок известен и без ветвлений, центр — лишний хоп и стоимость. Для прямой цепочки бери Pipeline.
Один супервайзер на 20 ролей перегружается и путается. На таком размере вводи иерархию (супервайзеры над супервайзерами), а не наращивай плоский список.
Шпаргалка
ПАТТЕРН: центральный координатор делегирует задачи специалистам
топология «звезда» — всё через центр, воркеры НЕ общаются напрямую
ЦИКЛ: задача → supervisor разбивает → делегирует воркеру →
получает результат → решает (ещё делегировать / FINISH)
ОДИН ПАТТЕРН — РАЗНЫЕ ИНСТРУМЕНТЫ:
LangGraph — узел-маршрутизатор + conditional edges (next/FINISH)
AutoGen — GroupChatManager выбирает спикера
CrewAI — Process.hierarchical + manager_llm
✅ ПЛЮСЫ: контроль · ясная ответственность · легко добавлять воркеров · отладка
❌ МИНУСЫ: центр = узкое место/точка отказа · лишний хоп · перегруз при росте
КОГДА: динамическая маршрутизация · разные специалисты · нужен контроль/аудит
НЕ НАДО: строго линейно → Pipeline · воркеры сами передают → Swarm
ПРАВИЛА:
• условие завершения (FINISH) + предохранитель — обязательны
• супервайзеру — сильную модель
• много воркеров → ИЕРАРХИЯ, не плоский список
Практическое задание
Узнай и собери паттерн на любом инструменте:
Задание: Supervisor своими руками
- Возьми задачу с разными подзадачами (например, «по теме X: найди факты, посчитай метрику, напиши вывод»). Определи воркеров и их роли.
- Реализуй Supervisor на знакомом инструменте: LangGraph (модуль 03), AutoGen GroupChat или CrewAI hierarchical — на выбор. Убедись, что воркеры ходят только через центр.
- Проверь завершение: супервайзер должен корректно остановиться (FINISH/лимит). Намеренно убери условие выхода и увидь зацикливание.
- Поставь супервайзеру слабую модель и оцени, как деградирует координация — это подтверждает «всё держится на центре».
- Сравни свою реализацию с тем, как тот же паттерн выглядит на другом инструменте — найди общую структуру под разным синтаксисом.
- Со звёздочкой: доведи команду до размера, где один супервайзер «захлёбывается», и преврати её в двухуровневую иерархию (супервайзер над под-супервайзерами).
Что дальше
Supervisor — про централизованное «кто следующий». Но для прямой, заранее известной последовательности центр не нужен — задачи просто идут по конвейеру. Это второй паттерн координации — Pipeline.