Ваші агенти в порядку. Проблема в передачі завдань між ними.
Більшість демо-версій мультиагентних систем показують одного агента в костюмі. Вони демонструють, як Агент А виконує одне завдання, а потім Агент Б — інше. Але вони не показують, що стається, коли Агент А не може передати Агенту Б те, що йому потрібно.
Цього року я випустив у продакшн три мультиагентні системи. Найскладнішим були не самі агенти, а передача завдань між ними.
Передача завдань (handoff) — це більше, ніж просто передача тексту. Ви повинні керувати такими аспектами:
- Узгодження схем: Агент Б має щоразу парсити вихідні дані Агента А.
- Поширення помилок: система повинна знати, коли один із агентів зазнає невдачі.
- Гігієна контексту: кожна передача додає шуму у ваше вікно контексту.
Найбільша помилка — ставитися до агентів як до «чорних скриньок», з'єднаних ниткою. Ви даєте промпт Агенту А, отримуєте результат і просто «запихаєте» його в Агента Б. Це працює, поки не зламається. А коли воно зламається, ви не зрозумієте чому.
Уникайте цих трьох поширених сценаріїв відмови:
Тиха обрізка (Silent truncation): Агент А генерує занадто багато даних. Агент Б відрізає кінець. Потім Агент Б обробляє неповні дані та видає нісенітницю. Вимірюйте кількість токенів на кожному етапі.
Дрейф схем (Schema drift): Ви змінюєте промпт для Агента А. Тепер він повертає дані в іншому форматі. Агент Б ламається, бо очікує старий формат. Використовуйте структуровані вихідні дані, такі як Pydantic, замість того, щоб покладатися лише на промпти.
Стан гонитви (Race conditions): Ви запускаєте п'ять воркерів одночасно. Троє завершують роботу, але двоє все ще працюють. Ваш агрегатор починає роботу занадто рано з неповними даними. Це працює під час тестів, але дає збій у продакшні. Використовуйте бар'єр (barrier), щоб дочекатися виконання всіх завдань.
Моя перша система була розумною, але хаотичною. Вона використовувала динамічну маршрутизацію та неявну передачу завдань. Все працювало, поки не з'явився реальний трафік, і система тихо «впала».
Моя друга система була некрасивою, але правильною. Кожна передача використовувала типізований контракт. Кожна помилка була явною. Кожен агент був ізольованим.
Моя поточна система поєднує обидва підходи. Вона використовує дисципліну другої версії, але приховує нудний код за фреймворком.
Якщо ви будуєте мультиагентні системи, починайте з «некрасивої, але правильної» версії. Не намагайтеся спочатку бути «розумними». Спочатку налаштуйте все правильно для продакшну, а вже потім робіть це елегантно.
Проблема передачі завдань не стає легшою. Але ви перестаєте бути нею здивованими.
Джерело: https://dev.to/mrclaw207/your-agents-are-fine-the-handoff-between-them-isnt-2dij
Додаткова спільнота для навчання: https://t.me/GyaanSetuAi
