18+
реклама
18+
Бургер менюБургер меню

Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 21)

18

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

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

Остальная часть книги организована по этим уровням: части II–XIII последовательно разворачивают каждый из них в деталях. Настоящая глава даёт сжатый обзор всех десяти сразу, показывает зависимости между ними и объясняет, как читать книгу через эту модель. Она намеренно не углубляется ни в один уровень — это делают соответствующие части. Её задача — дать карту, на которой видно, где что лежит и как одно связано с другим.

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

Модель уровней решает три задачи, которые плоский список не решает.

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

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

В-третьих, локализация отказов и ответственности. Когда рой ведёт себя неправильно, первый вопрос диагностики — на каком уровне зародился сбой. Потеря сообщения — это уровень коммуникации. Два агента, переписавшие один артефакт, — уровень координации. Агент, продолживший работу на основе устаревшего общего контекста, — уровень состояния. Рой, бесконечно перекидывающий задачу по кругу, — уровень координации (livelock) или надёжности, в зависимости от природы цикла. Без модели уровней такие сбои сваливаются в одну кучу «рой глючит»; с моделью — каждый адресуется к своему предмету.

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

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

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

Базовые формы — оркестратор и воркеры (один координирует многих), иерархия (дерево с делегированием вглубь), конвейер (последовательная цепочка стадий), blackboard (косвенная координация через общее пространство), рыночные модели (распределение через торги), peer-to-peer (равноправные узлы без центра) и гибриды (комбинации перечисленного). Этим формам посвящена часть II целиком, по главе на паттерн, плюс глава о выборе топологии под задачу.

Топология определяет фундаментальные свойства, которые потом невозможно «допилить» на нижних уровнях. Наличие или отсутствие центральной точки задаёт, есть ли в системе single point of failure (см. главу 75) и единая точка компрометации (см. главу 87). Глубина иерархии определяет длину пути контекста и накопление потерь при передаче. Форма соединений задаёт, какие коммуникационные паттерны вообще возможны: в звезде с оркестратором в центре воркеры не общаются напрямую, в peer-to-peer — общаются все со всеми, и это два разных мира с точки зрения протоколов и согласования.

Главный failure mode уровня — выбор топологии по моде, а не по задаче. Peer-to-peer-рой выглядит современно и децентрализованно, но платит за это тяжёлым согласованием, которого у простого оркестратора с воркерами нет. Глубокая иерархия кажется масштабируемой, но каждый уровень делегирования теряет контекст и добавляет латентность. Топология должна выводиться из структуры задачи, а не из эстетических предпочтений; глава 15 даёт матрицу соответствия.

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

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

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

Главный failure mode — зазоры и перекрытия ответственности. Если между ролями есть дыра — задача, за которую формально не отвечает никто, — она проваливается молча. Если есть перекрытие — два агента считают задачу своей, — возникает конфликт изменений или дублирование работы. Диагностике зазоров посвящена глава 20. Второй характерный сбой — ложная специализация: роли названы по-разному, но их промпты почти идентичны, и разнообразие, на которое рассчитывал ансамблевый эффект (см. главу 63), отсутствует; ошибки агентов оказываются коррелированными.

Коммуникация отвечает на вопрос: как агенты передают друг другу информацию. Топология задала, кто с кем соединён; коммуникация задаёт, что течёт по этим соединениям и с какими гарантиями.

Есть три фундаментальных канала: прямые сообщения (агент шлёт агенту), общая память (агент пишет в разделяемое пространство, другой читает) и артефакты (агент производит файл или объект, который потребляют дальше). У каждого канала свои свойства связанности, латентности и наблюдаемости. Поверх каналов лежат вопросы формата (схемы сообщений, парсинг, валидация), синхронности (блокирующее против событийного), маршрутизации и адресации, широковещания и подписок, и — критически — семантики доставки: at-least-once, at-most-once, гарантии порядка. Этому посвящена часть IV, включая отдельную главу про failure modes коммуникации.