Google’s Agent Development Kit (ADK) предлагает два основных способа управления задачами.

Динамическая мультиагентная маршрутизация

В модели маршрутизации центральный координатор получает запрос пользователя и направляет его специализированным агентам. Координатор решает, какой специалист должен приступить к работе, специалист выполняет свою часть задачи, после чего управление возвращается к родителю.

  • Как это работает — Координатор выбирает специалиста, передает ему задачу, а затем ожидает ответа, прежде чем продолжить работу.
  • Плюсы — Гибкость. Поскольку LLM выбирает путь во время выполнения, система адаптируется к новым или неожиданным входным данным без необходимости переписывать логику процесса.
  • Минусы — Каждый переход добавляет сетевые задержки и вычислительные затраты, поэтому время отклика увеличивается по сравнению с линейным конвейером.

Последовательные циклы рабочих процессов

В циклической модели координатор заменяется единым агентом LoopAgent, который проходит через заранее определенную последовательность шагов, используя общее изменяемое состояние сессии.

  • Как это работает — Агенты считывают общий ключ, обновляют его и передают управление следующему шагу, пока последовательность не завершится.
  • Плюсы — Предсказуемость. Порядок действий никогда не меняется, что упрощает отладку и оптимизацию производительности.
  • Минусы — Жесткость. Любая необходимость отклониться от фиксированного порядка требует перепроектирования цикла.

Практический тест: Парсер математических выражений

Чтобы увидеть эти паттерны в действии, мы создали простой парсер, который вычисляет арифметические выражения с помощью четырех специализированных агентов: adder, subtracter, multiplier и divider.

Уроки циклического рабочего процесса

  1. Предотвращение бесконечных циклов — Мы проинструктировали каждого агента выводить текст и немедленно завершать свой ход сразу после обновления общего состояния. Без этой меры цикл мог бы продолжаться бесконечно.
  2. Соблюдение математической логики — Мы дали агенту adder четкие инструкции соблюдать порядок операций, чтобы он не нарушал правила вычитания.
  3. Избегание скрытых выходов — Мы обязали агентов выводить финальный результат перед вызовом инструмента выхода, чтобы пользователь видел итог, а не внезапное завершение работы.

Обработка ошибок

Мы добавили проверку деления на ноль перед агентом-специалистом divider. Проверка сначала проверяет делитель; если он равен нулю, процесс останавливается, что избавляет всю систему от ошибки во время выполнения (runtime exception).

Какой паттерн подходит вашему проекту?

  • Выбирайте мультиагентную маршрутизацию, если задачи меняются на лету, входные данные сильно варьируются или вам нужно, чтобы LLM выбирала лучшего специалиста во время выполнения. Компромиссом является более высокая задержка, но система справляется с непредвиденными сценариями без изменения кода.
  • Выбирайте циклы рабочих процессов, если у вас есть четко определенный конвейер — например, очистка, преобразование и агрегация данных, — где каждый шаг должен выполняться в строгом порядке. Преимуществом является низкая задержка и простота отладки, но ценой невозможности динамического ветвления.