Заявка на услуги DST
					
     Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
 поможет сформировать бизнес требования и рассчитает стоимость услуг.
						
 
				Используйте предметно-ориентированное проектирование и событийный штурм для определения ролей агентов, границ и масштабируемых архитектур для сложных многоагентных систем ИИ, соответствующих потребностям бизнеса.
Многоагентные системы искусственного интеллекта (MAS) становятся всё более важными для решения сложных реальных задач. Согласно прогнозам, в 2025 году 82% организаций планируют интегрировать ИИ-агенты, а 25% предприятий внедрят их, поэтому крайне важно иметь надёжные методологии проектирования таких систем. В этой статье мы рассмотрим, как сочетание событийного шторма и предметно-ориентированного проектирования (DDD) может помочь в создании более эффективных и хорошо структурированных многоагентных систем.
Понимание основных концепций
Многоагентные системы искусственного интеллекта (MAS)
Многоагентные системы искусственного интеллекта — это компьютеризированные системы, состоящие из нескольких взаимодействующих интеллектуальных агентов. Они предназначены для решения задач, которые сложно или невозможно решить отдельным агентам или монолитным системам. Ключевые характеристики МАС включают:
- Автономия агентов
- Локальные представления (ни один агент не обладает полными глобальными знаниями)
- Децентрализация
- Самоорганизация и самонаправление
MAS может применяться в различных областях, включая автономное вождение, многороботизированные фабрики, автоматизированную торговлю и коммерческие игры.
Проектирование на основе предметной области (DDD)
Проектирование на основе предметной области (DDD) — это подход к разработке программного обеспечения, ориентированный на создание модели, точно отражающей предметную область бизнеса. Его цели:
- Согласуйте то, как эксперты в данной области думают о проблеме
- Создайте общий язык, понятный как разработчикам, так и экспертам в предметной области.
- Встроить этот общий язык в код, чтобы сформировать модель предметной области
- Защитите основную бизнес-логику от технических деталей и инфраструктурного шума
DDD фокусируется на четком и точном моделировании бизнес-области, что приводит к созданию выразительного, инкапсулированного и легко тестируемого, масштабируемого и поддерживаемого программного обеспечения.
Шторм событий
Event Storming — это метод, основанный на коллективных семинарах и позволяющий быстро изучить и понять предметную область программного обеспечения. Ключевые аспекты включают:
- Легкий подход, не требующий компьютерной поддержки
- Использует стикеры на широкой стене для обозначения событий в домене.
- Объединяет разработчиков и экспертов в предметной области
- Основное внимание уделяется определению ключевых событий, команд и агрегатов домена для структурирования системы вокруг значимого бизнес-поведения.
Event Storming особенно полезен для моделирования бизнес-процессов и разработки требований, помогая группам получить общее понимание поведения системы.
Растущая популярность многоагентных систем искусственного интеллекта
Несколько факторов способствуют более широкому внедрению MAS:
- Повышенная сложность: MAS может решать сложные, многогранные задачи, распределяя задачи между специализированными агентами.
- Надежность: распределенная природа MAS обеспечивает более высокую отказоустойчивость.
- Совместное решение проблем: MAS преуспевают в задачах, требующих различных точек зрения или параллельной обработки.
- Адаптивность: отдельные агенты в MAS могут независимо реагировать на изменения.
Задача: проектирование сложных многоагентных систем
Несмотря на многочисленные преимущества многоагентных систем, их проектирование представляет собой серьёзную проблему. По мере роста числа агентов и их взаимодействия проектирование целостной и эффективной системы становится всё сложнее. Традиционные подходы к проектированию часто не позволяют учесть сложные взаимосвязи, поведение и взаимодействие между несколькими автономными агентами. Эта сложность проявляется несколькими способами:
- Определение границ агентов: определение обязанностей и сферы деятельности отдельных агентов в рамках более крупной системы.
- Моделирование сложных взаимодействий: учет тонких способов общения агентов и их влияния друг на друга.
- Поддержание согласованности системы: обеспечение соответствия коллективного поведения агентов общим целям системы.
Решение проблемы сложности проектирования многоагентных систем с помощью DDD и Event Storming
Проектирование на основе предметной области (DDD) и Event Storming предлагают эффективные методологии для решения упомянутых сложностей проектирования многоагентных систем (MAS):
Решения для проектирования на основе предметной области:
- Ограниченные контексты: управляйте сложностью, разбивая систему на четко определенные, независимые домены со своими собственными моделями и языком.
- Единый язык: обеспечьте общее понимание целей и функций системы.
- Богатая модель предметной области: инкапсуляция бизнес-логики для надежных, адаптируемых агентов.
Вклад в организацию мероприятий:
- Совместное исследование: составьте план системных событий и процессов совместно с экспертами и разработчиками в предметной области.
- Архитектура, управляемая событиями: соответствие потребностям MAS в коммуникации и координации.
- Визуальное моделирование: улучшение взаимодействия между разработчиками ИИ, экспертами в предметной области и заинтересованными сторонами посредством совместного визуального представления системы.
Синергия MAS, DDD и Event Storming:
- Дополнительные направления: MAS предоставляет архитектуру на основе агентов, DDD внедряет методы моделирования предметной области, а Event Storming поддерживает совместное исследование предметной области.
- Согласованные концепции: ограниченные контексты DDD определяют агентов, Event Storming идентифицирует ключевые события, а событийно-ориентированная природа MAS согласуется с обоими подходами.
- Масштабируемая архитектура: модульный подход DDD хорошо подходит для масштабируемых многоагентных систем.
- Согласование домена: обеспечивает тесную синхронизацию MAS с реальным бизнес-доменом.
Комбинируя эти подходы, разработчики могут создавать хорошо структурированные, масштабируемые многоагентные системы, которые тесно связаны с моделями предметной области и бизнес-процессами, используя сильные стороны каждой методологии.
Применение подхода: рабочий процесс
Давайте рассмотрим пример рабочего процесса проектирования сложной многоагентной системы с использованием Event Storming и Domain-Driven Design:
- Подготовка: соберите разнообразную команду, включающую экспертов в предметной области, разработчиков и специалистов по искусственному интеллекту. Подготовьте просторное рабочее пространство с достаточным количеством места на стене для стикеров.
- Идентификация событий в домене: отобразите ключевые события в домене с помощью оранжевых стикеров.
- Последовательность событий: расположите события в хронологическом порядке, используя дорожки для параллельных процессов.
- Идентификация команд: используйте синие стикеры для команд, которые запускают события, классифицируя их как инициированные пользователем, запущенные системой, управляемые политикой или обеспечивающие соблюдение инвариантов.
- Установление границ: применяйте правило связности для группировки связанных команд, событий и представлений в модули или ограниченные контексты.
- Идентификация агентов: используйте желтые стикеры для обозначения агентов, ответственных за выполнение команд или создание событий.
- Определение ограниченного контекста и шаблоны взаимодействия агентов: с помощью розовых стикеров сгруппируйте связанных агентов, команды и события в свободные области. Затем с помощью фиолетовых стикеров обозначьте сообщения или события, связывающие эти группы. В результате получается комплексная архитектура MAS, описывающая каждый контекст, его агентов, их обязанности и обрабатываемые ими события.
Пример использования: система управления цепочками поставок на основе ИИ
Чтобы продемонстрировать подход, давайте рассмотрим пример рабочего процесса проектирования сложной многоагентной системы с использованием Event Storming и Domain-Driven Design.
Пример использования: первоначальная формулировка проблемы
Международная производственная компания хочет создать интеллектуальную систему управления цепочками поставок, которая может охватывать закупки, планирование производства, управление запасами, логистику и выполнение заказов клиентов в разных странах и для разных линеек продукции.
Проблемы без DDD и штурма событий
Без структурированного подхода команда может столкнуться с трудностями:
- Определение границ и обязанностей агента
- Управление сложными взаимодействиями между различными частями цепочки поставок
- Интеграция с существующими системами и внешними партнерами
- Учет различных правил и практик в разных странах
- Баланс локальной оптимизации с глобальной эффективностью
Применение Event Storming и DDD
Чтобы продемонстрировать, как можно применять Event Storming и Domain-Driven Design (DDD) для проектирования многоагентной системы (MAS), мы будем использовать цветные стикеры для представления различных элементов системы.
Шаг 1: Подготовка
- Разнообразная команда, включающая экспертов в предметной области, разработчиков и специалистов по искусственному интеллекту.
- Большое рабочее пространство с достаточным количеством свободного места на стене для заметок.
- Материалы: разноцветные стикеры.
Шаг 2: Идентификация событий домена
События предметной области — это значимые события в системе, описывающие произошедшие события. Они записываются с использованием глаголов в прошедшем времени.
Примеры:
- «Сырье заказано»
- «Отгрузка задержана»
- «Производственная партия завершена»
- «Заказ клиента получен»
- «Достигнут критический уровень запасов»
- «Скидка применена»
- «Скидка отклонена»
Шаг 3: Последовательность событий
Расположите события на стене в хронологическом порядке слева направо. Используйте дорожки для представления параллельных процессов:
Пример:
- [Сырье заказано] -> [Сырье получено] -> [Производственная партия начата] -> [Производственная партия завершена] -> [Продукция отправлена] -> [Продукция доставлена]
- [Заказ клиента получен] -> [Заказ подтвержден] -> [Скидка подтверждена] -> [Заказ выполнен] -> [Счет отправлен]
- [Достигнут критический уровень запасов] -> [Точка повторного заказа достигнута] -> [Сырье заказано]
Шаг 4: Идентификация команды
Команды — это действия, которые могут вызывать события домена. Они могут быть инициированы пользователями, внешними системами или в результате применения политик. Давайте классифицируем их:
1. Команды, инициированные пользователем: это действия, которые запускаются непосредственно пользователем, взаимодействующим с системой.
- - [Разместить заказ на сырье]
- - [Начать производственную партию]
- - [Отправить продукт]
2. Команды, запускаемые системой: это автоматические действия, инициируемые самой системой в ответ на определённые условия или события. Например:
- - [Отправить счет] (автоматически активируется после выполнения заказа)
- - [Обновление инвентаря] (Выполняется при поступлении новых запасов)
3. Команды, управляемые политикой: это действия, выполняемые на основе предопределённых бизнес-правил или политик в системе. Например:
- - [Точка повторного заказа] (автоматически заказывает больше товара, когда запасы на исходе)
- - [Применить оптовую скидку] (автоматически применяет скидку к крупным заказам)
4. Инвариантно-принудительные команды: они гарантируют, что определённые условия или правила всегда выполняются в системе. Например:
- - [Проверить общую сумму заказа] (Гарантирует, что заказ соответствует минимальной сумме для обработки)
- - [Проверка кредитного лимита] (Проверяет, не превысил ли клиент свой кредитный лимит)
Примеры:
- [Разместить заказ на сырье] (Пользователь) -> [Заказанное сырье]
- [Получить сырье] (Система) -> [Получено сырье]
- [Точка перезапуска] (Политика) -> [Точка перезапуска активирована]
- [Контроль уровней запасов] (Политика) -> [Достигнут критический уровень запасов]
- [Запуск производственной партии] (Пользователь) -> [Производственная партия запущена]
- [Завершенная производственная партия] (Система) -> [Производственная партия завершена]
- [Создать заказ клиента] (Пользователь) -> [Заказ клиента получен]
- [Проверить общую сумму заказа] (Инвариант) -> [Заказ проверен]
- [Применить скидку] (Инвариантно) -> [Скидка подтверждена]
- [Выполнить заказ клиента] (Пользователь) -> [Заказ выполнен]
- [Отправить товар] (Пользователь) -> [Товар отправлен]
- [Доставить продукт] (Система) -> [Продукт доставлен]
- [Отправить счет] (Система) -> [Счет отправлен]
Шаг 5: Установление границ
Для определения границ между модулями мы применяем правило связности: то, что изменяется и используется вместе, должно храниться вместе. Для нашей системы управления цепочками поставок мы можем установить следующие границы:
Контекст цепочки поставок:
- Команды: [Разместить заказ на сырье], [Получить сырье], [Запустить точку повторного заказа], [Контролировать уровни запасов], [Обновить запасы]
- События: [Сырье заказано], [Сырье получено], [Точка повторного заказа достигнута], [Достигнут критический уровень запасов], [Запасы обновлены]
Контекст производства:
- Команды: [Начать производственную партию], [Завершить производственную партию]
- События: [Производственная партия запущена], [Производственная партия завершена]
Выполнение заказов и контекст логистики:
- Команды: [Создать заказ клиента], [Выполнить заказ клиента], [Отправить товар], [Доставить товар], [Отправить счет], [Проверить общую сумму заказа], [Применить скидку]
- События: [Заказ клиента получен], [Заказ подтвержден], [Скидка подтверждена], [Заказ выполнен], [Товар отправлен], [Товар доставлен], [Счет отправлен]
Примечание: Последовательность событий и команд часто охватывает несколько контекстов . Это ожидаемо, поскольку реальные бизнес-процессы часто предполагают взаимодействие между различными доменами или отделами. Например, заказ клиента (контекст выполнения заказа) может запустить производство (контекст производства) и повлиять на уровень запасов (контекст цепочки поставок). Такое межконтекстное взаимодействие отражает взаимосвязанный характер бизнес-операций и подчёркивает важность чётких границ и чётко определённых интерфейсов между контекстами для управления сложностью и обеспечения бесперебойной работы системы.
Шаг 6: Идентификация агента
Теперь, когда наши контексты настроены, мы можем точно определить агентов в каждом из них, которые обрабатывают команды или запускают события:
Контекст цепочки поставок:
- Агент по цепочке поставок
- Агент по управлению запасами
Контекст производства:
- Производственный агент
Выполнение заказов и контекст логистики:
- Агент по выполнению заказов
- Логистический агент
- Агент по выставлению счетов
- Агент проверки заказов
- Агент по управлению скидками
Шаг 7: Итоговая архитектура MAS
Теперь, когда мы определили контексты и агентов, мы можем более точно определить их обязанности. Этот шаг естественным образом приводит к созданию подробной таблицы, описывающей каждый контекст, его агентов, их обязанности и обрабатываемые ими события.
Будущие соображения по масштабированию и оптимизации многоагентных систем

