
(Нажмите на изображение выше, чтобы просмотреть видео этого урока)
Многоагентные шаблоны проектирования
Как только вы начинаете работу над проектом, который включает несколько агентов, вам нужно учитывать шаблон проектирования многоагентных систем. Однако не всегда сразу понятно, когда переходить на использование нескольких агентов и каковы преимущества.
Введение
В этом уроке мы постараемся ответить на следующие вопросы:
- Для каких сценариев применимы многоагентные системы?
- Каковы преимущества использования нескольких агентов по сравнению с одним агентом, выполняющим несколько задач?
- Каковы строительные блоки реализации шаблона проектирования многоагентной системы?
- Как обеспечить видимость того, как несколько агентов взаимодействуют друг с другом?
Цели обучения
После этого урока вы должны уметь:
- Определять сценарии, в которых применимы многоагентные системы
- Распознавать преимущества использования нескольких агентов по сравнению с единичным агентом
- Понимать строительные блоки реализации шаблона многоагентной системы
Какова общая картина?
Многоагентные системы — это шаблон проектирования, который позволяет нескольким агентам работать вместе для достижения общей цели.
Этот шаблон широко используется в различных областях, включая робототехнику, автономные системы и распределённые вычисления.
Сценарии, где применимы многоагентные системы
Итак, в каких сценариях имеет смысл использовать многоагентные системы? Ответ: существует много сценариев, где применение нескольких агентов полезно, особенно в следующих случаях:
- Большие объёмы работы: Большие объёмы работы можно разделить на более мелкие задачи и назначить разным агентам, что позволяет выполнять их параллельно и быстрее завершать работу. Примером этого может быть крупная задача по обработке данных.
- Сложные задачи: Сложные задачи, как и большие объёмы работы, можно разбить на более мелкие подзадачи и назначить разным агентам, каждый из которых специализируется на определённом аспекте задачи. Хорошим примером является автономный транспорт, где разные агенты управляют навигацией, обнаружением препятствий и связью с другими транспортными средствами.
- Разнообразная экспертиза: Разные агенты могут обладать различной экспертизой, что позволяет им более эффективно обрабатывать разные аспекты задачи, чем один агент. В этом случае хорошим примером является здравоохранение, где агенты могут заниматься диагностикой, планами лечения и мониторингом пациентов.
Преимущества использования нескольких агентов по сравнению с единичным агентом
Система с одним агентом может хорошо работать для простых задач, но для более сложных задач использование нескольких агентов даёт ряд преимуществ:
- Специализация: Каждый агент может быть специализирован под определённую задачу. Отсутствие специализации у одного агента значит, что у вас есть агент, который может делать всё, но может запутаться при сложной задаче. Например, он может в результате выполнять задачу, для которой он наименее пригоден.
- Масштабируемость: Проще масштабировать систему, добавляя новых агентов, чем перегружая одного агента.
- Отказоустойчивость: Если один агент выходит из строя, другие могут продолжать функционировать, обеспечивая надёжность системы.
Возьмём пример: забронировать поездку для пользователя. Система с одним агентом должна была бы обрабатывать все аспекты процесса бронирования поездки — от поиска рейсов до бронирования отелей и аренды автомобилей. Чтобы достигнуть этого с помощью одного агента, агенту понадобились бы инструменты для обработки всех этих задач. Это может привести к сложной и монолитной системе, которую сложно поддерживать и масштабировать. Многоагентная система, с другой стороны, может иметь разных агентов, специализирующихся на поиске рейсов, бронировании отелей и аренде автомобилей. Это сделало бы систему более модульной, проще в поддержке и масштабируемой.
Сравните это с туристическим агентством в формате семейного бизнеса и туристическим агентством, работающим по франшизе. В семейном бизнесе один агент обрабатывал бы все аспекты процесса бронирования поездки, тогда как во франшизе разные агенты обрабатывают разные аспекты процесса бронирования.
Строительные блоки реализации шаблона многоагентной системы
Прежде чем вы сможете реализовать шаблон многоагентной системы, вам нужно понять строительные блоки, которые составляют этот шаблон.
Давайте сделаем это более конкретным, снова рассмотрев пример бронирования поездки для пользователя. В этом случае строительные блоки включают:
- Коммуникация агентов: Агенты, занимающиеся поиском рейсов, бронированием отелей и арендой автомобилей, должны обмениваться информацией и делиться данными о предпочтениях и ограничениях пользователя. Вам нужно решить, какие протоколы и методы будут использоваться для этой коммуникации. На практике это означает, что агент по поиску рейсов должен общаться с агентом по бронированию отелей, чтобы гарантировать, что отель забронирован на те же даты, что и рейс. Это значит, что агенты должны обмениваться информацией о датах поездки пользователя, то есть вам нужно решить какие агенты обмениваются информацией и как они это делают.
- Механизмы координации: Агенты должны координировать свои действия, чтобы обеспечить соблюдение предпочтений и ограничений пользователя. Предпочтением пользователя может быть отель рядом с аэропортом, тогда как ограничением может быть то, что арендные автомобили доступны только в аэропорту. Это означает, что агент по бронированию отелей должен координироваться с агентом по аренде автомобилей, чтобы обеспечить соблюдение предпочтений и ограничений пользователя. Это значит, что вам нужно решить как агенты координируют свои действия.
- Архитектура агента: Агенты должны иметь внутреннюю структуру для принятия решений и обучения на основе взаимодействий с пользователем. Это означает, что агент по поиску рейсов должен иметь внутреннюю структуру для принятия решений о том, какие рейсы рекомендовать пользователю. Это значит, что вам нужно решить как агенты принимают решения и учатся на взаимодействиях с пользователем. Примеры того, как агент учится и совершенствуется, могут включать использование агентом по поиску рейсов модели машинного обучения для рекомендации рейсов пользователю на основе его прошлых предпочтений.
- Видимость взаимодействий многоагентной системы: Вам нужно иметь видимость того, как несколько агентов взаимодействуют друг с другом. Это означает, что у вас должны быть инструменты и методы для отслеживания действий и взаимодействий агентов. Это может быть в виде инструментов логирования и мониторинга, инструментов визуализации и метрик производительности.
- Шаблоны многоагентной системы: Существует несколько шаблонов для реализации многоагентных систем, таких как централизованные, децентрализованные и гибридные архитектуры. Вам нужно выбрать шаблон, который лучше всего подходит для вашего случая использования.
- Человек в петле: В большинстве случаев в процесс вовлечён человек, и вам нужно указать агентам, когда запрашивать вмешательство человека. Это может быть в форме запроса пользователя о конкретном отеле или рейсе, которые агенты не рекомендовали, или запроса подтверждения перед бронированием рейса или отеля.
Видимость взаимодействий между агентами
Важно иметь видимость того, как несколько агентов взаимодействуют друг с другом. Эта видимость необходима для отладки, оптимизации и обеспечения общей эффективности системы. Для этого у вас должны быть инструменты и методы для отслеживания действий и взаимодействий агентов. Это может быть в виде инструментов логирования и мониторинга, инструментов визуализации и метрик производительности.
Например, в случае бронирования поездки для пользователя у вас может быть панель управления, показывающая статус каждого агента, предпочтения и ограничения пользователя, а также взаимодействия между агентами. Эта панель может показывать даты поездки пользователя, рейсы, рекомендованные агентом по рейсам, отели, рекомендованные агентом по отелям, и автомобили, рекомендованные агентом по аренде. Это даст вам ясное представление о том, как агенты взаимодействуют друг с другом и соблюдаются ли предпочтения и ограничения пользователя.
Давайте рассмотрим каждый из этих аспектов подробнее.
- Инструменты логирования и мониторинга: Вы должны вести логирование для каждого действия, выполненного агентом. Запись в логе может содержать информацию об агенте, который выполнил действие, само действие, время его выполнения и результат. Эта информация затем может быть использована для отладки, оптимизации и прочего.
- Инструменты визуализации: Инструменты визуализации могут помочь вам увидеть взаимодействия между агентами более наглядно. Например, вы можете иметь граф, показывающий поток информации между агентами. Это может помочь выявить узкие места, неэффективности и другие проблемы в системе.
- Метрики производительности: Метрики производительности могут помочь вам отслеживать эффективность многоагентной системы. Например, вы можете отслеживать время, затраченное на выполнение задачи, количество задач, выполненных за единицу времени, и точность рекомендаций, сделанных агентами. Эта информация может помочь выявить области для улучшения и оптимизировать систему.
Шаблоны многоагентных систем
Давайте перейдём к некоторым конкретным шаблонам, которые можно использовать для создания многоагентных приложений. Вот несколько интересных шаблонов, которые стоит рассмотреть:
Групповой чат
Этот шаблон полезен, когда вы хотите создать приложение с групповым чатом, где несколько агентов могут общаться друг с другом. Типичные случаи использования включают командное сотрудничество, клиентскую поддержку и социальные сети.
В этом шаблоне каждый агент представляет пользователя в групповом чате, а сообщения обмениваются между агентами с использованием протокола обмена сообщениями. Агенты могут отправлять сообщения в групповой чат, получать сообщения из группового чата и отвечать на сообщения других агентов.
Этот шаблон можно реализовать с использованием централизованной архитектуры, где все сообщения маршрутизируются через центральный сервер, или децентрализованной архитектуры, где сообщения обмениваются напрямую.

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

