API (Application Programming Interface)

소프트웨어 애플리케이션 간의 상호작용을 가능하게 하는 인터페이스로, 특정 기능을 수행하기 위해 제공되는 일련의 프로토콜과 도구들을 의미한다. OpenAI의 API는 ChatGPT 모델에 접근하여 텍스트 생성, 질의응답 등을 수행할 수 있도록 지원한다.

Rate Limit

API 사용 시 정해진 시간 내에 허용되는 최대 요청 수를 의미한다. OpenAI API에서는 주어진 시간 동안 호출할 수 있는 API 요청의 수가 제한되며, 이 한도를 초과할 경우 추가 요청이 제한될 수 있다. Rate Limit을 초과하면 주로 HTTP 상태 코드 429가 반환된다.

Prompt (프롬프트)

ChatGPT API에 전달되는 입력값으로, 생성할 텍스트의 기초가 되는 문장이나 질문이다. 효과적인 프롬프트는 원하는 결과를 얻기 위해 중요한 역할을 한다. 프롬프트는 간단할 수도 있고, 매우 구체적일 수도 있으며, 프롬프트 엔지니어링을 통해 결과를 조정할 수 있다.

Token (토큰)

텍스트를 작은 단위로 나눈 것으로, ChatGPT API는 텍스트를 처리할 때 단어, 어절, 구두점 등을 모두 포함한 토큰 단위로 계산한다. 예를 들어, "ChatGPT is amazing!"이라는 문장은 4개의 토큰으로 나눌 수 있다: ["Chat", "GPT", " is", " amazing!"]. OpenAI API의 요금은 사용된 토큰 수에 따라 결정된다.

Latency (지연 시간)

요청과 응답 사이에 걸리는 시간으로, API가 요청을 처리하고 응답을 반환하는 데 소요되는 시간을 의미한다. 성능 최적화를 위해서는 Latency를 최소화하는 것이 중요하다.

Fine-tuning (파인 튜닝)

기존의 언어 모델을 특정 용도에 맞게 조정하는 과정을 의미한다. Fine-tuning을 통해 모델이 특정 데이터셋에 대한 성능을 향상시키거나, 특화된 작업에 더 적합하도록 만들 수 있다.

Embedding (임베딩)

텍스트 데이터를 고차원 공간에 매핑하는 과정으로, 주로 텍스트를 벡터로 변환하여 기계 학습 모델이 처리할 수 있도록 한다. 각 단어 또는 문장은 벡터 공간에서 고유한 위치를 가지며, 이 벡터는 텍스트 간의 의미적 유사성을 반영한다. 예를 들어, 두 단어가 의미적으로 비슷하면 벡터 공간에서 서로 가까운 위치에 놓인다.

\mathbf{v}_{\text{apple}} \approx \mathbf{v}_{\text{fruit}}

여기서 \mathbf{v}_{\text{apple}}\mathbf{v}_{\text{fruit}}는 각각 "apple"과 "fruit"에 대한 벡터다.

JSON (JavaScript Object Notation)

데이터를 키-값 쌍으로 표현하는 경량 데이터 교환 형식으로, 주로 API 요청 및 응답에서 데이터 구조를 전달할 때 사용된다. 예를 들어, ChatGPT API에서 프롬프트와 관련된 데이터를 JSON 형식으로 주고받는다. 다음은 JSON의 간단한 예시다:

{
  "model": "gpt-4",
  "prompt": "Hello, how are you?",
  "temperature": 0.7
}

Hyperparameter (하이퍼파라미터)

모델 학습 시 사용자가 직접 설정해야 하는 변수들로, 학습 프로세스에 큰 영향을 미친다. 예를 들어, OpenAI의 ChatGPT 모델을 호출할 때 설정할 수 있는 temperature, max_tokens 등이 하이퍼파라미터에 해당한다.

P(\text{token}_i) = \frac{\exp(\frac{z_i}{T})}{\sum_j \exp(\frac{z_j}{T})}

여기서 T는 temperature를 나타내며, z_i는 각 토큰에 대한 점수이다.

Completion (완성)

API에서 제공한 프롬프트에 대해 생성된 텍스트 결과물을 의미한다. 예를 들어, 사용자가 "The weather today is"라는 프롬프트를 입력하면 모델이 이에 대한 텍스트를 완성하게 된다. 이 때 반환된 텍스트가 "sunny with a chance of rain."이라면, 이 전체가 Completion이다.

Model (모델)

OpenAI가 개발한 GPT(Generative Pre-trained Transformer)와 같은 언어 모델을 의미한다. ChatGPT API는 다양한 버전의 GPT 모델을 제공하며, 각 모델은 성능과 용도에 따라 다르다. 모델은 대규모 텍스트 데이터셋을 기반으로 학습하며, 자연어 생성, 질의응답, 요약 등의 작업을 수행할 수 있다.

