Экспресс-курс · No. 29

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

Только суть · Один образ на идею · Надёжность важнее магии

§ 01

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

Один агент, что делает всё, не делает хорошо ничего

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

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

Контекст и инструменты перегружают одного агента

Один стол, заваленный каждым документом и каждым инструментом для десяти разных работ, — работник тратит больше усилия, разбирая бардак, чем делая работу.

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

Специализация — это суть, а цена — координация

Эстафетная команда быстрее одного бегуна, делающего четыре этапа, — но лишь потому, что передачи отрепетированы; упущенная палочка проигрывает гонку.

Выигрыш от мультиагентности — это специализация: узкие агенты, каждый делает одно хорошо. Цена — координация: теперь что-то должно разбить работу, маршрутизировать её, передавать контекст между агентами и собирать результаты, — а эта координация сама по себе источник сложности и сбоя. Вся дисциплина — поймать выигрыш специализации, не дав цене координации его съесть. Когда выигрыш не бьёт цену, один агент был верным ответом.

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

§ 02

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

Координатор, что маршрутизирует работу

Генподрядчик на стройке: он не кладёт кирпичи и не разводит щит — он разбивает проект на работы и шлёт каждую нужному специалисту.

Оркестратор (orchestrator, или координатор) — это главный агент: он берёт общую цель, разбивает её на подзадачи и маршрутизирует каждую подзадачу нужному специализированному агенту. Сам он не делает специализированную работу; его работа — декомпозиция и направление. Это зеркалит идею plan-and-execute из курса об агентах, масштабированную, — один способный агент планирует и делегирует, пока сфокусированные воркеры выполняют куски.

Он собирает результаты воркеров

Редактор заказывает разделы разным писателям, потом объединяет их в одну связную статью, — куски приходят назад, и кто-то делает их целым.

Вторая работа оркестратора — сборка (assembly): собрать то, что вернули агенты-воркеры, и объединить в связный финальный результат. Исследовательский оркестратор мог бы разослать подтемы нескольким агентам, а потом синтезировать их находки в один ответ. Этот шаг собрать-и-объединить — где раздельные потоки работы становятся единым выводом, — и делать его хорошо (разрешать конфликты, выбрасывать дубликаты) так же важно, как и разбиение.

Слой координации — это настоящая архитектура

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

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

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

§ 03

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

У каждого воркера одна ясная работа

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

Агент-воркер (worker agent) — это специализированный агент с узкой, чётко определённой работой: искать в документах, писать код, проверять факты, форматировать вывод. Поскольку его мандат мал, его промпт сфокусирован, его инструменты немногочисленны, а поведение предсказуемо. Оркестратор вручает ему ясную подзадачу, он делает ту одну вещь и возвращает результат. Узкие воркеры — строительные блоки, каждый достаточно прост, чтобы сделать верно и которому доверять.

Узкие агенты легче тестировать и которым доверять

Ты можешь тщательно проинспектировать работу одного специалиста, потому что его работа мала и определена, — куда легче, чем аудировать универсала, что делает понемногу всего.

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

Глубина в одной работе бьёт широту над многими

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

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

Агенты-воркеры — узкие специалисты: одна ясная работа, сфокусированный промпт, мало инструментов, — что делает каждого тестируемым и которому доверять. Глубина в одной работе бьёт широту над многими.

§ 04

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

Передача переносит работу между агентами

Эстафетный бегун, передающий палочку: обмен — это свой навык, и чистая передача — а не просто быстрые бегуны — вот что выигрывает гонку.

Передача (handoff) — это момент, когда один агент переносит работу другому, — оркестратор воркеру или один агент прямо следующему. То, что передаётся, — это подзадача и контекст, нужный, чтобы её сделать. Передачи — где случается много мультиагентных сбоев: если принимающий агент не получает того, что ему нужно, или получает мутную версию, его вывод неверен, как бы хорош агент ни был. Обмен — первоклассная часть дизайна.

Передавай чистый, структурированный контекст — не всё

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

Соблазн — передать каждому агенту всю историю на данный момент, но это воссоздаёт проблему переполненного контекста внутри каждого агента. Лучше — чистая передача (clean handoff): дай принимающему агенту сфокусированную, структурированную сводку лишь того, что ему нужно, — релевантные факты и конкретную задачу, — а не сырой брандспойт. Это держит контекст каждого агента тугим и сфокусированным, что ровно и делало разбиение стоящим изначально.

Изоляция контекста держит агентов сфокусированными

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

Реальная выгода мультиагентности — изоляция контекста (context isolation): каждый агент работает в своём чистом контексте, видя лишь то, что требует его работа, а не накопленный бардак всей системы. Это часть того, почему разбиение может улучшить надёжность, — оно предотвращает гниение контекста, что копится в одном долгоиграющем агенте. Но ты получаешь эту выгоду, лишь если твои передачи дисциплинированы; передай всё всем — и ты пересобрал проблему одного-перегруженного-агента с лишними шагами.

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

§ 05

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

Последовательный: конвейер этапов

