Технологии

Мультиагентные системы: когда несколько агентов лучше одного

Для личных задач мультиагентность чаще умножает стоимость и ошибки, чем помогает. Считаем накладные расходы и называем три сценария, где она действительно оправдана.

Схема «команда специализированных агентов» выглядит убедительно на диаграмме: планировщик, исследователь, критик, исполнитель. Каждый занят своим делом, как в настоящем отделе. Проблема в том, что настоящий отдел работает благодаря общему контексту, накопленному годами, и умению переспросить, а агенты обмениваются короткими текстами через узкое горлышко.

Этот текст занимает скептическую позицию: для личных и бытовых задач мультиагентность в подавляющем большинстве случаев умножает стоимость, задержку и число мест, где теряется смысл. Три исключения существуют, они названы ниже, и все три легко проверить.

#Короткий ответ

Мультиагентная система — это несколько независимых агентных циклов, обменивающихся сообщениями. Каждый из них — полноценный агент со своим контекстом, своими инструментами и своим лимитом шагов.

Из «своим контекстом» следует главное: то, что один агент знает, второй не знает. Передача происходит текстом, который первый агент написал, а второй прочитал. Каждая такая передача — потеря: детали, которые казались неважными отправителю, оказываются нужны получателю, а спросить он не может.

#Что реально стоит разделение

Что добавляется Чем платите
Второй агентный цикл Отдельная серия вызовов модели со своим ростом контекста
Передача задачи Пересказ вместо исходных данных, потеря деталей
Возврат результата Второй пересказ, вторая потеря
Координация Вызовы модели, не делающие полезной работы
Отладка Трассировка не одна, а по одной на агента
Сбои Отказ любого участника роняет цепочку целиком

Строка про отладку недооценивается сильнее остальных. В одноагентной системе есть один лог, и ошибка ищется по нему от начала; принцип разобран в материале про чтение трассировки агента. В мультиагентной логов несколько, и добавляется вопрос, на какой из передач исказился смысл. Практически это означает, что типичная отладка занимает не в два раза больше времени, а в несколько раз.

Строка про координацию — прямая денежная. Вызов модели, который решает, кому передать задачу, не производит результата. При трёх агентах и пяти передачах таких вызовов набирается больше, чем содержательных.

#Три сценария, где мультиагентность оправдана

Все три объединяет один признак: разделение даёт что-то, чего нельзя получить внутри одного цикла.

#1. Изоляция контекста как цель

Когда вторая часть задачи не должна видеть данные первой. Пример: агент, который читает приватную переписку и извлекает из неё формулировку вопроса, и второй агент, который ищет ответ в интернете. Второй не должен получить переписку — не потому что так дешевле, а потому что она не должна покидать машину.

Здесь разделение — это требование приватности, и накладные расходы платятся осознанно. Так устроена, например, граница вокруг ответов на сообщения третьим лицам в Persona: подсистема, отвечающая собеседнику в личной переписке, по построению не получает доступа ни к личным чат-сессиям владельца, ни к его долговременной памяти, ни к захвату экрана — в промпт попадают ровно четыре вещи, и это проверяется отдельным тестом с «канарейками» в каждом запрещённом источнике.

#2. Параллельность на независимых ветках

Когда есть N однотипных независимых подзадач и время важнее денег. Проверить двадцать ссылок, разобрать сорок писем, обработать десять файлов. Ветки не обмениваются контекстом, координация тривиальна, потери на передаче почти нет.

Признак применимости жёсткий: ветки должны быть по-настоящему независимы. Если результат пятой ветки влияет на седьмую, параллельность превращается в мультиагентность со всеми её издержками.

#3. Разные модели под разные задачи

Когда одна часть работы требует сильной модели, а другая — быстрой и дешёвой. Классификация входящего текста на маленькой локальной модели, содержательный ответ — на большой. Разделение здесь даёт экономию, которой внутри одного цикла не получить.

Заметьте: во всех трёх случаях выигрыш измерим — приватность, время, деньги. Если выигрыш формулируется как «получится качественнее, потому что каждый агент специализирован», это не выигрыш, а надежда.

#Что из этого следует на практике

Сначала попробуйте один агент с хорошими инструментами. В большинстве разобранных случаев «нужен второй агент» на поверку означает «нужен ещё один инструмент». Инструмент дешевле агента на порядок: у него нет своего контекста, своего цикла и своей стоимости координации.