Tokenization (토큰화)

텍스트 데이터를 모델이 이해할 수 있는 토큰 단위로 변환하는 과정이다. 텍스트가 주어지면 이를 단어, 구두점, 혹은 그보다 작은 의미 단위로 분리한다. 예를 들어, "Hello, world!"라는 문장은 ["Hello", ",", " world", "!"]와 같은 토큰으로 분리될 수 있다.

Zero-shot Learning

모델이 학습하지 않은 새로운 작업에 대해 적응하여 수행하는 능력을 의미한다. 예를 들어, 특정 주제에 대한 질문에 대해 직접 학습하지 않았더라도, GPT 모델은 학습된 일반적인 언어 패턴을 사용하여 그 질문에 대한 답변을 생성할 수 있다.

Few-shot Learning

모델이 새로운 작업을 수행할 때 몇 개의 예시만 주어졌을 때도 적응하는 능력을 의미한다. ChatGPT API에서는 프롬프트에 여러 개의 예시를 포함하여 모델이 해당 작업을 더 잘 수행할 수 있도록 할 수 있다.

Multi-turn Conversation

대화형 API에서 여러 차례의 대화 흐름을 처리하는 방식으로, 이전의 대화 맥락을 기억하고 이에 기반하여 응답을 생성하는 기능을 의미한다. 이를 통해 보다 자연스러운 대화형 애플리케이션을 구현할 수 있다.

API Key

API를 사용할 때 인증을 위해 필요한 고유한 키로, OpenAI에서 제공된다. API 키를 통해 사용자는 OpenAI의 서비스를 접근할 수 있으며, 이를 통해 사용자의 요청을 식별하고 사용량을 추적할 수 있다.

Payload

API 요청 시 서버로 보내는 데이터 패킷을 의미하며, 주로 JSON 형식으로 제공된다. ChatGPT API에서 프롬프트와 같은 주요 입력값은 요청의 Payload에 포함된다.

Response (응답)

API에 요청을 보낸 후 서버로부터 받은 데이터를 의미한다. OpenAI의 API는 주로 JSON 형식으로 응답하며, 이 응답에는 생성된 텍스트, 요청 상태 코드 등이 포함된다.

Throttling

API 호출 빈도가 일정 한도를 초과할 때, 서버에서 추가 요청을 제한하거나 지연시키는 것을 의미한다. 주로 Rate Limit에 도달했을 때 발생하며, 서버 성능을 보호하고 공정한 리소스 사용을 보장하기 위해 사용된다.

Max Tokens

생성할 텍스트의 최대 길이를 설정하는 하이퍼파라미터로, ChatGPT API에 요청할 때 사용할 수 있다. max_tokens 값은 프롬프트와 응답의 총합 토큰 수로 계산된다. 예를 들어, 프롬프트가 50 토큰을 차지하고 max_tokens=100으로 설정하면, 응답은 최대 50개의 토큰으로 제한된다.

\text{Total Tokens} = \text{Tokens in Prompt} + \text{Tokens in Completion}

Temperature

모델의 출력을 결정할 때 무작위성을 제어하는 파라미터로, 낮은 값은 더 결정론적인 출력을, 높은 값은 더 무작위적인 출력을 생성한다. 일반적으로 0과 1 사이의 값을 사용하며, 높을수록 다양한 출력을 생성할 가능성이 높아진다.

Top-p (Nucleus Sampling)

출력 후보에서 상위 p\%에 속하는 토큰들만을 선택하여 결과를 생성하는 샘플링 방법이다. 예를 들어, top_p=0.9로 설정하면, 누적 확률이 90%에 해당하는 후보군에서만 출력을 생성한다. 이 방법은 다양한 응답을 생성하면서도 지나치게 무작위적이지 않은 결과를 얻기 위해 사용된다.

Logits

모델이 각 토큰에 대해 예측하는 확률 분포의 전 단계 값으로, 모델은 이 값을 사용하여 토큰의 선택 확률을 계산한다. Logits 값이 높을수록 해당 토큰이 선택될 확률이 높아진다. Softmax 함수가 Logits를 확률로 변환하는 데 사용된다.

P(\text{token}_i) = \frac{\exp(\text{logit}_i)}{\sum_j \exp(\text{logit}_j)}

Bias (바이어스)

언어 모델이 특정 방향으로 편향된 출력을 생성할 가능성을 조정하는 파라미터다. 특정 단어가 더 자주 나타나도록 하거나, 반대로 특정 단어의 빈도를 줄일 때 사용된다.