Содержание
Когда вы уже усвоили концепцию «координации нескольких ИИ» из статьи Что такое мультиагентная система?, следующий вопрос — как её реально построить. В этой статье мы пройдём практический процесс из 5 шагов для начинающих, используя де-факто стандарт 2026 года: паттерн supervisor.
Прежде чем говорить о фреймворках, вот самый важный принцип: «сначала стройте на одном агенте и добавляйте новых — по минимуму — только когда упрётесь в предел». Идти в мультиархитектуру с самого старта — это, как правило, избыточное проектирование. Код показан в виде псевдокода, не зависящего от фреймворка, поэтому он применим и с MCP, и с любым SDK.
Стройте мало, измеряйте, потом добавляйте
— Паттерн supervisor, начиная с минимальной конфигурации
* Шаги и цифры в этой статье приведены по открытым материалам, практическим руководствам и исследовательским отчётам (по состоянию на июнь 2026 года). Код — концептуальный псевдокод; реальный API проверяйте в официальной документации каждого фреймворка.
1. Перед началом: действительно ли вам нужна мультиархитектура?
Первый барьер — не технический, а вопрос оценки. Мультиагентность мощна, но около 80% сценариев прекрасно обходятся одним агентом. Если ничего из перечисленного ниже не подходит, сначала стройте на одном агенте.
3 признака того, что пора переходить на мульти
- Разделение специализаций: знания не помещаются в один промпт (области охватывают исследования, юриспруденцию, код и т. д.)
- Параллелизм: выполнять несколько задач одновременно явно быстрее
- Разделение решений: качество растёт, когда вы разделяете «исполнителя» и «проверяющего»
И наоборот, использование мульти для простого линейного процесса — как мы разбирали в прошлый раз — раздувает стоимость в 3-10x и фактически снижает точность на последовательных задачах (исследование Google сообщает о -39-70% по сравнению с одним агентом). Исходите из того, что «больше агентов не значит умнее».
2. Базовая форма: supervisor (стандарт 2026 года)
Если вы не уверены, какой паттерн строить, берите паттерн supervisor, и точка. Subagents в Claude Code, LangGraph Supervisor, handoffs в OpenAI Agents SDK — основные реализации все сошлись на этой форме. Причины очевидны.
Самая широкая поддержка фреймворков
Нативная поддержка в основных фреймворках. Множество референсных реализаций.
Известный режим отказа
Главный сбой — «избыточное делегирование», ограничиваемое лимитом итераций.
Легко аудировать
«Кто что сделал» — ясно, что упрощает отладку.
Механика проста. Supervisor получает общую задачу, разбивает её на подзадачи, делегирует их специализированным worker и агрегирует результаты. Supervisor не обязан знать, как worker выполняет свою работу — только какого worker вызвать и в каком формате вывода. Экспертиза живёт в worker.
3. Построение за 5 шагов
Соберите минимальную конфигурацию supervisor за пять шагов. Правило большого пальца: начинайте с 2-3 worker, а затем добавляйте новых только тогда, когда это оправдано измерениями.
ШАГ 1. Разложите задачу
Выпишите «конечную цель» и нужные «специализированные роли». Пример: для отчёта по исследованию рынка — «1) собрать данные → 2) проанализировать → 3) написать → 4) проверить факты». Разложите всё чётко с самого начала — расплывчатость здесь обрушит всю конструкцию.
ШАГ 2. Определите worker (до 3-5)
Дайте каждому worker одну роль, нужные ему инструменты и формат вывода. Не жадничайте поначалу — максимум 3-5. Каждый worker независим и держит только собственные инструменты (поиск, выполнение кода и т. д.).
ШАГ 3. Спроектируйте supervisor
В промпте supervisor явно перечислите имена worker, которых он может вызывать (жёсткий лимит). Хитрость: тратьте больше времени на supervisor, чем на любой отдельный worker. Именно это определяет общее качество.
ШАГ 4. Определите handoff и обмен контекстом
Определите, что и в каком формате передаётся между worker. Передача полного контекста всем раздувает токены, поэтому передавайте только нужную информацию. Стандартный протокол для координации между агентами — A2A.
ШАГ 5. Измеряйте и работайте с лимитами
Инструментируйте каждый handoff, прежде чем добавлять агентов (наблюдаемость не опциональна). Установите лимиты на итерации, токены и стоимость. Одновременно настройте evals и ограждения (guardrails).
4. Минимальный пример кода (псевдокод)
Суть паттерна supervisor на удивление коротка. Вот псевдокод, не зависящий от фреймворка, показывающий цикл, в котором supervisor выбирает worker и запускает его (реальный API проверяйте в официальной документации каждого SDK).
# Определяем worker: одна роль + выделенные инструменты
workers = {
"researcher": Agent(tools=[web_search]),
"writer": Agent(tools=[]),
"factcheck": Agent(tools=[web_search]),
}
# Supervisor: жёстко ограничиваем имена worker, которые он может вызывать
supervisor = Agent(
instructions="Decompose the goal and pick one worker to call next. "
"Return 'DONE' when finished.",
allowed_workers=["researcher", "writer", "factcheck"],
)
# Цикл выполнения (лимит итераций предотвращает избыточное делегирование)
state = {"goal": "Write an AI market report", "history": []}
for step in range(MAX_STEPS): # <- лимит обязателен
next_worker = supervisor.decide(state)
if next_worker == "DONE":
break
result = workers[next_worker].run(state)
state["history"].append({next_worker: result}) # делимся только нужным контекстом
log_handoff(next_worker, result) # <- инструментируем каждый handoff
Три вывода: 1) каждый worker — это одна роль + выделенные инструменты, 2) набор вызываемых supervisor ограничен, 3) у цикла всегда есть лимит итераций. Добавьте к этому каркасу измерения, ограждения и evals — и вы приблизитесь к продакшен-качеству. Claude Agent SDK и subagents в Claude Code следуют той же идее.
5. Типичные ловушки и способы их избежать
Места, где спотыкаются при разработке мультиагентных систем, вполне предсказуемы. Опередите их.
| Ловушка | Решение |
|---|---|
| Избыточное делегирование (supervisor крутится бесконечно) | Лимит итераций + ограничение вызываемых worker |
| Раздувание токенов (стоимость 3-10x) | Прекратите делиться полным контекстом; передавайте только нужное + кэширование |
| Нестабильное, недетерминированное поведение | Держите worker немного (3-5) + фиксируйте форматы вывода |
| Падение точности на последовательных задачах (-39-70%) | Вернитесь к одному агенту для линейной работы |
| Непонятно, где произошёл сбой | Инструментируйте каждый handoff до масштабирования (наблюдаемость) |
Общий урок: «промпты, проектирование инструментов и набор evals решают успех в большей степени, чем фреймворк». Важнее эффектной архитектуры — дисциплина строить мало, измерять и добавлять только тогда, когда это окупается; в итоге именно она оказывается самой быстрой.
Итоги
Построение мультиагентной системы не страшно, если начать с паттерна supervisor в минимальной конфигурации. Давайте подведём итог.
Ключевые выводы
- 🚦 Сначала один. Добавляйте агентов только после появления признаков специализации / параллелизма / разделения решений.
- 🧠 Базовая форма — supervisor (стандарт 2026 года). Больше всего времени тратьте на проектирование supervisor.
- 🔢 5 шагов: разложить → определить worker (3-5) → спроектировать supervisor → handoff → измерять.
- ⚠️ Ловушки: избыточное делегирование, раздувание токенов, нестабильность. Лечатся лимитами, передачей только нужного и измерениями.
- 📏 Дисциплина: промпты, инструменты и evals решают успех в большей степени, чем фреймворк.
«Стройте мало, измеряйте, потом добавляйте». Держите эту дисциплину — и мультиагентная система станет мощным партнёром для сложной работы. Про концепцию см. Что такое мультиагентная система?; про построение одиночного агента — Как построить ИИ-агента.
FAQ
В. Какой паттерн строить первым?
О. Паттерн supervisor, без вопросов. Его поддерживают основные фреймворки, его режим отказа известен, а референсных реализаций больше всего. Другие паттерны изучайте, когда освоитесь.
В. Со скольких worker начинать?
О. Начинайте с 2-3 и держите максимум 3-5. Чем больше вы добавляете, тем нестабильнее всё становится и тем сильнее раздуваются токены. Норма — добавлять новых только после того, как измерения докажут необходимость.
В. Нужен ли фреймворк?
О. Не обязателен. Как показывает псевдокод, минимальную конфигурацию можно построить из цикла и промптов. Но если в продакшене нужны сохранение состояния, наблюдаемость и восстановление, поддерживающий фреймворк — это короткий путь.
В. Как предотвратить взрывной рост стоимости?
О. Помогают три вещи: 1) ограничьте число итераций, 2) делитесь только нужным контекстом вместо полного, 3) используйте кэширование промптов. Переход на мульти может стоить в 3-10x дороже одного агента, поэтому лимиты обязательны с первого дня.