# 최적 선택

> 여러 결과를 하나로 만드세요. AI 심사가 내 기준에 따라 가장 좋은 이미지나 텍스트를 고르거나, 노드가 결과를 합치고, 세고, 투표하고, 병합합니다.

Source: https://nodaro.ai/ko/docs/nodes/automate/choose-best

**최적 선택** 노드는 여러 후보 결과를 하나로 만듭니다. 일괄 처리의 결과나, [수집](https://nodaro.ai/docs/nodes/automate/collect)을 거친 여러 노드의 결과를 연결하세요. 그러면 AI 심사가 내 기준에 따라 가장 좋은 하나를 고르거나, 노드가 대신 결과를 합치고, 세고, 투표하고, 병합합니다. 노드에는 선택된 결과, 후보 중 그 결과의 위치, 심사 이유가 표시됩니다.

- Found in: Automate › Lists & Batching
- Output: text
- API type: `reduce`

## 사용 시기
- 커버 변형 다섯 개를 생성하고, 가장 좋은 하나만 다음 단계로 보내고 싶을 때. 예를 들어 [Telegram 게시물](https://nodaro.ai/docs/nodes/publish/telegram-post)로 보낼 때입니다.
- 같은 질문을 여러 번 하고 가장 흔한 답을 얻고 싶을 때.
- 일괄 처리 결과가 실제로 몇 개 도착했는지 알고 싶을 때.
- 일괄 처리의 텍스트를 하나로 합치거나, JSON 객체를 하나로 병합하고 싶을 때.

## 빠른 시작
### 노드 추가
캔버스에서 Tab 키를 누르고 **자동화 › 목록 및 일괄 처리 › 최적 선택**을 선택하세요.

### 후보 연결
후보를 **후보** 입력에 연결하세요. 후보는 [이미지 생성](https://nodaro.ai/docs/nodes/image/generate-image)처럼 [목록](https://nodaro.ai/docs/nodes/automate/list)의 행마다 한 번씩 실행되는 노드에서 오거나, 여러 개의 별도 노드를 모으는 [수집](https://nodaro.ai/docs/nodes/automate/collect)에서 올 수 있습니다.

### 처리 방법 선택
설정 패널을 여세요. **후보 처리 방법** 아래에서 새 노드의 기본값인 **AI가 최적의 후보 선택**을 그대로 두거나 다른 옵션을 고르세요. AI 심사를 쓸 때는 **판단 기준** 아래에 우승작의 조건을 설명하고, 후보가 그림이면 **후보 유형**을 **이미지**로 설정하세요.

### 실행
최적 선택은 모든 후보가 준비된 뒤 한 번 실행됩니다. 노드에 우승작과 심사 이유가 표시되고, **후보** 탭에 모든 후보가 나열됩니다.

Workflow: 프롬프트 다섯 개로 커버 다섯 개를 만들고, 최적 선택이 가장 좋은 하나를 남겨, 그 커버만 게시합니다.

- 목록 → 이미지 생성 (프롬프트 · 개별)
- 이미지 생성 → 최적 선택 (후보)
- 최적 선택 → Telegram 게시물

## 입력과 출력
| 입력 또는 출력 | 받거나 보내는 것 | 기능 |
| --- | --- | --- |
| **후보** | 모든 결과: 텍스트, 이미지·동영상·오디오 링크, JSON | 검토할 모든 후보입니다. 여러 연결의 결과가 하나의 묶음으로 합쳐집니다. |
| **결과** | 값 하나 | 선택되거나 합쳐진 결과입니다. 이미지를 고르면 이미지 링크를, **JSON 객체 병합**은 JSON 텍스트를, **개수 세기**는 숫자를 보냅니다. |

결과는 값 하나입니다. 이 결과로 새 일괄 처리를 시작하려면 [텍스트 분할](https://nodaro.ai/docs/nodes/automate/split-text)이나 [목록](https://nodaro.ai/docs/nodes/automate/list)을 거치세요.

## 후보 처리 방법
| 옵션 | 사용 시기 | 크레딧 |
| --- | --- | --- |
| **AI가 최적의 후보 선택** | AI 심사가 모든 후보를 내 기준과 비교해 하나를 골라야 할 때. | 심사 모델 등급에 따라 4, 11, 28 |
| **하나의 텍스트로 합치기** | 모든 후보를 구분자로 나눠 텍스트 하나에 담고 싶을 때. | 무료 |
| **내용이 있는 첫 번째 후보** | 비어 있지 않은 첫 번째 후보가 필요할 때. | 무료 |
| **개수 세기** | 후보가 몇 개 도착했는지 알고 싶을 때. | 무료 |
| **가장 많이 나온 답변** | 가장 자주 나오는 후보가 필요할 때. 동점이면 먼저 나온 후보가 선택됩니다. | 무료 |
| **JSON 객체 병합** | JSON 객체를 하나의 객체로 합치고 싶을 때. | 무료 |

옵션 목록에는 노드에서 선택한 심사 모델의 가격이 표시됩니다.

### AI가 최적의 후보 선택
심사 모델이 모든 후보를 내 기준과 비교합니다. 우승작의 위치와 한 문장짜리 이유로 답하며, 이 내용은 노드와 **후보** 탭에 표시됩니다.

| 설정 | 기능 |
| --- | --- |
| **AI 모델** | 심사 모델입니다. 모든 AI 텍스트 노드와 같은 모델 목록이며, 이코노미, 표준, 프리미엄 등급으로 나뉩니다. 새 노드는 이 작업의 표준 등급 기본 모델을 사용합니다. |
| **판단 기준** | 우승작이 어떤 모습이어야 하는지 설명합니다. 예: “어두운 에디토리얼 Instagram 피드에서 가장 눈길을 끄는 커버 — 초점이 하나로 분명하고, 썸네일로도 잘 보일 것.” |
| **후보 유형** | 기본값인 **텍스트** 또는 **이미지**입니다. 같은 스위치가 노드에도 모델 옆에 있습니다. |

그림에는 **이미지**를 고르세요. **텍스트**로 두면 심사 모델이 이미지 링크만 텍스트로 읽고 그것을 비교합니다. 실제로 고른 것처럼 보이지만 그렇지 않습니다.

| 심사 모델 등급 | 실행당 크레딧 |
| --- | --- |
| 이코노미 | 4 |
| 표준(기본값) | 11 |
| 프리미엄 | 28 |

이코노미 모델에는 Gemini Flash와 Haiku가, 프리미엄 모델에는 Opus가 있습니다. 예를 들어 프롬프트 5개짜리 목록이 이미지 생성을 실행하고, 그 뒤에 기본 표준 심사 모델을 쓰는 최적 선택이 이어진다고 해 봅시다. 워크플로 비용은 이미지 실행 5번에 11크레딧을 더한 값입니다. 프리미엄 심사 모델이면 심사 비용이 대신 28크레딧, 이코노미 심사 모델이면 4크레딧입니다.

### 무료 옵션
| 옵션 | 설정 |
| --- | --- |
| **하나의 텍스트로 합치기** | **구분자** — 두 후보 사이에 넣는 텍스트입니다. 기본값은 빈 줄입니다. |
| **내용이 있는 첫 번째 후보** | 설정할 것이 없습니다. |
| **개수 세기** | 설정할 것이 없습니다. |
| **가장 많이 나온 답변** | **대소문자가 다르면 다른 답으로 취급** — 기본값은 꺼짐이므로 `Yes`와 `yes`는 같은 답으로 셉니다. |
| **JSON 객체 병합** | **병합 방식** — 기본값인 <strong>깊은 병합(중첩된 객체 포함)</strong>은 중첩된 객체도 필드별로 병합합니다. <strong>얕은 병합(최상위만)</strong>은 최상위 필드를 통째로 바꾸며, 뒤에 오는 후보가 우선합니다. |

## 노드에 표시되는 내용
노드에는 선택한 옵션과 심사 모델이 표시되며, **판단 기준**이나 **구분자** 같은 주요 설정을 그 자리에서 편집할 수 있습니다. 실행 후에는 후보가 격자로 표시되고 우승작이 표시되며, 그 아래에 결과와 심사 이유가 나옵니다.

설정 패널에는 탭이 두 개 있습니다. **설정** 탭에는 설정이 있습니다. **후보** 탭은 실행 후 열리며, **요약**, **선택한 이유** 아래의 심사 이유, 선택된 후보가 표시된 모든 후보를 보여 줍니다.

## 일부 후보가 실패한 경우
일괄 처리에서 실패한 실행은 빈 후보를 남깁니다. 최적 선택은 결정하기 전에 빈 후보를 모두 제외하므로, 모든 옵션은 도착한 결과만으로 작동합니다. 예를 들어 이미지 10개 중 3개가 실패하면 **개수 세기**의 결과는 10이 아니라 7입니다.

모든 후보가 비어 있으면 옵션에 따라 결과가 다릅니다.

| 옵션 | 모든 후보가 비어 있을 때 |
| --- | --- |
| **하나의 텍스트로 합치기** | 오류 없이 빈 텍스트를 반환합니다. |
| **개수 세기** | 오류 없이 0을 반환합니다. |
| **내용이 있는 첫 번째 후보**, **가장 많이 나온 답변**, **JSON 객체 병합**, **AI가 최적의 후보 선택** | `All upstream iterations failed; nothing to reduce.`(앞 단계의 반복이 모두 실패해 처리할 것이 없음) 오류와 함께 멈춥니다. |

## API에서 사용
최적 선택은 API 타입 `reduce`로 코드와 AI 어시스턴트에서 쓸 수 있습니다. `POST /v1/reduce`, MCP 도구 `reduce`, SDK의 `client.reduce`입니다. `strategyId`를 `pick-best-llm`, `concat`, `first-non-empty`, `count`, `vote`, `merge-json` 중 하나로 설정하세요. AI 심사에서는 `strategyConfig`가 `criteria`, `inputKind`(`text` 또는 `image-url`), `llmModel`을 받습니다. 알 수 없는 모델은 크레딧이 예약되기 전에 거부됩니다. [단일 노드 실행](https://nodaro.ai/docs/developers/api/nodes)과 [MCP 도구](https://nodaro.ai/docs/mcp/tools)를 참조하세요.

## 팁
- **작업이 아니라 우승작을 설명하세요.** “초점이 하나로 분명하고, 썸네일로도 잘 보일 것”은 심사 모델에 비교할 기준을 줍니다. “가장 좋은 것을 고르세요”는 그렇지 않습니다.
- **중요도에 맞게 심사 모델을 고르세요.** 빠른 초안 선택에는 이코노미 심사 모델로 충분합니다. 중요한 최종 선택에는 프리미엄 심사 모델을 쓰세요.
- **별도 노드는 수집으로 모으세요.** **후보**에 들어오는 여러 연결은 하나로 합쳐집니다. 별도 노드를 한 노드에서 보고 순서를 정하고 싶다면 [수집](https://nodaro.ai/docs/nodes/automate/collect)을 거치세요.
- **대신 텍스트 품질을 확인하세요.** 텍스트 하나를 기준점에 맞춰 채점하려면 [품질 검사](https://nodaro.ai/docs/nodes/automate/qa-check)를 사용하세요.

## 자주 묻는 질문

### 생성한 이미지 여러 장 중 가장 좋은 것을 자동으로 고르려면 어떻게 하나요?

목록으로 구동하는 이미지 생성 노드나 수집 노드를 통해 이미지를 최적 선택에 연결하세요. AI가 최적의 후보 선택을 고르고, 판단 기준 아래에 우승작의 조건을 설명한 뒤, 후보 유형을 이미지로 설정하세요. 심사 모델이 이미지 한 장을 고르고 이유를 한 문장으로 알려 줍니다.

### 최적 선택에는 크레딧이 얼마나 드나요?

AI가 최적의 후보 선택만 크레딧이 듭니다. 심사 모델이 이코노미, 표준, 프리미엄 중 어디에 속하는지에 따라 4, 11, 28크레딧입니다. 나머지 다섯 가지 옵션은 무료입니다. 후보를 만든 노드에는 평소대로 요금이 청구됩니다.

### 왜 후보 유형을 이미지로 설정해야 하나요?

텍스트로 두면 심사 모델이 이미지 링크만 텍스트로 읽고 그것을 비교합니다. 실제로 고른 것처럼 보이지만 그렇지 않습니다. 이미지로 두면 심사 모델이 모든 그림을 직접 봅니다.

### 일부 후보가 실패하면 어떻게 되나요?

빈 후보는 먼저 제외되므로, 개수 세기는 도착한 결과만 셉니다. 모든 후보가 비어 있으면 하나의 텍스트로 합치기는 빈 텍스트를, 개수 세기는 0을 반환하고, 나머지 옵션은 오류와 함께 멈춥니다.

### API나 MCP에서 최적 선택을 쓸 수 있나요?

네. 이 노드의 API 타입은 reduce입니다. 같은 여섯 가지 옵션으로 POST /v1/reduce, MCP 도구 reduce, 또는 SDK의 client.reduce를 사용하세요.
