
(Натисніть на зображення вище, щоб переглянути відео цього уроку)
Шаблони проєктування багатоагентних систем
Як тільки ви починаєте працювати над проєктом, який включає кілька агентів, вам потрібно буде розглянути багатоагентний шаблон проєктування. Проте може бути не одразу зрозуміло, коли слід перейти до багатоагентної архітектури і які переваги це дає.
Вступ
У цьому уроці ми прагнемо відповісти на такі питання:
- У яких сценаріях доцільно застосовувати багатоагентні системи?
- Які переваги використання кількох агентів замість одного агента, який виконує кілька завдань?
- З яких складових складається реалізація багатоагентного шаблону проєктування?
- Як ми можемо отримати видимість того, як кілька агентів взаємодіють між собою?
Навчальні цілі
Після цього уроку ви повинні вміти:
- Визначати сценарії, де застосовні багатоагентні системи
- Визнавати переваги використання кількох агентів порівняно з одним агентом
- Розуміти складові реалізації багатоагентного шаблону проєктування
Яка загальна картина?
Багатоагентні системи — це шаблон проєктування, який дозволяє кільком агентам працювати разом для досягнення спільної мети.
Цей шаблон широко використовується в різних галузях, включаючи робототехніку, автономні системи та розподілені обчислення.
Сценарії, де доречно використовувати багатоагентні системи
Отже, які сценарії є хорошим варіантом для використання багатоагентних систем? Відповідь — є багато сценаріїв, де застосування кількох агентів є корисним, особливо в таких випадках:
- Великі навантаження: великі завдання можуть бути розбиті на менші підзадачі та призначені різним агентам, що дозволяє оброблювати їх паралельно і швидше завершувати роботу. Прикладом цього може бути велика задача обробки даних.
- Складні завдання: складні завдання, як і великі навантаження, можна розбити на менші підзадачі та призначити різним агентам, кожному з яких спеціалізується на певному аспекті завдання. Хорошим прикладом є автономні транспортні засоби, де різні агенти керують навігацією, виявленням перешкод та зв’язком з іншими транспортними засобами.
- Різноманітна експертиза: різні агенти можуть мати різну експертизу, що дозволить їм ефективніше обробляти різні аспекти завдання, ніж один агент. Для цього випадку гарним прикладом є охорона здоров’я, де агенти можуть керувати діагностикою, планами лікування та моніторингом пацієнта.
Переваги використання кількох агентів замість одного агента
Система з одним агентом може добре працювати для простих завдань, але для складніших завдань використання кількох агентів може надати кілька переваг:
- Спеціалізація: кожен агент може спеціалізуватися на конкретному завданні. Відсутність спеціалізації в єдиного агента означає, що у вас є агент, який може робити все, але може заплутатися, що робити при складному завданні. Наприклад, він може в кінцевому підсумку виконувати завдання, для якого не є найкраще пристосованим.
- Масштабованість: легше масштабувати систему, додаючи більше агентів, ніж перевантажувати одного агента.
- Відмовостійкість: якщо один агент виходить з ладу, інші можуть продовжувати функціонувати, забезпечуючи надійність системи.
Розгляньмо приклад — забронюємо поїздку для користувача. Система з одним агентом повинна була б обробляти всі аспекти процесу бронювання поїздки: пошук рейсів, бронювання готелів та оренду автомобілів. Щоб досягти цього з одним агентом, агенту довелося б мати інструменти для обробки всіх цих завдань. Це могло б призвести до складної і монолітної системи, яку важко підтримувати і масштабувати. Натомість багатоагентна система могла б мати різних агентів, спеціалізованих на пошуку рейсів, бронюванні готелів і оренді автомобілів. Це зробило б систему більш модульною, простішою в обслуговуванні та масштабованою.
Порівняйте це з туристичним бюро, що працює як сімейний магазин, проти туристичного бюро у форматі франшизи. Сімейний магазин мав би одного агента, який обробляє всі аспекти бронювання поїздки, тоді як франшиза мала б різних агентів, які відповідають за різні аспекти процесу бронювання.
Складові реалізації багатоагентного шаблону проєктування
Перш ніж ви зможете реалізувати багатоагентний шаблон проєктування, вам потрібно зрозуміти складові, з яких складається цей шаблон.
Зробімо це більш конкретним, знову розглянувши приклад бронювання поїздки для користувача. У цьому випадку складові включали б:
- Комунікація між агентами: агенти, що шукають рейси, бронюють готелі та оренду автомобілів, мають спілкуватися та ділитися інформацією про уподобання та обмеження користувача. Ви повинні вирішити, які протоколи та методи використовувати для цієї комунікації. Конкретно це означає, що агент, який шукає рейси, має спілкуватися з агентом, що бронює готелі, щоб гарантувати, що готель заброньовано на ті ж дати, що й рейс. Це означає, що агенти повинні обмінюватися інформацією про дати подорожі користувача, отже вам потрібно вирішити які агенти діляться інформацією і як вони це роблять.
- Механізми координації: агенти повинні координувати свої дії, щоб забезпечити дотримання уподобань і обмежень користувача. Наприклад, уподобання користувача можуть полягати в бажанні мати готель поруч з аеропортом, тоді як обмеження може бути в тому, що оренда автомобілів доступна лише в аеропорту. Це означає, що агент, що бронює готелі, має координуватися з агентом, що бронює оренду автомобілів, щоб виконати уподобання та обмеження користувача. Вам потрібно вирішити як агенти координують свої дії.
- Архітектура агента: агенти повинні мати внутрішню структуру для прийняття рішень і навчання на основі своїх взаємодій з користувачем. Це означає, що агент, який шукає рейси, повинен мати внутрішню структуру для прийняття рішень щодо того, які рейси рекомендувати користувачу. Ви повинні вирішити як агенти приймають рішення і навчаються на взаємодіях з користувачем. Приклади того, як агент навчається і покращується, можуть включати використання моделлю машинного навчання агентом, що шукає рейси, для рекомендування рейсів на основі попередніх вподобань користувача.
- Видимість взаємодій багатоагентної системи: вам потрібно мати видимість того, як кілька агентів взаємодіють один з одним. Це означає, що вам потрібні інструменти і методи для відстеження активностей та взаємодій агентів. Це може бути у вигляді інструментів логування та моніторингу, інструментів візуалізації та метрик продуктивності.
- Шаблони багатоагентних систем: існують різні шаблони для реалізації багатоагентних систем, такі як централізовані, децентралізовані та гібридні архітектури. Вам потрібно вибрати шаблон, який найкраще підходить для вашого випадку використання.
- Людина в циклі: у більшості випадків у вас буде людина в циклі, і вам потрібно вказати агентам, коли запитувати втручання людини. Це може бути у вигляді запиту користувача на конкретний готель або рейс, які агенти не рекомендували, або запиту на підтвердження перед бронюванням рейсу або готелю.
Видимість взаємодій багатоагентної системи
Важливо мати видимість того, як кілька агентів взаємодіють один з одним. Ця видимість є суттєвою для налагодження, оптимізації та забезпечення ефективності системи в цілому. Щоб досягти цього, вам потрібні інструменти і методи для відстеження активностей та взаємодій агентів. Це може бути у вигляді інструментів логування та моніторингу, інструментів візуалізації та метрик продуктивності.
Наприклад, у випадку бронювання поїздки для користувача, ви могли б мати приладну панель, яка показує стан кожного агента, уподобання та обмеження користувача, а також взаємодії між агентами. Ця панель може показувати дати подорожі користувача, рейси, рекомендовані агентом пошуку рейсів, готелі, рекомендовані агентом бронювання готелів, і орендні автомобілі, рекомендовані агентом оренди авто. Це надало б вам чітке уявлення про те, як агенти взаємодіють між собою і чи виконуються уподобання та обмеження користувача.
Розглянемо кожен із цих аспектів детальніше.
- Інструменти логування та моніторингу: вам потрібно вести логування кожної дії, виконаної агентом. Запис у журналі може зберігати інформацію про агента, який виконав дію, виконану дію, час виконання та результат дії. Ця інформація потім може бути використана для налагодження, оптимізації тощо.
- Інструменти візуалізації: інструменти візуалізації допомагають побачити взаємодії між агентами у більш інтуїтивний спосіб. Наприклад, ви можете мати граф, який показує потік інформації між агентами. Це може допомогти ідентифікувати вузькі місця, неефективності та інші проблеми в системі.
- Метрики продуктивності: метрики продуктивності допомагають відстежувати ефективність багатоагентної системи. Наприклад, ви можете вимірювати час, необхідний для виконання завдання, кількість завдань, виконаних за одиницю часу, та точність рекомендацій, які роблять агенти. Ця інформація може допомогти визначити області для покращення та оптимізувати систему.
Шаблони багатоагентних систем
Розглянемо деякі конкретні шаблони, які можна використовувати для створення багатоагентних застосунків. Ось кілька цікавих шаблонів, які варто розглянути:
Груповий чат
Цей шаблон корисний, коли ви хочете створити застосунок групового чату, де кілька агентів можуть спілкуватися між собою. Типові випадки використання включають командну співпрацю, підтримку клієнтів і соціальні мережі.
У цьому шаблоні кожен агент представляє користувача в груповому чаті, а повідомлення обмінюються між агентами за допомогою протоколу обміну повідомленнями. Агенти можуть надсилати повідомлення в груповий чат, отримувати повідомлення з групового чату та відповідати на повідомлення інших агентів.
Цей шаблон можна реалізувати, використовуючи централізовану архітектуру, де всі повідомлення маршрутизуються через центральний сервер, або децентралізовану архітектуру, де повідомлення обмінюються безпосередньо.

