Обзор шаблона Parallelization

В предыдущих главах мы рассмотрели цепочки подсказок (Prompt Chaining) для последовательных рабочих процессов и маршрутизацию (Routing) для динамического принятия решений и переходов между различными путями. Хотя эти шаблоны необходимы, многие сложные агентные задачи включают несколько подзадач, которые можно выполнять одновременно, а не друг за другом. Именно здесь критически важным становится шаблон Parallelization.

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

Рассмотрим агента, предназначенного для исследования темы и подготовки краткого обзора.

Последовательный подход:

  1. Найти источник A.
  2. Суммировать источник A.
  3. Найти источник B.
  4. Суммировать источник B.
  5. Синтезировать итоговый ответ на основе суммарных A и B.

Параллельный подход:

  1. Одновременно выполнить поиск источника A и поиск источника B.
  2. После завершения поиска одновременно суммировать источник A и источник B.
  3. Синтезировать итоговый ответ на основе суммарных A и B (этот шаг обычно остаётся последовательным, так как он зависит от завершения параллельных шагов).

Ключевая идея заключается в том, чтобы выделить части рабочего процесса, которые не зависят от результатов других частей, и выполнять их параллельно. Это особенно эффективно при работе с внешними сервисами (например, API или базами данных), которые имеют задержки: можно отправить несколько запросов одновременно.

Реализация параллелизации часто требует фреймворков, поддерживающих асинхронное выполнение или многопоточность/многопроцессность. Современные агентные фреймворки изначально спроектированы с учётом асинхронных операций, что позволяет легко определять шаги, которые могут выполняться параллельно.


image.png

Рис. 1. Пример параллелизации с суб-агентами