> ## Documentation Index
> Fetch the complete documentation index at: https://dripart-mintlify-b90d3c69.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 데이터 타입

다음은 가장 중요한 내장 데이터 타입입니다. 또한 [자신만의 데이터 타입을 정의](./more_on_inputs#custom-datatypes)할 수도 있습니다.

데이터 타입은 클라이언트 측에서 워크플로우가 잘못된 형태의 데이터를 노드에 전달하는 것을 방지하는 데 사용됩니다—강력한 타이핑과 비슷합니다.
JavaScript 클라이언트 측 코드는 일반적으로 노드 출력을 다른 데이터 타입의 입력에 연결하지 못하도록 합니다.
다만 아래에 몇 가지 예외 사항이 나와 있습니다.

## Comfy 데이터 타입

### COMBO

* `INPUT_TYPES`에 추가적인 파라미터 없음

* Python 데이터 타입: `list[str]`로 정의되며, 출력 값은 `str`입니다.

드롭다운 메뉴 위젯을 나타냅니다.
다른 데이터 타입과 달리, `COMBO`는 `INPUT_TYPES`에서 `str`로 지정되지 않고 드롭다운 목록의 옵션에 해당하는 `list[str]`로 지정되며, 기본적으로 첫 번째 옵션이 선택됩니다.

`COMBO` 입력은 종종 런타임에 동적으로 생성됩니다. 예를 들어 내장된 `CheckpointLoaderSimple` 노드에서는 다음과 같이 찾을 수 있습니다:

```
"ckpt_name": (folder_paths.get_filename_list("checkpoints"), )
```

또는 고정된 옵션 목록일 수도 있습니다:

```
"play_sound": (["no","yes"], {}),
```

### 프리미티브 및 리루트

프리미티브 및 리루트 노드는 클라이언트 측에만 존재합니다. 이들은 본질적인 데이터 타입을 갖지 않지만, 연결될 때 연결된 입력이나 출력의 데이터 타입을 따릅니다(그래서 `*` 입력에 연결할 수 없는 것입니다...).

## Python 데이터 타입

### INT

* `INPUT_TYPES`에 추가적인 파라미터:

  * `default`는 필수입니다.

  * `min`과 `max`는 선택적입니다.

* Python 데이터 타입 `int`

### FLOAT

* `INPUT_TYPES`에 추가적인 파라미터:

  * `default`는 필수입니다.

  * `min`, `max`, `step`는 선택적입니다.

* Python 데이터 타입 `float`

### STRING

* `INPUT_TYPES`에 추가적인 파라미터:

  * `default`는 필수입니다.

* Python 데이터 타입 `str`

### BOOLEAN

* `INPUT_TYPES`에 추가적인 파라미터:

  * `default`는 필수입니다.

* Python 데이터 타입 `bool`

## 텐서 데이터 타입

### IMAGE

* `INPUT_TYPES`에 추가적인 파라미터 없음

* Python 데이터 타입 `torch.Tensor`이며, *shape*는 \[B,H,W,C]입니다.

`B`개의 이미지, 높이 `H`, 너비 `W`, 채널 수 `C`(일반적으로 `RGB`의 경우 `C=3`)의 배치입니다.

### LATENT

* `INPUT_TYPES`에 추가적인 파라미터 없음

* Python 데이터 타입 `dict`이며, *shape*는 \[B,C,H,W]인 `torch.Tensor`를 포함합니다.

전달되는 `dict`에는 `samples`라는 키가 있으며, 이는 *shape* \[B,C,H,W]인 `torch.Tensor`로, `B`개의 잠재 변수 배치를 나타내며, 채널 수는 `C`(일반적으로 기존 안정적 확산 모델의 경우 `C=4`), 높이 `H`, 너비 `W`입니다.

높이와 너비는 해당 이미지 크기의 1/8입니다(이는 Empty Latent Image 노드에서 설정한 값입니다).

`dict`의 다른 항목에는 잠재 마스크 같은 것이 포함됩니다.

{/* TODO 새로운 SD 모델은 C 값이 다를 수 있나? */}

### MASK

* `INPUT_TYPES`에 추가적인 파라미터 없음

* Python 데이터 타입 `torch.Tensor`이며, *shape*는 \[H,W] 또는 \[B,C,H,W]입니다.

### AUDIO

* `INPUT_TYPES`에 추가적인 파라미터 없음

* Python 데이터 타입 `dict`이며, *shape*는 \[B, C, T]인 `torch.Tensor`와 샘플 속도를 포함합니다.

전달되는 `dict`에는 `waveform`이라는 키가 있으며, 이는 *shape* \[B, C, T]인 `torch.Tensor`로, `B`개의 오디오 샘플 배치를 나타내며, 채널 수는 `C`(`C=2` 스테레오, `C=1` 모노), 시간 단계 수는 `T`입니다(즉, 오디오 샘플의 개수).

`dict`에는 또 다른 키인 `sample_rate`가 있으며, 이는 오디오의 샘플링 속도를 나타냅니다.

## 맞춤형 샘플링 데이터 타입

### Noise

`NOISE` 데이터 타입은 노이즈의 *소스*를 나타냅니다(실제 노이즈 자체가 아님). 이는 `generate_noise(self, input_latent:Tensor) -> Tensor` 시그니처를 가진 노이즈 생성 메서드와 `seed:Optional[int]` 속성을 제공하는 모든 Python 객체로 표현될 수 있습니다.

<Tip> `seed`는 `SamplerCustomAdvanced`의 `sample` 가이더에 전달되지만, 표준 가이더에서는 사용되지 않는 것으로 보입니다. 이는 선택적이므로 일반적으로 None으로 설정할 수 있습니다.</Tip>

노이즈를 추가할 때, 잠재 변수가 이 메서드에 전달되며, 이는 동일한 shape의 노이즈를 포함한 `Tensor`를 반환해야 합니다.

[노이즈 혼합 예시](./snippets#creating-noise-variations) 참조

### Sampler

`SAMPLER` 데이터 타입은 샘플러를 나타내며, 이는 `sample` 메서드를 제공하는 Python 객체로 표현됩니다. 안정적 확산 샘플링은 이 가이드의 범위를 벗어납니다; 이 코드 부분을 자세히 살펴보려면 `comfy/samplers.py`를 참고하세요.

### Sigmas

`SIGMAS` 데이터 타입은 스케줄러가 생성한 샘플링 과정의 각 단계 전후의 시그마 값을 나타냅니다. 이는 길이가 `steps+1`인 1차원 텐서로, 각 요소는 해당 단계 전에 존재할 것으로 예상되는 노이즈를 나타내며, 마지막 값은 최종 단계 이후의 노이즈를 나타냅니다.

20단계와 1의 디노이즈를 가진 `normal` 스케줄러는 SDXL 모델에서 다음과 같은 값을 생성합니다:

```
tensor([14.6146, 10.7468,  8.0815,  6.2049,  4.8557,  
         3.8654,  3.1238,  2.5572,  2.1157,  1.7648,  
         1.4806,  1.2458,  1.0481,  0.8784,  0.7297,  
         0.5964,  0.4736,  0.3555,  0.2322,  0.0292,  0.0000])
```

<Tip>시그마의 시작값은 모델에 따라 다르므로, 스케줄러 노드는 SIGMAS 출력을 생성하려면 `MODEL` 입력이 필요합니다</Tip>

### Guider

`GUIDER`는 '안내'된 프롬프트나 기타 조건부 형태에 의해 '유도'된 디노이징 과정의 일반화입니다. Comfy에서 가이더는 `callable` Python 객체로 표현되며, `__call__(*args, **kwargs)` 메서드를 제공하고 이 메서드는 샘플에 의해 호출됩니다.

`__call__` 메서드는 (`args[0]`에) 노이즈가 있는 잠재 변수 배치(`tensor `\[B,C,H,W]`)를 받아들여, 동일한 shape의 노이즈 예측값(`Tensor\`)을 반환합니다.

## 모델 데이터 타입

안정적 확산 모델을 위한 더 많은 기술적 데이터 타입이 있습니다. 가장 중요한 것은 `MODEL`, `CLIP`, `VAE`, 그리고 `CONDITIONING`입니다. 이들과 함께 작업하는 것은 (당분간) 이 가이드의 범위를 벗어납니다! {/* TODO 하지만 아마도 영원히는 아닐 겁니다 */}

## 추가 파라미터

아래는 입력 정의의 '추가 옵션' 부분에서 사용할 수 있는 공식 지원 키들의 목록입니다.

<Warning>자신만의 맞춤 위젯을 위해 추가 키를 사용할 수 있지만, 아래 키들을 다른 용도로 재사용해서는 안 됩니다.</Warning>

| 키                | 설명                                                                                                            |
| ---------------- | ------------------------------------------------------------------------------------------------------------- |
| `default`        | 위젯의 기본값                                                                                                       |
| `min`            | 숫자(`FLOAT` 또는 `INT`)의 최소값                                                                                     |
| `max`            | 숫자(`FLOAT` 또는 `INT`)의 최대값                                                                                     |
| `step`           | 위젯을 증가하거나 감소시키는 양                                                                                             |
| `label_on`       | bool이 `True`일 때 UI에 사용할 라벨(`BOOL`)                                                                            |
| `label_off`      | bool이 `False`일 때 UI에 사용할 라벨(`BOOL`)                                                                           |
| `defaultInput`   | 지원되는 위젯 대신 입력 소켓을 기본값으로 사용합니다                                                                                 |
| `forceInput`     | `defaultInput`와 동시에 위젯으로 변환하는 것을 허용하지 않습니다                                                                    |
| `multiline`      | 다중행 텍스트 박스(`STRING`)를 사용합니다                                                                                   |
| `placeholder`    | 비어 있을 때 UI에 표시할 자리표시 텍스트(`STRING`)                                                                            |
| `dynamicPrompts` | 프론트엔드가 동적 프롬프트를 평가하도록 만듭니다                                                                                    |
| `lazy`           | 이 입력이 [지연 평가](./lazy_evaluation)를 사용한다고 선언합니다                                                                 |
| `rawLink`        | 링크가 존재할 때, 평가된 값을 받는 대신 링크를 받게 됩니다(예: `["nodeId", <outputIndex>]`). 주로 노드가 [노드 확장](./expansion)을 사용할 때 유용합니다. |
