Ваши агенты в порядке. Проблема в передаче задач между ними.

Большинство демо-версий мультиагентных систем показывают вам одного агента в разных «костюмах». Они показывают, как Агент А выполняет одну задачу, а затем Агент Б — другую. Но они не показывают, что происходит, когда Агент А не передает Агенту Б то, что ему необходимо.

В этом году я вывел в продакшн три мультиагентные системы. Агенты не были самой сложной частью. Сложной была передача задач (handoffs).

Передача задачи — это не просто передача текста. Вам нужно управлять следующим:

  • Согласование схем: Агент Б должен каждый раз парсить вывод Агента А.
  • Распространение ошибок: система должна знать, когда один из агентов дает сбой.
  • Гигиена контекста: каждая передача добавляет шум в ваше контекстное окно.

Самая большая ошибка — относиться к агентам как к черным ящикам, соединенным веревкой. Вы даете промпт Агенту А, получаете результат и впихиваете его в Агента Б. Это работает до первой поломки. А когда она случится, вы не поймете почему.

Избегайте этих трех распространенных сценариев сбоев:

  1. Тихая обрезка (Silent truncation): Агент А выдает слишком много данных. Агент Б отрезает конец. В итоге Агент Б обрабатывает неполные данные и выдает бессмыслицу. Измеряйте количество токенов на каждом этапе.

  2. Дрейф схем (Schema drift): Вы меняете промпт для Агента А. Теперь он возвращает данные в другом формате. Агент Б ломается, так как ожидает старый формат. Используйте структурированный вывод, например Pydantic, вместо того чтобы полагаться только на промпты.

  3. Состояние гонки (Race conditions): Вы запускаете пять воркеров одновременно. Три завершают работу, но два всё еще выполняются. Ваш агрегатор начинает работу слишком рано с неполными данными. В тестах это работает, но в продакшне — нет. Используйте барьер (barrier), чтобы дождаться завершения всех задач.

Моя первая система была умной, но хаотичной. Она использовала динамическую маршрутизацию и неявную передачу задач. Она работала, пока не столкнулась с реальным трафиком и не начала тихо «падать».

Моя вторая система была некрасивой, но правильной. При каждой передаче использовался типизированный контракт. Каждый сбой был явным. Каждый агент был изолирован.

Моя текущая система сочетает в себе оба подхода. Она использует дисциплину второй версии, но скрывает скучный код за фреймворком.

Если вы строите мультиагентные системы, начинайте с «некрасивой, но правильной» версии. Не пытайтесь сразу быть изобретательными. Сначала добейтесь стабильности в продакшне, а затем делайте систему элегантной.

Проблема передачи задач не становится проще. Но вы перестаете удивляться ей.

Source: https://dev.to/mrclaw207/your-agents-are-fine-the-handoff-between-them-isnt-2dij

Optional learning community: https://t.me/GyaanSetuAi