LLM API 호출 시 모델에게 역할을 부여하는 System Message와 모델의 확률 추론 성향을 세밀하게 조율하는 **하이퍼파라미터(Hyperparameter)**를 제어할 수 있습니다.
1. 하이퍼파라미터 용어 사전 (Glossary)
- Temperature (온도): 0.0 ~ 2.0 사이의 값으로, 토큰 확률 분포를 조절합니다. 0에 가까우면 가장 확률이 높은 단어만 선택(정밀성), 1에 가까우면 다양한 단어를 선택(창의성)합니다.
- Top_P (Nucleus Sampling): 누적 확률 상위 P% (예: 0.9 = 상위 90%) 범위 안의 단어 후보군 중에서만 선택합니다.
- Max Tokens: 단일 API 응답으로 모델이 출력할 수 있는 최대 토큰 자원 한계입니다.
- Presence Penalty (존재 패널티): 이미 생성된 단어가 다시 등장하는 것에 감점을 주어 새로운 주제와 단어로 전환되도록 유도합니다. (0.0 ~ 2.0)
- Frequency Penalty (빈도 패널티): 텍스트 내에서 특정 단어가 반복되는 빈도수에 비례해 감점을 부여하여 동일 단어 도배를 막습니다. (0.0 ~ 2.0)
2. 작업 목적별 최적 하이퍼파라미터 조합 가이드
| 작업 유형 | Temperature | Top_P | 추천 용도 |
|---|---|---|---|
| 정밀 작업 | 0.0 ~ 0.2 | 0.1 | 수학 문제 풀이, 파이썬 코딩, JSON 추출, 번역, 계약서 분석 |
| 일반 대화 | 0.5 ~ 0.7 | 0.9 | 고객 상담 챗봇, 일반 질의응답, 요약 |
| 창의적 작업 | 0.9 ~ 1.2 | 0.95 | 마케팅 카피라이팅, 소설 작성, 브레인스토밍 아이디어 |
# 정밀 데이터 추출을 위한 하이퍼파라미터 조율 예시
response = client.chat.completions.create(
model="gpt-4o-mini",
temperature=0.0, # 결정론적(Deterministic) 정답 유도
presence_penalty=0.0,
frequency_penalty=0.5, # 단어 반복 억제
messages=[
{"role": "system", "content": "너는 데이터 추출 전문가야."},
{"role": "user", "content": "텍스트에서 이메일 주소만 정확히 추출해 줘."}
]
)
3. 자주 묻는 질문 (Q&A)
Q. Temperature를 0.0으로 두면 항상 100% 똑같은 답변이 나오나요?
A. 이론적으로는 동일한 입력에 동일한 단어가 나와야 하지만, GPU 병렬 연산의 미세한 부동소수점 오차로 인해 실제로는 약간의 차이가 발생할 수 있습니다. (완벽 고정을 위해 seed 파라미터 활용 가능)