Роль — это не агент. «Критик» можно реализовать вторым проходом того же цикла по тем же данным, без отдельного участника и без передачи контекста. Отдельный агент нужен, только если критику нельзя показывать то, что видел исполнитель, или если он работает на другой модели.

Передавайте данные, а не пересказ. Если второй агент должен работать с файлом, передавайте путь, а не изложение содержимого. Пересказ — это потеря, которую невозможно восстановить.

Считайте координацию отдельно. В бюджете полезные вызовы и вызовы-диспетчеры должны быть в разных строках. Если вторых больше — схема не окупается.

Ограничивайте глубину делегирования. Агент, который может создать агента, который может создать агента, — это способ потратить дневной бюджет за минуту. Один уровень делегирования покрывает практически все реальные потребности.

Общая механика одного цикла, которая множится на число участников, — в разборе паттерна ReAct, а вопрос разбиения задачи на шаги внутри одного агента — в материале про планирование и декомпозицию.

#Где интуиция подводит

«Специализация повышает качество». У людей — да, потому что специалист приносит с собой знания, которых нет у остальных. У агентов на одной и той же модели специализация — это разный системный промпт. Знаний она не добавляет, а контекст урезает.

«Критик поймает ошибки исполнителя». Иногда ловит. Но критик на той же модели склонен к тем же ошибкам, а видит он не работу, а её описание. Второй проход по тем же данным без передачи через пересказ работает лучше и стоит дешевле.

«Мультиагентность — это масштабирование». Это распараллеливание, и только на действительно независимых ветках. Если ветки зависимы, вы получили не масштабирование, а распределённую систему с общим состоянием — и все её классические проблемы вдобавок к агентным.

«Ошибку легко локализовать, каждый агент отвечает за своё». На практике ошибка чаще всего рождается не внутри агента, а на границе: отправитель написал одно, получатель понял другое, и оба формально сработали правильно.

#Когда мультиагентность точно не нужна

  • Личный ассистент для бытовых задач. Один цикл, набор инструментов, лимит шагов. Разбиение на роли добавит стоимость и не добавит пользы.
  • Задача решается за три-пять шагов. Накладные расходы на координацию сопоставимы с самой работой.
  • У вас пока нет трассировки. Мультиагентную систему без логов невозможно отлаживать в принципе.
  • Бюджет ограничен. Это самый дорогой из существующих способов организовать агентную работу.

Наша собственная архитектура сознательно построена как одно ядро на все поверхности, а не как набор общающихся агентов; что именно из этого сделано и что остаётся проектом — в разборе агентной архитектуры Persona. Базовое определение агента, от которого всё считается, — в статье о том, что такое ИИ-агент.

#Частые вопросы

#Сколько агентов имеет смысл запускать одновременно?

Для личных задач — один. Несколько оправданы, когда есть независимые однотипные ветки и время дороже денег, либо когда части задачи должны быть изолированы друг от друга по приватности, либо когда они требуют разных моделей. Во всех остальных случаях второй агент добавляет стоимость и точки отказа.

#Мультиагентная система умнее одного агента?

Нет оснований так считать: интеллект берётся из модели, а она одна и та же. Разделение перераспределяет контекст между участниками и добавляет потери на передачах. Выигрыш бывает в скорости, приватности и стоимости, но не в «уме».

#Как передать контекст между агентами без потерь?

Полностью — никак, поэтому передавать стоит ссылки на данные, а не пересказы: путь к файлу, идентификатор записи, диапазон дат. Всё, что превращается в текст-пересказ, теряет ровно те детали, которые отправитель счёл несущественными.

#Что дороже: один агент на десять шагов или два по пять?

Обычно два по пять, несмотря на одинаковое число содержательных шагов: добавляются вызовы координации, пересказ задачи и пересказ результата. Экономия появляется, только если у второго агента заметно короче контекст или дешевле модель.

#Зачем тогда мультиагентные фреймворки?

Они решают реальные задачи в сценариях, где ветки независимы и их много, либо где разные части конвейера обязаны работать на разных моделях и в разных доверенных зонах. Для одного человека с одним ассистентом эти сценарии встречаются редко.

#Вывод

Считайте не число агентов, а число передач контекста: каждая — это потеря смысла и лишний вызов модели. Если разделение не даёт измеримого выигрыша в приватности, времени или деньгах, оно не окупается.

Если у вас личный ассистент — берите один цикл и вкладывайтесь в инструменты и логи. Если у вас двадцать независимых однотипных задач и время дороже денег — распараллеливайте, это тот самый случай.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт