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

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

18

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

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

Распределение работы порождает уровни декомпозиции (как разбить — части V) и топологии (какой формы соединение исполнителей — часть II): топология есть не что иное, как способ, которым распределена работа и проложены пути её сборки. Распределение состояния порождает уровни коммуникации (по каким каналам состояние пересекает границы — часть IV) и состояния роя как такового (где оно живёт и насколько согласовано — часть VII). Распределение ответственности порождает уровень ролей и контрактов (кто за что отвечает и как это проверяемо — часть III) и поднимается до уровня человека над роем (кому делегирована конечная ответственность и где проходит её предел — часть XIII).

Координация, связывающая три оси, образует одноимённый уровень (часть VI) — самый объёмный, потому что согласование распределённого и есть основная работа оркестратора. А поскольку узлы недетерминированы, дороги и ошибаются правдоподобно, поверх всех осей встают сквозные уровни надёжности (часть X), наблюдаемости (часть XI) и безопасности (часть XII): они не выводятся из распределений напрямую, но необходимы именно потому, что распределения построены на ненадёжных узлах. Таким образом, определение этой главы — это семя, из которого разворачивается оглавление: каждый последующий уровень отвечает на вопрос «как обращаться с конкретной осью распределения, если узлы такие, какие они есть».

Может показаться, что споры об определениях схоластичны: какая разница, называть ли ансамбль оркестрацией. Разница инженерная и прямая.

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

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

Узкое определение задаёт границу инструментария. Параллельный вызов масштабируется приёмами stateless-сервисов. Ансамбль улучшается приёмами повышения разнообразия. Цепочка промптов отлаживается как один агент. И только оркестрация по трём осям требует аппарата распределённых систем — и заслуживает того веса, который ему отводит эта книга. Применять тяжёлый аппарат там, где достаточно балансировщика нагрузки, — это перепроектирование; не применять там, где система реально распределена, — это наивность, которая разваливается на первом нетипичном входе.

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

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

— Рабочий критерий: изъятие агента в оркестрованной системе меняет работу остальных, потому что они зависят от того, что он произвёл; в ансамбле изъятие не меняет ничего.

— Три оси независимы, и каждая несёт собственный failure mode: распределение работы — зазоры и перекрытия; распределение состояния — рассинхронизацию и отравление; распределение ответственности — диффузию ответственности и ложный успех.

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

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

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

Глава 3. Ансамбль, оркестрация, рой: терминология

Разговор о мультиагентных системах с самого начала спотыкается о слова. Одни и те же три-четыре термина — «ансамбль», «оркестрация», «рой», «мультиагентность» — используются как взаимозаменяемые, хотя обозначают системы с разной топологией, разными отказами и разной стоимостью. Из-за этого спор о том, «надо ли строить рой», часто бессмыслен: спорящие имеют в виду разные конструкции. Эта глава вводит словарь книги. Она не каталог паттернов — паттерны разбираются в части II; здесь устанавливаются различия, которыми пользуются все последующие части.

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

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

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

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

Все различения этой главы выводятся из трёх осей.

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

Вторая ось — локус принятия решений: кто решает, что делать дальше. Решение может быть сосредоточено в одном узле (оркестраторе), распределено между равноправными участниками или вообще не приниматься явно — возникать как следствие локальных правил. Это и есть ось «централизованное против эмерджентного», к которой глава возвращается отдельно.

Третья ось — связанность по состоянию: разделяют ли участники общее изменяемое состояние или работают в изоляции. Общая память упрощает координацию, но создаёт гонки, отравление и единую точку компрометации (см. части VII и XII); изоляция (share-nothing, см. часть VIII) даёт надёжный параллелизм ценой явной передачи контекста.

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