AACFlow

Параллельное выполнение

Блок "Параллельное выполнение" — это контейнер, который выполняет несколько экземпляров одновременно для более быстрой обработки воркфлоу. Обрабатывайте элементы одновременно вместо последовательного выполнения.

Блоки "Параллельное выполнение" являются контейнерными узлами, которые выполняют свое содержимое несколько раз одновременно, в отличие от циклов, которые выполняются последовательно.

Параметры конфигурации

Тип параллельного выполнения

Выберите между двумя типами параллельного выполнения:

Параллельное выполнение на основе количества — Выполнение фиксированного количества параллельных экземпляров:

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

Используйте это, когда вам нужно запустить одну и ту же операцию несколько раз одновременно.

Пример: Запуск 5 параллельных экземпляров
- Экземпляр 1 ┐
- Экземпляр 2 ├─ Все выполняются одновременно
- Экземпляр 3 │
- Экземпляр 4 │
- Экземпляр 5 ┘

Параллельное выполнение на основе коллекции — Распределение коллекции по параллельным экземплярам:

Параллельное выполнение на основе коллекции

Каждый экземпляр обрабатывает один элемент из коллекции одновременно.

Пример: Обработка ["task1", "task2", "task3"] параллельно
- Экземпляр 1: Обработка "task1" ┐
- Экземпляр 2: Обработка "task2" ├─ Все выполняются одновременно
- Экземпляр 3: Обработка "task3" ┘

Как использовать блоки "Параллельное выполнение"

Создание блока "Параллельное выполнение"

  1. Перетащите блок "Параллельное выполнение" с панели инструментов на ваш холст
  2. Настройте тип параллельного выполнения и параметры
  3. Перетащите один блок внутрь параллельного контейнера
  4. Подключите блок по мере необходимости

Ссылки на параллельные данные

Существует важное различие между ссылками на параллельные данные внутри и снаружи блока "Параллельное выполнение":

Внутри параллельного блока используйте ссылки <parallel.> для доступа к контексту текущего экземпляра:

  • <parallel.index>: Номер текущего экземпляра (начиная с 0)
  • <parallel.currentItem>: Элемент для этого экземпляра (только для на основе коллекции)
  • <parallel.items>: Полная коллекция, которая распределяется (только для на основе коллекции)
// Внутри блока "Функция" внутри параллельного блока
const idx = <parallel.index>;           // 0, 1, 2, ...
const item = <parallel.currentItem>;    // Элемент этого экземпляра

Эти ссылки доступны только для блоков внутри параллельного контейнера. Они дают вам доступ к контексту текущего экземпляра.

Снаружи параллельного блока (после его завершения) ссылайтесь на блок "Параллельное выполнение" по его имени для доступа к агрегированным результатам:

  • <ParallelBlockName.results>: Массив результатов из всех экземпляров
// Если ваш параллельный блок называется "Process Tasks"
const allResults = <processtasks.results>;
// Возвращает: [result1, result2, result3, ...]

После завершения параллельного выполнения используйте имя блока (не parallel.) для доступа к собранным результатам. Имя блока нормализуется (нижний регистр, без пробелов).

Примеры использования

Пакетная обработка API — Обработка нескольких API-вызовов одновременно

Parallel (Collection) → API (Call Endpoint) → Function (Aggregate)

Многомодельная AI-обработка — Получение ответов от нескольких AI-моделей одновременно

Parallel (["gpt-4o", "claude-3.7-sonnet", "gemini-2.5-pro"]) → Agent → Evaluator (Select Best)

Расширенные возможности

Агрегация результатов

Результаты из всех параллельных экземпляров автоматически собираются и доступны через имя блока:

// В блоке "Функция" после параллельного блока с именем "Process Tasks"
const allResults = <processtasks.results>;
// Возвращает: [result1, result2, result3, ...]

Изоляция экземпляров

Каждый параллельный экземпляр выполняется независимо:

  • Отдельные области видимости переменных
  • Нет общего состояния между экземплярами
  • Сбои в одном экземпляре не влияют на другие

Ограничения

Контейнерные блоки (Циклы и Параллельное выполнение) поддерживают вложенность. Вы можете размещать параллельные блоки внутри параллельных блоков, циклы внутри параллельных блоков и любую комбинацию контейнерных блоков для построения сложных многомерных воркфлоу.

Хотя параллельное выполнение быстрее, учитывайте:

  • Лимиты скорости API при выполнении конкурентных запросов
  • Использование памяти с большими наборами данных
  • Максимум 20 конкурентных экземпляров для предотвращения истощения ресурсов

Параллельное выполнение vs Цикл

Понимание, когда использовать каждый:

ОсобенностьПараллельное выполнениеЦикл
ВыполнениеОдновременноеПоследовательное
СкоростьБыстрее для независимых операцийМедленнее, но упорядоченное
ПорядокНет гарантированного порядкаСохраняет порядок
Вариант использованияНезависимые операцииЗависимые операции
Использование ресурсовВышеНиже

Входные и выходные данные

  • Тип параллельного выполнения: Выберите между 'count' или 'collection'

  • Количество: Количество экземпляров для запуска (на основе количества)

  • Коллекция: Массив или объект для распределения (на основе коллекции)

Доступно только внутри параллельного блока:

  • <parallel.index>: Номер экземпляра (начиная с 0)

  • <parallel.currentItem>: Элемент для этого экземпляра (только для на основе коллекции)

  • <parallel.items>: Полная коллекция (только для на основе коллекции)

  • <blockname.results>: Массив всех результатов экземпляров (доступ через имя блока)

  • Доступ: Доступно в блоках после завершения параллельного выполнения

Рекомендации

  • Только независимые операции: Убедитесь, что операции не зависят друг от друга
  • Обрабатывайте лимиты скорости: Добавляйте задержки или регулирование для воркфлоу с интенсивным использованием API
  • Обработка ошибок: Каждый экземпляр должен корректно обрабатывать свои собственные ошибки

Common Questions

On this page

Начните создавать сегодня
Нам доверяют более 100 000 разработчиков.
SaaS-платформа для создания AI-агентов и управления агентным workforce.
Начать