Коллаборативная фильтрация
Этот шаблон полезен, когда вы хотите создать приложение, где несколько агентов могут сотрудничать для формирования рекомендаций пользователям.
Причина, по которой вы захотите, чтобы несколько агентов сотрудничали, заключается в том, что каждый агент может обладать разной экспертизой и вносить вклад в процесс рекомендаций по-разному.
Возьмём пример, где пользователь хочет рекомендацию лучшей акции для покупки на фондовом рынке.
- Эксперт отрасли:. Один агент может быть экспертом в конкретной отрасли.
- Технический анализ: Другой агент может быть экспертом в техническом анализе.
- Фундаментальный анализ: и ещё один агент может быть экспертом в фундаментальном анализе. Сотрудничая, эти агенты могут предоставить пользователю более всестороннюю рекомендацию.

Сценарий: процесс возврата средств
Рассмотрим сценарий, когда клиент пытается получить возврат за продукт; в этом процессе может быть задействовано довольно много агентов, но давайте разделим их на агентов, специфичных для этого процесса, и общих агентов, которые можно использовать в других процессах.
Агенты, специфичные для процесса возврата:
Ниже приведены некоторые агенты, которые могут быть задействованы в процессе возврата:
- Агент клиента: Этот агент представляет клиента и отвечает за инициацию процесса возврата.
- Агент продавца: Этот агент представляет продавца и отвечает за обработку возврата.
- Платежный агент: Этот агент отвечает за процесс оплаты и возврат средств клиенту.
- Агент урегулирования: Этот агент отвечает за процесс разрешения любых возникающих проблем в ходе возврата.
- Агент соответствия: Этот агент отвечает за обеспечение соответствия процесса возврата нормативам и политикам.
Общие агенты:
Эти агенты могут использоваться в других частях вашего бизнеса.
- Агент доставки: Этот агент представляет процесс доставки и отвечает за отправку продукта обратно продавцу. Этот агент можно использовать как для процесса возврата, так и для общей доставки продукта при покупке, например.
- Агент обратной связи: Этот агент отвечает за сбор отзывов от клиента. Обратная связь может быть собрана в любое время, а не только в процессе возврата.
- Агент эскалации: Этот агент отвечает за эскалацию вопросов на более высокий уровень поддержки. Вы можете использовать такого агента для любого процесса, где требуется эскалация проблемы.
- Агент уведомлений: Этот агент отвечает за отправку уведомлений клиенту на разных этапах процесса возврата.
- Аналитический агент: Этот агент отвечает за анализ данных, связанных с процессом возврата.
- Агент аудита: Этот агент отвечает за аудит процесса возврата, чтобы убедиться, что он выполняется корректно.
- Агент отчётности: Этот агент отвечает за генерацию отчётов по процессу возврата.
- Агент знаний: Этот агент отвечает за поддержание базы знаний с информацией, связанной с процессом возврата. Этот агент может быть компетентен как в вопросах возвратов, так и в других частях вашего бизнеса.
- Агент безопасности: Этот агент отвечает за обеспечение безопасности процесса возврата.
- Агент качества: Этот агент отвечает за обеспечение качества процесса возврата.
Ранее перечислено довольно много агентов — как для конкретного процесса возврата, так и для общих агентов, которые можно использовать в других частях вашего бизнеса. Надеюсь, это даёт вам представление о том, как можно решить, какие агенты использовать в вашей многоагентной системе.
Задание
Разработайте многоагентную систему для процесса клиентской поддержки. Определите участвующих агентов в процессе, их роли и обязанности, а также то, как они взаимодействуют друг с другом. Учтите как агентов, специфичных для процесса клиентской поддержки, так и общих агентов, которые можно использовать в других частях вашего бизнеса.
Подумайте перед тем, как читать следующее решение: вам может понадобиться больше агентов, чем вы думаете.
СОВЕТ: Подумайте о разных этапах процесса поддержки клиентов, а также о агентах, необходимых для любой системы.
Solution
Решение
Knowledge checks
Question: When should you consider using multi-agents?
Solution quiz
Summary
В этом уроке мы рассмотрели шаблон проектирования с несколькими агентами, включая сценарии, где применимы несколько агентов, преимущества использования нескольких агентов по сравнению с одиночным агентом, составляющие элементы реализации шаблона проектирования с несколькими агентами и способы получения видимости того, как несколько агентов взаимодействуют друг с другом.
Got More Questions about the Multi-Agent Design Pattern?
Присоединяйтесь к Microsoft Foundry Discord, чтобы пообщаться с другими учащимися, посетить часы консультаций и получить ответы на вопросы по AI-агентам.
Additional resources
Previous Lesson
Planning Design
Next Lesson
Метапознание в AI-агентах
Отказ от ответственности:
Этот документ был переведён с помощью сервиса машинного перевода на основе ИИ Co-op Translator. Несмотря на наши усилия по обеспечению точности, просим учитывать, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для критически важной информации рекомендуется обратиться к профессиональному переводу, выполненному человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.