Передача завдання
Цей шаблон корисний, коли ви хочете створити застосунок, де кілька агентів можуть передавати завдання один одному.
Типові випадки використання включають підтримку клієнтів, управління завданнями та автоматизацію робочих процесів.
У цьому шаблоні кожен агент представляє завдання або крок у робочому процесі, і агенти можуть передавати завдання іншим агентам на основі заздалегідь визначених правил.

Спільне фільтрування
Цей шаблон корисний, коли ви хочете створити застосунок, де кілька агентів можуть співпрацювати для надання рекомендацій користувачам.
Чому варто, щоб кілька агентів співпрацювали — бо кожен агент може мати різну експертизу і може по-різному сприяти процесу рекомендацій.
Розглянемо приклад, де користувач хоче отримати рекомендацію щодо найкращої акції для купівлі на фондовому ринку.
- Експерт з галузі: один агент може бути експертом у певній галузі.
- Технічний аналіз: інший агент може бути експертом з технічного аналізу.
- Фундаментальний аналіз: ще один агент може бути експертом з фундаментального аналізу. Співпрацюючи, ці агенти можуть надати користувачу більш комплексну рекомендацію.

Сценарій: процес повернення коштів
Розгляньте сценарій, коли клієнт намагається отримати повернення коштів за товар; у цьому процесі може бути залучено досить багато агентів, але давайте розділимо їх на агенти, специфічні для цього процесу, і загальні агенти, які можна використовувати в інших процесах.
Агенти, специфічні для процесу повернення коштів:
Нижче наведені деякі агенти, які можуть бути залучені в процес повернення коштів:
- Агент клієнта: цей агент представляє клієнта і відповідає за ініціювання процесу повернення коштів.
- Агент продавця: цей агент представляє продавця і відповідає за обробку повернення.
- Агент платежів: цей агент відповідає за процес платежів і повернення коштів клієнту.
- Агент вирішення спорів: цей агент відповідає за процес вирішення і розв’язання будь-яких проблем, що виникають під час процесу повернення.
- Агент відповідності: цей агент відповідає за забезпечення відповідності процесу повернення регламентам і політикам.
Загальні агенти:
Ці агенти можуть використовуватись в інших частинах вашого бізнесу.
- Агент доставки: цей агент представляє процес доставки і відповідає за повернення товару продавцю. Цього агента можна використовувати як для процесу повернення, так і для загальної доставки товару при покупці, наприклад.
- Агент зворотного зв’язку: цей агент відповідає за збір відгуків від клієнта. Відгуки можуть збиратися в будь-який час, а не лише під час процесу повернення.
- Агент ескалації: цей агент відповідає за ескалацію проблем на вищий рівень підтримки. Ви можете використовувати такого агента для будь-якого процесу, де потрібно ескалювати проблему.
- Агент сповіщень: цей агент відповідає за надсилання сповіщень клієнту на різних етапах процесу повернення.
- Агент аналітики: цей агент відповідає за аналіз даних, пов’язаних з процесом повернення.
- Агент аудиту: цей агент відповідає за аудит процесу повернення, щоб гарантувати його правильне виконання.
- Агент звітності: цей агент відповідає за генерацію звітів щодо процесу повернення.
- Агент знань: цей агент відповідає за підтримку бази знань з інформацією, пов’язаною з процесом повернення. Цей агент може бути обізнаним як у питаннях повернень, так і в інших частинах вашого бізнесу.
- Агент безпеки: цей агент відповідає за забезпечення безпеки процесу повернення.
- Агент контролю якості: цей агент відповідає за забезпечення якості процесу повернення.
У попередньому списку наведено досить багато агентів як для конкретного процесу повернення, так і для загальних агентів, які можна використовувати в інших частинах вашого бізнесу. Сподіваюсь, це дає вам уявлення про те, як ви можете вирішувати, які агенти використовувати у вашій багатоагентній системі.
Завдання
Спроєктуйте багатоагентну систему для процесу підтримки клієнтів. Визначте агенти, залучені в цей процес, їхні ролі та обов’язки, а також те, як вони взаємодіють один з одним. Розгляньте як агенти, специфічні для процесу підтримки клієнтів, так і загальні агенти, які можна використовувати в інших частинах вашого бізнесу.
Подумайте перед тим, як читати наведене рішення, можливо вам знадобиться більше агентів, ніж ви думаєте.
Порада: Подумайте про різні етапи процесу підтримки клієнтів, а також врахуйте агентів, потрібних для будь-якої системи.
Solution
Solution
Knowledge checks
Question: When should you consider using multi-agents?
Solution quiz
Summary
In this lesson, we’ve looked at the multi-agent design pattern, including the scenarios where multi-agents are applicable, the advantages of using multi-agents over a singular agent, the building blocks of implementing the multi-agent design pattern, and how to have visibility into how the multiple agents are interacting with each other.
Got More Questions about the Multi-Agent Design Pattern?
Join the Microsoft Foundry Discord to meet with other learners, attend office hours and get your AI Agents questions answered.
Additional resources
Previous Lesson
Planning Design
Next Lesson
Metacognition in AI Agents
Відмова від відповідальності:
Цей документ було перекладено за допомогою сервісу ШІ-перекладу Co-op Translator. Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння чи неправильні тлумачення, що виникли внаслідок використання цього перекладу.