다크 모드
Iteration 노드
Iteration은 배열의 각 항목에 같은 내부 워크플로우를 적용하고, 선택한 내부 노드의 결과를 하나의 배열로 모읍니다. 항목마다 독립된 실행 컨텍스트를 사용하므로 목록 번역, 문서별 요약, 레코드별 검증처럼 서로 상태를 공유할 필요가 없는 작업에 적합합니다.
언제 사용하나요?
- 배열에 담긴 모든 항목을 같은 방식으로 처리할 때
- 처리량을 높이기 위해 여러 항목을 동시에 실행할 때
- 일부 항목이 실패해도 나머지 항목을 계속 처리해야 할 때
Iteration은 입력 배열의 항목 수만큼 본문을 실행합니다. 이전 회차의 값을 갱신하며 조건을 만족할 때까지 반복하려면 Loop를 사용하세요.
입력
| 입력 | 설명 |
|---|---|
| 입력 | 반복할 배열입니다. 루트 Input에서 Iteration에 도달하기 전에 실행되는 상위 노드의 배열만 선택할 수 있습니다. |
item | 현재 처리 중인 배열 항목입니다. Iteration 내부 노드에서만 참조할 수 있습니다. |
index | 현재 항목의 0부터 시작하는 순번입니다. Iteration 내부 노드에서만 참조할 수 있습니다. |
입력 배열을 만드는 노드는 Iteration보다 앞선 실행 경로에 있어야 하며, 해당 경로가 루트 Input에서 Iteration을 거치지 않고 도달 가능해야 합니다.
주요 설정
| 설정 | 설명 |
|---|---|
| 출력 변수 | 각 항목의 실행이 끝난 뒤 수집할 내부 노드의 명명된 출력 필드를 선택합니다. |
| 병렬 모드 | 끄면 항목을 순서대로 실행하고, 켜면 여러 항목을 동시에 실행합니다. |
| 최대 병렬 처리 | 병렬 모드에서 동시에 실행할 항목 수입니다. 1~10 사이의 정수만 사용할 수 있습니다. |
| 오류 응답 방법 | 항목 하나가 실패했을 때 전체 Iteration을 어떻게 처리할지 정합니다. |
| 출력 평탄화 | 선택한 출력이 배열일 때 항목별 배열을 하나의 배열로 합칩니다. |
오류 응답 방법은 다음과 같습니다.
| 정책 | 동작 |
|---|---|
| 종료 | 항목 하나가 실패하면 Iteration 전체를 실패로 종료합니다. |
| 오류 시 계속(null 유지) | 실패한 항목의 자리에 null을 두고 다음 항목을 계속 처리합니다. |
| 비정상 출력 제거 | 실패한 항목의 결과를 출력 배열에서 제외하고 나머지 항목을 계속 처리합니다. |
병렬 실행 여부와 관계없이 수집된 결과는 입력 항목의 순서를 따릅니다. 먼저 끝난 항목이 출력 앞쪽으로 이동하지 않습니다.
출력
Iteration은 output이라는 배열을 반환합니다.
json
{
"output": ["첫 번째 결과", "두 번째 결과", "세 번째 결과"]
}출력 평탄화를 끄면 각 항목에서 선택한 값이 배열의 한 요소가 됩니다. 예를 들어 각 항목의 결과가 배열이면 결과는 중첩 배열입니다.
json
{
"output": [["a", "b"], ["c"]]
}출력 평탄화를 켜고 모든 정상 결과가 배열이면 한 단계 평탄화됩니다.
json
{
"output": ["a", "b", "c"]
}평탄화는 모든 null이 아닌 결과가 배열일 때만 적용됩니다. 이때 오류 시 계속 정책으로 생긴 null은 평탄화 결과에서 제외됩니다. 결과 중 하나라도 배열이 아니거나 정상 결과가 하나도 없으면 원래 구조를 유지합니다.
연결과 배치 제약
- Iteration 본문에는 LLM, Tool, Retriever, HTTP, Template, Code, Transform, Condition 노드를 배치할 수 있습니다.
- Input, Output, Note, Variable Assigner, Exit Loop, 다른 Iteration이나 Loop는 본문에 배치할 수 없습니다.
- Iteration과 바깥 워크플로우 사이를 직접 가로지르는 연결선은 만들 수 없습니다. 바깥 값은 변수 참조로 읽고, 바깥에서는 Iteration의
output을 참조합니다. - 본문에는 시작 노드가 하나 이상 있어야 하며, 모든 내부 노드는 시작 노드에서 도달할 수 있어야 합니다.
- 본문은 순환 연결이 없는 DAG여야 합니다. Condition의 각 분기에는 후속 연결을 하나만 둘 수 있습니다.
- Iteration이나 Loop 안에 또 다른 반복 컨테이너를 중첩할 수 없습니다.
예시
고객 리뷰 배열을 항목별로 번역하는 워크플로우를 구성해 보겠습니다.
- Input 또는 Code 노드에서
reviews배열을 만듭니다. - Iteration의 입력으로
reviews를 선택합니다. - 본문에 LLM 노드를 추가하고 프롬프트에서 Iteration의
item을 참조합니다. - LLM 노드의
answer를 출력 변수로 선택합니다. - 병렬 모드를 켜고 최대 병렬 처리를
3으로 설정합니다. - 일부 번역 실패를 허용하려면 오류 응답 방법을 오류 시 계속로 설정합니다.
입력이 ['안녕하세요', '감사합니다']라면 output에는 입력 순서대로 두 번역 결과가 담깁니다.
주의사항
- 최대 병렬 처리 값을 높이면 처리 시간은 줄어들 수 있지만, 동시에 호출되는 모델·API의 속도 제한과 비용도 함께 확인해야 합니다.
- 병렬 항목은 실행 컨텍스트를 공유하지 않습니다. 한 항목의 내부 노드 결과를 다른 항목에서 누적 상태처럼 사용할 수 없습니다.
- 오류 시 계속은 실패 위치를
null로 보존하지만, 배열 결과를 실제로 평탄화하는 경우에는 해당null이 제거됩니다. - 비정상 출력 제거를 사용하면 출력 배열의 인덱스가 원래 입력 인덱스와 달라질 수 있습니다. 입력 위치가 중요하면
index를 결과에 함께 포함하거나 오류 시 계속을 사용하세요. - 빈 배열을 입력하면 본문을 실행하지 않고 빈
output배열을 반환합니다.