Ранас Мукминов – Оркестрация ИИ-агентов. Claude Opus 4.7 (страница 40)
— Качество конвейера определяется качеством границ между стадиями, а не качеством агентов внутри них; проверяемая схема плюс детерминированный валидатор на границе — самая дешёвая защита от семантического дрейфа.
— Семантический дрейф — главный failure mode конвейера: каждая стадия интерпретирует и правдоподобно достраивает вход, искажения накапливаются мультипликативно, и финальный артефакт может отвечать на задачу, которую никто не ставил; защита — протаскивать исходную постановку через все стадии и сверять итог с ней.
— Ошибка ранней стадии не отфильтровывается, а наследуется всеми последующими и обрастает корректной с виду надстройкой; ранние стадии несут непропорциональный вес, поэтому проверки ставят ближе к источнику ошибки.
— Пропускная способность конвейера равна пропускной способности узкого места; у агентов узкое место предсказывается объёмом выхода стадии, а не её кажущейся сложностью, и часто лежит на разделяемом ресурсе, а не внутри стадии.
— Надёжность линейного конвейера — это произведение надёжностей стадий; защита — тайм-ауты, идемпотентные повторы и checkpoint на границах, последний напрямую экономит оплаченную токенами работу при сбое.
— Конвейер оправдан при потоке фазируемых задач с проверяемыми границами и вреден для единственной, сильносвязанной или требующей глобального взгляда задачи, где один агент или иная топология проще и точнее.
Глава 11. Blackboard и общая доска
Предыдущие три главы описывали топологии, в которых поток работы задан явно. Оркестратор и воркеры (см. главу 8) распределяют задачи сверху вниз и собирают результаты обратно. Иерархия (см. главу 9) делегирует вглубь по дереву. Конвейер (см. главу 10) передаёт артефакт от стадии к стадии в фиксированном порядке. Во всех трёх случаях агент знает, кому он отправляет результат и от кого получает вход: связи между исполнителями зашиты в топологию.
Blackboard устроен иначе. Это паттерн косвенной координации: агенты не обмениваются сообщениями напрямую и не знают друг о друге, а взаимодействуют через общее пространство — доску, — на которую каждый может писать и с которой каждый может читать. Доска хранит частичное, постепенно дополняемое решение задачи. Агент наблюдает за состоянием доски, и когда видит, что на ней появились данные, к которым применима его компетенция, он берёт их, обрабатывает и кладёт обратно свой вклад. Никто не вызывает агента поимённо; агент сам решает, что текущее состояние доски — повод для его работы.
Этот паттерн пришёл из систем искусственного интеллекта 1970-х годов, где разнородные источники знания совместно решали задачу, для которой не было заранее известного порядка шагов: распознавание речи, интерпретация сигналов, планирование. Метафора — группа специалистов у общей доски: каждый смотрит на то, что уже написано, и когда может добавить что-то по своей части, выходит и дописывает. Порядок выходов не задан заранее и определяется тем, что на доске уже есть.
Для оркестрации ИИ-агентов blackboard ценен ровно тем же свойством: он разрывает прямую связанность между исполнителями. Агенты не зависят от существования, адресов и контрактов друг друга — они зависят только от схемы доски. Это даёт гибкость: добавление нового агента не требует переписывания тех, кто уже есть. Но та же косвенность — источник всех рисков паттерна. Координация никуда не девается; она вся переезжает в общее изменяемое состояние, а общее изменяемое состояние — это, как показывает теория распределённых систем, самый трудный для надёжности класс конструкций. Эта глава разбирает архитектуру blackboard, условия его уместности и его failure modes, которые отличаются от отказов адресных топологий именно потому, что отказывает здесь общее состояние, а не канал между двумя узлами.
Канонический blackboard состоит из трёх частей, и разделение между ними — не формальность, а условие управляемости паттерна.
Доска (blackboard) — общее пространство, хранящее текущее состояние решения. Это не свалка произвольных данных, а структурированное хранилище с явной схемой: набор типов записей, их поля, допустимые состояния. Доска обычно организована по уровням абстракции — от сырого входа к промежуточным гипотезам и далее к фрагментам итогового решения. В терминах этой книги доска — один из носителей состояния мультиагентной системы (общую тему состояния разбирает часть VII; здесь рассматривается только конфигурация, в которой состояние и есть основной канал координации).
Источники знания (knowledge sources) — агенты-специалисты. Каждый умеет узнавать на доске ситуацию, к которой применим, и преобразовывать её: брать одни записи и порождать другие. Источник знания не знает о других источниках; он знает только схему доски и собственную компетенцию. Это и есть слабая связанность: контракт агента (см. главу 18) формулируется как «при таком состоянии доски произвожу такое изменение», а не «получаю от агента X, отдаю агенту Y».
Контроль (control) — механизм, решающий, какой источник знания и когда активируется. Это критический и часто недооценённый компонент. Без него blackboard вырождается либо в непрерывное холостое сканирование всеми агентами всей доски, либо в неуправляемые гонки за право записи. Контроль может быть простым (опрос по таймеру, очередь готовых к запуску источников) или сложным (приоритизация по тому, какой вклад вероятнее всего продвинет решение). Важно зафиксировать: контроль — это и есть оркестратор данной топологии, просто перенесённый с маршрутизации сообщений на управление доступом к общему состоянию. Иллюзия «у blackboard нет оркестратора» обманчива; оркестратор есть, он называется контролем, и от его качества зависит, сойдётся ли система.
Базовый цикл blackboard повторяется до достижения завершающего условия:
1. Контроль осматривает доску и определяет, какие источники знания
стали применимы (их предусловие выполнено текущим состоянием).
2. Контроль выбирает один или несколько источников для активации.
3. Выбранные источники читают релевантную часть доски.
4. Источники производят вклад: новые записи или обновление существующих.
5. Вклад фиксируется на доске.
6. Проверяется завершающее условие: решение готово, тупик, исчерпан бюджет.
Если нет — переход к шагу 1.
Принципиальное отличие от конвейера — в шагах 1 и 2. В конвейере следующий исполнитель предопределён позицией в цепочке. В blackboard следующий исполнитель выбирается динамически, исходя из того, что сейчас на доске. Поэтому blackboard способен решать задачи без заранее известного плана: порядок шагов выводится из данных, а не задаётся топологией. Это его главная архитектурная ценность и одновременно главный источник недетерминизма.
Доска редко бывает плоской. Классическая организация — иерархия уровней, где нижние хранят данные, близкие ко входу, а верхние — фрагменты итогового решения. Источник знания обычно работает между соседними уровнями: читает записи нижнего уровня и порождает гипотезы уровнем выше, либо, наоборот, разбивает цель верхнего уровня на подцели нижнего. Это даёт два направления потока — снизу вверх (от данных к решению) и сверху вниз (от цели к её разложению), — и в blackboard они сосуществуют, в отличие от конвейера, где поток однонаправлен.
Иллюстративная схема доски для задачи интерпретации, где порядок шагов заранее неизвестен, могла бы выглядеть так (формат условный):
уровень РЕШЕНИЕ: {итог; собирается из подтверждённых фрагментов}
уровень ГИПОТЕЗЫ: {кандидат, оценка уверенности, опора на записи ниже}
уровень ФРАГМЕНТЫ: {частичные находки, помеченные источником-автором}
уровень ВХОД: {исходные данные, неизменяемые}
Источник-генератор читает уровень ВХОД и кладёт ФРАГМЕНТЫ. Источник-комбинатор читает ФРАГМЕНТЫ и поднимает их в ГИПОТЕЗЫ. Источник-критик оценивает ГИПОТЕЗЫ и либо повышает их до РЕШЕНИЯ, либо отклоняет. Никто из них не знает о существовании других; все они знают только, на каком уровне читать и на какой писать. Эта стратификация — не украшение, а инструмент управления связанностью: она задаёт, какой источник имеет право писать на какой уровень, и тем самым заранее разводит писателей, снижая риск гонок (к этому я вернусь в разделе об отказах).
Уровень ВХОД помечен как неизменяемый намеренно. Запись, которую никто не переписывает, не участвует в гонках и не отравляется задним числом; чем больше доски удаётся сделать «append-only» (только дополнение, без правки задним числом), тем меньше у неё классов отказов. Это общий приём: неизменяемость — самый дешёвый способ убрать целый набор проблем согласованности, и blackboard выигрывает каждый раз, когда часть доски удаётся объявить неизменяемой.
Тонкость, определяющая всё дальнейшее: в адресных топологиях канал коммуникации и хранилище состояния — разные сущности. Сообщение между агентами эфемерно, оно доставлено и забыто; состояние, если нужно, хранится отдельно. В blackboard эти две роли слиты: доска одновременно и канал координации, и хранилище состояния. Агент координируется с другими не тем, что шлёт им сообщение, а тем, что меняет общее состояние, которое они потом прочитают.
Это слияние и порождает специфику паттерна. Все вопросы согласованности общего состояния (см. главу 49), гонок за ресурсы (см. главу 41) и отравления общей памяти (см. главу 53) для blackboard не периферийны, а центральны, потому что без доски здесь нет вообще никакой координации. Где конвейер можно построить на надёжной очереди сообщений и не иметь общего изменяемого состояния вовсе, blackboard на общем изменяемом состоянии стоит весь.