Iteration 노드 — 배열을 항목별로 처리하기
Iteration 노드 — 배열을 항목별로 처리하기
Iteration 노드는 배열을 받아 같은 워크플로 단계를 각 항목에 순차적으로, 또는 병렬로 적용해 처리합니다. 한 번의 단일 연산으로는 한계에 부딪히거나 비효율적인 배치 처리 작업에 유용해요.
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]
긴 문서 생성 예시
챕터 개요를 개별적으로 처리해 긴 콘텐츠를 생성합니다.
워크플로 단계
- Start 노드 — 사용자가 이야기 제목과 개요를 제공
- LLM 노드 — 상세한 챕터 구성을 생성
- Parameter Extractor — 챕터 목록을 구조화된 배열로 변환
- Iteration 노드 — 각 챕터를 내부 LLM으로 처리
- Answer 노드 — 생성되는 대로 챕터 콘텐츠를 스트리밍
파라미터 추출의 효과는 모델 성능과 지시 품질에 따라 달라집니다. 더 강력한 모델을 쓰고 지시에 예시를 포함하면 결과가 좋아져요.
출력 처리
Iteration 노드가 내는 배열은 최종 사용 전에 변환이 필요한 경우가 많습니다.
배열을 텍스트로 변환
Code 노드 사용
def main(articleSections: list):
return {
"result": "\n".join(articleSections)
}
Template 노드 사용
{{ articleSections | join("\n") }}