Сборочная линия: каждая станция делает свою часть и передаёт продукт следующей, в фиксированном порядке, пока он не выйдет готовым в конце.

Последовательный (sequential) паттерн цепляет агентов в фиксированном порядке: вывод агента A кормит агента B, чей вывод кормит агента C. Агент-черновик, потом агент-редактор, потом агент-фактчекер. Это простейшая мультиагентная форма и самая предсказуемая, идеальная, когда у работы есть естественные этапы, что должны случиться по порядку. По сути это конвейер специалистов — и когда шаги фиксированы, он надёжнее цикла, что перерешает порядок каждый раз.

Параллельный: разойтись веером и собрать

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

Параллельный (parallel) паттерн гоняет несколько агентов в одно время на независимых кусках, потом собирает их результаты — fan-out (веер), затем сбор. Исследовать пять подтем, обработать много элементов, получить несколько независимых перспектив — всё быстрее сделать параллельно, чем одно за другим. Оркестратор разбивает работу, воркеры бегут одновременно, а результаты объединяются. Параллельный блистает, когда куски не зависят друг от друга и важна скорость.

Иерархический: оркестраторы оркестраторов

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

Иерархический (hierarchical) паттерн вкладывает координацию: верхний оркестратор делегирует суб-оркестраторам, каждый управляет своими воркерами. Это обрабатывает по-настоящему большие, сложные задачи, разбивая их слоями, как делает организация. Это самая мощная форма и самая сложная — больше координации, больше мест для сбоя, — так что тянись к ней, лишь когда задача правда достаточно велика, чтобы нуждаться во вложенной декомпозиции. Большинству систем хватает последовательного или параллельного; иерархия — для тех немногих, кому нет.

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

§ 06

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

Больше шагов накапливают больше ошибок

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

Один агент уже успешен лишь в доле случаев на длинной цепочке (проблема надёжности из курса об агентах), а мультиагентность делает цепочку длиннее: больше агентов, больше передач, больше шагов, каждый может сбоить и передать ошибку ниже по течению. Надёжность перемножается вдоль цепочки, так что добавление агентов может понизить общую успешность, если каждый кусок и каждая передача не прочны. Больше агентов — это больше поверхности для накапливающегося сбоя, а не автоматически больше способности.

У координации свои накладные и стоимость

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

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

Это труднее трассировать и отлаживать

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

Когда что-то идёт не так в мультиагентной системе, найти где куда труднее, чем в одном агенте: сбой мог быть в любом воркере, любой передаче или в самой оркестрации. Наблюдаемость — трассировка запроса через агентов, логирование каждой передачи — становится существенной и более трудной. Эта стоимость отладки — реальная часть цены. Система, что нельзя трассировать, — это система, что нельзя надёжно починить, а мультиагентность делает трассировку по-настоящему труднее.

Больше агентов умножают режимы сбоя: больше шагов, накапливающих ошибку, реальные накладные и стоимость координации и куда труднее трассировка. Рефлекторная мультиагентность понижает надёжность, а не поднимает.

§ 07

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

Разбивай, лишь когда один агент правда не справляется

Ты не созываешь комитет, чтобы ответить на простой вопрос, — ты привлекаешь команду, лишь когда работа правда слишком велика для одного способного человека.

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

Держи каждого агента узким и каждую передачу чистой

У хорошо управляемой бригады ясно определённые роли и отрепетированные передачи — структура, а не геройство, вот что делает её надёжной.

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

Прежде чем идти в мультиагентность
  • Может ли один агент на деле это сделать — или он правда ломается под нагрузкой? - Есть ли ясный оркестратор, что декомпозирует, маршрутизирует и собирает? - Узок ли каждый воркер — одна работа, мало инструментов, тестируем сам по себе? - Чисты ли передачи — сфокусированная сводка, а не вся история вываленная? - Какой паттерн подходит — последовательный, параллельный или иерархический — и это ли простейший, что работает? - Бьёт ли выигрыш стоимость — больше шагов, задержки, трат и труднее трассировка?
Слова, которыми ты теперь владеешь
  • multi-agent / оркестратор — разбить работу на агентов, координируемых директором. - агент-воркер / специализация — узкий агент с одной ясной работой; глубина над широтой. - handoff / изоляция контекста — передавать работу чисто; каждый агент в своём сфокусированном контексте. - sequential / parallel / hierarchical — конвейер, веер-и-сбор, вложенная координация. - fan-out — разбить работу, чтобы гонять несколько агентов разом. - накладные координации — добавленная стоимость, задержка и сложность оркестрации. - накапливающаяся ошибка — больше шагов и передач умножают шанс сбоя.
Признаки, что ты оркеструешь хорошо
  • Ты тянешься к мультиагентности лишь когда один агент правда не справляется. - Ясный оркестратор декомпозирует, маршрутизирует и собирает работу. - Каждый воркер узок — тестируем и которому доверять сам по себе. - Передачи чисты, передают сфокусированный контекст и держат окно каждого агента тугим. - Ты используешь простейший паттерн, что подходит, и можешь трассировать сбой через агентов.

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

Конец экспресс-курса · 7 глав · надёжность важнее магии

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