ForEach
Нода ForEach применяет вложенную операцию к каждому элементу входного массива. Элементы могут обрабатываться параллельно или последовательно, а результаты собираются в выходной массив с сохранением порядка.
Назначение
- Пакетная генерация изображений по списку описаний
- Обработка каждого элемента массива агентом
- Массовые HTTP-запросы к API
- Трансформация каждого элемента функцией
- Сохранение или проверка каждого элемента в данных проекта
Настройки
Путь к массиву (inputPath)
Dot-notation путь для извлечения массива из входных данных. Оставьте пустым, если вход уже является массивом.
Примеры:
- Пустое поле -- если входные данные уже массив:
["a", "b", "c"] items-- извлечь массив из{ "items": [...] }data.results-- вложенный путьdescriptions-- поле с описаниями
Кнопка справа от поля позволяет вставить ссылку на переменную из другой ноды.
Если путь не указан и входные данные -- объект, система автоматически ищет массив по стандартным ключам: items, data, results, output, images, descriptions.
Операция для каждого элемента (innerNodeType)
Выберите тип ноды, которая будет применена к каждому элементу:
| Тип | Описание |
|---|---|
| Генерация изображений | Каждый элемент -- промпт для генерации изображения |
| Агент | Каждый элемент передается агенту как входные данные |
| HTTP-запрос | Каждый элемент отправляется как HTTP-запрос |
| Сообщение | Каждый элемент обрабатывается шаблоном сообщения |
| Функция | Каждый элемент обрабатывается JavaScript-функцией |
| OCR (Yandex Vision) | Каждый элемент -- URL файла для распознавания текста |
| WhatsApp-шаблон | Каждый элемент -- номер получателя: шаблон уходит на каждый номер отдельным сообщением |
| Данные проекта | Каждый элемент читается, сохраняется, удаляется или занимает ключ в данных проекта |
Настройки внутренней операции
В зависимости от выбранного типа отображается блок настроек:
Генерация изображений:
- Размер (1024x1024, 1536x1024, 1024x1536, Auto)
- Качество (Auto, Low, Medium, High)
Агент:
- Инструкции для агента
HTTP-запрос:
- URL эндпоинта
- HTTP-метод (GET, POST, PUT, PATCH)
Данные проекта:
- Доступны операции «Прочитать», «Сохранить», «Занять ключ» и «Удалить».
- Ключ «Сохранить» и «Занять ключ» должен зависеть от элемента -- включите в него
{{_loop_item...}}или{{_loop_index}}, напримерorder-{{_loop_item.id}}. Иначе все элементы попадут в одну запись. - Значение по умолчанию --
{{_loop_item}}. - Для операций «Сохранить» и «Занять ключ» срок хранения -- от 1 до 365 дней, по умолчанию 180.
Результат каждой итерации -- результат ноды «Данные проекта» для элемента. При ошибке на месте элемента в results стоит null, а ошибка попадает в errors.
Операции «Список записей», «Запрос», «Прочитать несколько», «Сохранить несколько» и «Занять несколько ключей» внутри ForEach недоступны. Для работы со списком используйте «Сохранить несколько» или «Прочитать несколько» в одной ноде Данные проекта.
Режим выполнения
- Параллельно -- элементы обрабатываются одновременно (быстрее, но потребляет больше ресурсов)
- Последовательно -- элементы обрабатываются один за другим (медленнее, но предсказуемее)
Максимум параллельных задач
При параллельном режиме -- ограничение на количество одновременно выполняемых операций. Диапазон: 1 -- 20. По умолчанию: 5.
Контекст цикла
Внутри каждой итерации доступны специальные переменные:
| Переменная | Описание |
|---|---|
_loop_item | Текущий элемент массива |
_loop_index | Индекс текущего элемента (начинается с 0) |
_loop_total | Общее количество элементов |
Входные данные
Массив (или объект, содержащий массив по указанному пути).
Выходные данные
{
"__success": true,
"__error": false,
"results": [результат_0, результат_1, результат_2],
"errors": [],
"meta": {
"total": 3,
"succeeded": 3,
"failed": 0
}
}
Массив results сохраняет порядок входного массива. Если элемент обработан с ошибкой, на его позиции стоит null, а информация об ошибке попадает в errors.
Подключения
- Вход: один вход (слева)
- Выход: один выход
output(справа)
Примеры использования
Пакетная генерация изображений
- Агент генерирует список описаний изображений (массив строк).
- ForEach принимает этот массив.
- Внутренняя операция: генерация изображений.
- Результат: массив сгенерированных изображений.
Обработка списка заказов
- HTTP-нода получает список заказов из API.
- ForEach (inputPath:
orders) обрабатывает каждый заказ. - Внутренняя операция: Агент анализирует заказ.
- Результат: массив анализов.
Параллельные API-вызовы
- Функция формирует список запросов.
- ForEach отправляет каждый запрос через HTTP.
- Режим: параллельно, максимум 5 задач.
- Результат: массив ответов API.
Каждая итерация ForEach работает с копией состояния. Это означает, что параллельные итерации не могут повлиять друг на друга -- переменные одной итерации не перезапишут переменные другой. Подробнее о циклах: Циклы и условия.
Если входной массив пуст, ForEach возвращает пустой результат без ошибки: { "results": [], "meta": { "total": 0, "succeeded": 0, "failed": 0 } }.