Iteration 노드 — 배열을 항목별로 처리하기

Iteration 노드 — 배열을 항목별로 처리하기

Iteration 노드는 배열을 받아 같은 워크플로 단계를 각 항목에 순차적으로, 또는 병렬로 적용해 처리합니다. 한 번의 단일 연산으로는 한계에 부딪히거나 비효율적인 배치 처리 작업에 유용해요.

출처: 공식문서 — Iteration Node

Iteration이 동작하는 방식

이 노드는 배열 입력을 받아 각 배열 요소마다 한 번씩 실행되는 서브워크플로를 만듭니다. 각 반복 동안 현재 항목과 그 인덱스가 변수로 제공되어, 내부 노드가 참조할 수 있어요.

핵심 구성 요소

  • 입력 변수 — 업스트림 노드에서 온 배열 데이터
  • 내부 워크플로 — 각 요소에 적용할 처리 단계
  • 출력 변수 — 모든 반복에서 모은 결과(역시 배열)

설정

배열 입력

Parameter Extractor, Code 노드, Knowledge Retrieval, HTTP Request 응답 같은 업스트림 노드의 배열 변수를 연결합니다.

내장 변수

각 반복에서 다음에 접근할 수 있습니다.

  • items[object] — 처리 중인 현재 배열 요소
  • index[number] — 현재 반복 인덱스(0부터 시작)

처리 모드

순차 모드 (Sequential Mode)

  • 순차 처리 — 항목을 순서대로 하나씩 처리
  • 스트리밍 지원 — Answer 노드로 결과를 점진적으로 출력 가능
  • 리소스 관리 — 메모리 사용이 낮고 실행 순서가 예측 가능
  • 적합한 경우 — 순서가 중요한 경우, 또는 스트리밍 출력을 쓸 때

병렬 모드 (Parallel Mode)

  • 동시 처리 — 최대 10개 항목을 동시에 처리
  • 성능 향상 — 독립 연산에서 더 빠르게 실행
  • 배치 처리 — 큰 배열을 효율적으로 처리
  • 적합한 경우 — 순서가 중요하지 않은 독립 연산

오류 처리

개별 배열 요소의 처리 실패를 어떻게 다룰지 구성합니다.

Terminate — 오류가 발생하면 처리를 멈추고 오류 메시지를 반환

Continue on Error — 실패한 항목을 건너뛰고 계속 처리하며, 실패한 요소에는 null을 출력

Remove Failed Results — 실패한 항목을 건너뛰고 성공한 결과만 반환

입출력 대응 예시:

  • 입력: [1, 2, 3]
  • Continue on Error 출력: [result-1, null, result-3]
  • Remove Failed 출력: [result-1, result-3]

긴 문서 생성 예시

챕터 개요를 개별적으로 처리해 긴 콘텐츠를 생성합니다.

워크플로 단계

  1. Start 노드 — 사용자가 이야기 제목과 개요를 제공
  2. LLM 노드 — 상세한 챕터 구성을 생성
  3. Parameter Extractor — 챕터 목록을 구조화된 배열로 변환
  4. Iteration 노드 — 각 챕터를 내부 LLM으로 처리
  5. Answer 노드 — 생성되는 대로 챕터 콘텐츠를 스트리밍

파라미터 추출의 효과는 모델 성능과 지시 품질에 따라 달라집니다. 더 강력한 모델을 쓰고 지시에 예시를 포함하면 결과가 좋아져요.

출력 처리

Iteration 노드가 내는 배열은 최종 사용 전에 변환이 필요한 경우가 많습니다.

배열을 텍스트로 변환

Code 노드 사용

def main(articleSections: list):
    return {
        "result": "\n".join(articleSections)
    }

Template 노드 사용

{{ articleSections | join("\n") }}

더 알아보기