ChatGPT API의 강력함은 다양한 파라미터를 통해 출력 결과를 조정하고 최적화할 수 있다는 점에 있다. 이 섹션에서는 이러한 파라미터들이 어떻게 작동하는지, 그리고 특정 요구사항에 맞는 최적의 결과를 얻기 위해 어떻게 조합할 수 있는지에 대해 자세히 설명한다.

1. Temperature

Temperature 파라미터는 출력의 무작위성을 조정하는 데 사용된다. 값이 낮을수록 모델의 응답이 더 결정론적이 되며, 높은 값은 응답을 더 다양하고 창의적으로 만든다.

P(x) = \frac{\exp\left(\frac{z(x)}{T}\right)}{\sum_{x'} \exp\left(\frac{z(x')}{T}\right)}

여기서 P(x)는 다음 단어로 선택될 확률을 의미하며, z(x)는 단어 x의 로짓(logit) 값이다. T는 temperature 파라미터이다.

2. Top-p (Nucleus Sampling)

Top-p는 Nucleus Sampling이라고도 하며, 이 파라미터는 누적 확률이 p 이하가 될 때까지 높은 확률의 단어들을 샘플링한다. 이 방법은 temperature 파라미터와 함께 사용되어 모델의 출력 분포를 조정할 수 있다.

3. Max Tokens

Max Tokens 파라미터는 생성할 텍스트의 최대 길이를 정의한다. 이 파라미터를 통해 응답의 길이를 제어할 수 있다.

4. Frequency Penalty

Frequency Penalty는 동일한 단어의 반복을 줄이기 위해 사용된다. 이 파라미터를 높게 설정하면, 모델은 동일한 단어를 반복해서 사용하는 것을 피하려고 한다.

P(x) \propto \frac{1}{1 + \text{count}(x) \cdot \lambda}

여기서 \text{count}(x)는 단어 x의 등장 횟수이며, \lambda는 frequency penalty 파라미터이다.

5. Presence Penalty

Presence Penalty는 특정 단어가 얼마나 자주 등장했는지에 관계없이 단어가 생성될 확률을 조정한다. 이 파라미터는 새로운 주제를 도입하거나, 모델이 이전에 사용하지 않은 단어를 사용하도록 유도하는 데 유용하다.

P(x) \propto \left(1 + \lambda \cdot \mathbf{1}(x \text{ is present})\right)

여기서 \mathbf{1}(x \text{ is present})는 단어 x가 이미 텍스트에 존재하는지 여부를 나타내는 지시 함수이며, \lambda는 presence penalty 파라미터이다.

6. Stop Sequences

Stop Sequences는 생성된 텍스트를 중지시키기 위한 특정 텍스트 패턴이다. 이 파라미터를 설정하면, 모델은 지정된 패턴이 나타날 때까지 텍스트를 생성하며, 패턴이 발견되면 그 즉시 응답을 종료한다.

7. Best Of

Best Of 파라미터는 모델이 여러 개의 응답을 생성한 다음, 그 중에서 가장 적합한 응답을 선택하여 반환하도록 한다. 이 파라미터를 사용하면 더 높은 품질의 응답을 얻을 수 있다.

8. Logit Bias

Logit Bias는 특정 토큰의 선택 확률을 조정하는 데 사용된다. 이 파라미터를 통해 특정 단어가 더 자주 선택되거나 덜 자주 선택되도록 할 수 있다.

P(x) = \frac{\exp(z(x) + \text{logit\_bias}(x))}{\sum_{x'} \exp(z(x') + \text{logit\_bias}(x'))}

여기서 \text{logit\_bias}(x)는 특정 토큰 x에 적용된 로그 확률 편향이다.

9. Prompt Length and Context

Prompt Length는 모델에 제공되는 입력 텍스트의 길이를 의미하며, 응답의 품질과 관련이 있다. 특히 긴 프롬프트는 모델이 문맥을 더 잘 이해하고, 더욱 일관된 응답을 생성하는 데 도움이 된다.