По мере роста сложности и масштаба многоагентной системы (MAS) рассмотрите следующие стратегии для обеспечения ее постоянной эффективности и результативности:
Масштабирование архитектуры MAS
- Иерархические агенты: внедрение агентов-супервизоров для управления группами агентов более низкого уровня, создание более организованной структуры1.
- Динамическое создание агентов: разработайте систему, которая может создавать и уничтожать агентов по мере необходимости, обеспечивая гибкое распределение ресурсов.
- Балансировка нагрузки: распределение событий по нескольким экземплярам одного типа агента для предотвращения узких мест и обеспечения оптимальной производительности.
Комплексное тестирование и валидация
Создайте надежный процесс тестирования, который включает:
- Модульное тестирование: проверка поведения отдельных агентов
- Интеграционное тестирование: проверка того, как агенты работают вместе в ограниченном контексте.
- Системное тестирование: моделирование сложных сценариев, включающих несколько ограниченных контекстов.
- Chaos Engineering: внедрение контролируемых отказов для проверки устойчивости системы
Лучшие практики проектирования MAS
- Фокус на событиях в предметной области: выделите важные деловые события и проигнорируйте технический шум.
- Детализация агента: сосредоточьте агентов на четкой, единой ответственности, избегая излишней детализации или слишком общего подхода.
- Определение ограниченного контекста: основывайте границы на лингвистической и функциональной сплоченности, поощряя общий язык и связанные с ним функции в контекстах.
- Модели коммуникации: изучите различные модели, такие как публикация-подписка, запрос-ответ или источник событий для эффективной межагентской коммуникации.
- Проектирование, ориентированное на масштабируемость: создание гибкой архитектуры, позволяющей легко добавлять новые агенты или расширять существующие возможности.
- Механизмы разрешения конфликтов: установите четкие иерархии или протоколы переговоров для управления потенциальными конфликтами между агентами.
- Управление состоянием: решите, как агенты будут отслеживать свое состояние и делиться обновлениями с другими.
- Надежная обработка ошибок: укажите поведение агента для обработки сбоев и непредвиденных событий.
- Обучение и адаптация: рассмотрите возможность интеграции возможностей машинного обучения для улучшения процесса принятия решений агентами с течением времени.
- Безопасность и конфиденциальность: сохраняйте конфиденциальные данные в безопасности внутри каждого контекста и защищайте связь между агентами.
Внедрив эти соображения в процесс проектирования и разработки MAS, вы сможете создать более масштабируемую, отказоустойчивую и адаптируемую систему, способную справляться с растущей сложностью и меняющимися бизнес-требованиями.
Проблемы и ограничения
Хотя сочетание доменно-ориентированного проектирования (DDD) и событийного шторма для многоагентных систем (MAS) обеспечивает многочисленные преимущества, существуют сценарии, в которых этот подход может быть неоптимальным:
- Для детерминированных компонентов традиционные решения без использования ИИ часто оказываются более подходящими. Можно использовать гибридный подход, используя традиционные алгоритмы для предсказуемых компонентов и MAS для адаптивного принятия решений.
- Для более простых MAS такой подход может привести к ненужной сложности, что потенциально может привести к избыточному проектированию и увеличению времени разработки.
- Установление чётких границ между агентами может быть сложной задачей, особенно если у агентов пересекающиеся обязанности или им необходимо тесное сотрудничество. Для решения этой проблемы рассмотрите возможность внедрения иерархической структуры с главной системой согласования, которая будет контролировать субагентов с ограниченной автономией, обеспечивая согласованность коллективного поведения при сохранении чётких границ.
Тщательно учитывая эти ограничения и адаптируя подход к вашим конкретным потребностям, вы сможете максимально использовать преимущества использования DDD и Event Storming для многоагентных систем, одновременно минимизируя потенциальные недостатки.
Заключение
Интеграция Event Storming и Domain-Driven Design (DDD) создает мощную платформу для проектирования многоагентных систем искусственного интеллекта (MAS). Этот подход обеспечивает ряд преимуществ:
- Улучшенное понимание предметной области благодаря совместному исследованию
- Масштабируемая архитектура с использованием ограниченных контекстов DDD
- Улучшение коммуникации между техническими и нетехническими заинтересованными сторонами
- Гибкость адаптации к динамической природе МАС
- Последовательная структура системы с четко определенными обязанностями агентов
В 2025 году эта методология станет критически важной для организаций, стремящихся использовать MAS для решения сложных задач. В будущем возможны более глубокая интеграция машинного обучения, стандартизированные модели межагентного взаимодействия и повышенное внимание к безопасности в распределённых системах ИИ.
Используя этот комплексный подход, организации могут создавать хорошо структурированные, масштабируемые многоагентные системы, которые тесно связаны с областями их бизнеса, позиционируя себя на переднем крае инноваций в области ИИ.
 
 
																				
     Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
 поможет сформировать бизнес требования и рассчитает стоимость услуг.
						
Ижевск, ул. Воткинское шоссе 170 Е. 
Региональный оператор Сколково. Технопарк Нобель
Задать вопрос по почте