Azure OpenAI를 사용하다 보면 Playground나 API 코드에서 여러 설 정값을 만나게 됩니다. 대표적으로 Temperature, Top-P, Max Tokens, Stop Sequence, Frequency Penalty, Presence Penalty 같은 값들이 있습니다.
처음 보면 “그냥 질문만 보내면 되는 것 아닌가?” 싶지만, 실제 서비스 를 만들 때는 이 매개변수들이 꽤 중요합니다. 같은 모델을 사용하더라도 매개변수 설정에 따라 답변이 더 안정적으로 나오기도 하고, 더 창의적으로 나오기도 하며, 길이가 짧아지거나 반복 표현이 줄어들기도 합니다.
핵심부터 말하면, 모델 매개변 수는 모델의 지식을 바꾸는 설정이 아니라 모델이 답변을 생성하는 방식을 조절하는 설정입니다. 즉, 모델이 무엇을 알고 있는지를 바꾸는 것이 아니라, 알고 있는 내용을 어떤 방식으로 꺼내 말할지를 조절합니다.
1. 모델 매개변수란?
모델 매개변수는 AI가 텍스트를 생성할 때 적용되는 조절값입니다. 조 금 더 쉽게 말하면, 모델에게 답변을 만들 때의 말투, 길이, 다양성, 반복 정도, 종료 조건을 정해주 는 설정입니다.
예를 들어 같은 질문을 했다고 해보겠습니다.
데이터 엔지니어가 하는 일을 쉽게 설명해줘.
이때 매개변수 설정에 따라 답변은 이렇게 달라질 수 있습니다.

설정 방향 결과 느낌
| 안정적인 설정 | 교과서처럼 정리된 답변, 예측 가능한 문장 |
| 창의적인 설정 | 비유와 다양한 표현이 섞인 답변 |
| 짧은 길이 제한 | 핵심만 간단히 답변 |
| 반복 억제 설정 | 같은 단어나 표현을 덜 반복함 |
따라서 모델 매개변수는 단순한 부가 옵션이 아니라, 실제 서비스 품질 을 조절하는 중요한 도구입니다. 특히 챗봇, 요약 서비스, 코드 생성기, 문서 작성 도우미처럼 사용자에게 직접 답변을 보여주는 서비스에서는 매개변수 설정에 따라 사용자가 느끼는 품질이 크게 달라집니다.
2. Decoding과 Sampling
매개변수를 이해하려면 먼저 Decoding과 Sampling을 알아야 합니다. 어려운 말처럼 보이지만, 핵심은 간단합니다.
Decoding은 모델이 다음 단어를 골라 문장을 만들어가는 과정
Sampling은 여러 후보 단어 중에서 실제로 어떤 단어를 선택할지 정하는 과정
GPT 같은 언어 모델은 문장을 한 번에 완성하지 않습니다. 이전 단어들 을 보고 다음에 올 단어를 하나씩 예측하면서 문장을 만들어갑니다.
오늘 날씨가 → 좋다 오늘 날씨가 → 흐리다 오늘 날씨가 → 따뜻하다
모델은 각 후보 단어에 대해 확률을 계산합니다. 예를 들어 다음과 같은 식입니다.
후보 단어 모델이 계산한 확률
| 좋다 | 0.45 |
| 흐리다 | 0.25 |
| 따뜻하다 | 0.15 |
| 이상하다 | 0.02 |
여기서 무조건 가장 높은 확률의 단어만 고르면 답변은 안정적이지만 매번 비슷해집니다. 반대로 낮은 확률의 단어까지 어느 정도 고려하면 더 다양한 문장이 나올 수 있습니다. 이 선택 방식 을 조절하는 대표적인 매개변수가 바로 Temperature, Top-P, Top-K입니다.
Greedy Decoding과 Sampling의 차이
| Greedy Decoding | 매번 가장 확률이 높은 단어를 선택 | 안정적이지만 단조로울 수 있음 |
| Sampling | 확률에 따라 후보 중 하나를 선택 | 다양하지만 예측이 어려울 수 있음 |
3. Temperature
무작위성을 조절하는 값
온도가 낮은 모델 = 가장 안전하고 확률이 높은 단어선택
온도가 높은 모델 = 상대적으로 확률이 낮은 단어 선택
Temperature 값 답변 특징 적합한 작업
| 낮음 예: 0.1 ~ 0.3 | 일관적이고 예측 가능한 답변 | 코드 생성, 정보 추출, 정형 요약 |
| 중간 예: 0.5 ~ 0.8 | 안정성과 다양성의 균형 | 일반 챗봇, 블로그 초안, 설명문 작성 |
| 높음 예: 1.0 이상 | 창의적이고 다양한 표현 | 아이디어 발상, 카 피라이팅, 창작 |
Temperature는 어떻게 동작할까?

모델은 내부적으로 다음 단어 후보에 점수를 매기고, 이 점수를 확률로 바꿉니다. 이때 자주 등장하는 개념이 Logit과 Softmax입니다.
- Logit: 모델이 각 후보 단어에 매긴 원점수
- Softmax: 원점수를 확률처럼 해석할 수 있게 바꿔주는 함수
- Temperature: Softmax 결과의 분포를 더 날카롭게 또는 부드럽게 만드는 값
낮은 Temperature는 확률 차이를 더 크게 만듭니다. 그래서 원래 높은 확률을 가진 단어가 더 강하게 선택됩니다. 반대로 높은 Temperature는 확률 차이를 완만하게 만들어 다양한 단어가 선택될 여지를 줍니다.
Temperature는 모델에게 “안전하게 말해” 또는 “조금 더 자유롭게 말해”라고 조절하는 설정에 가깝습니다. 정답이 중요한 작업에서는 낮게, 아이디어가 중요한 작업에 서는 조금 높게 설정하는 것이 일반적입니다.
4. Top-P와 Top-K
Top-P와 Top-K도 다음 단어를 고르는 방식을 조절하는 매개변수
Temperature가 확률 분포의 모양을 조절한다면, Top-P와 Top-K는 후보 단어의 범위를 제한
Top-K: 상위 K개 후보만 남기기
Top-K는 말 그대로 확률이 높은 상위 K개의 단어만 후보로 남기는 방식
예를 들어 Top-K를 3으로 설정하면, 모델은 확률이 높은 3개의 후보만 보고 다음 단어를 선택합니다. 나머지 낮은 확률의 단어들은 아예 후보에서 제외됩니다.
후보 단어 확률 Top-K = 3일 때
| 좋다 | 0.45 | 포함 |
| 흐리다 | 0.25 | 포함 |
| 따뜻하다 | 0.15 | 포함 |
| 이상하다 | 0.02 | 제외 |
Top-K는 지나치게 엉뚱한 단어가 선택되는 것을 막는 데 도움이 됩니 다. 다만 너무 낮게 설정하면 답변이 단조로워질 수 있습니다.
Top-P: 누적 확률 기준으로 후보 정하기
Top-P는 Nucleus Sampling이라고도 부릅니다.
상위 몇 개를 고정적으로 남기는 Top-K와 달리, Top-P는 누적 확률이 일정 기준에 도달할 때까지 후보를 남깁니다.
예를 들어 Top-P가 0.8이라면, 확률이 높은 단어부터 더해가면서 누적 확률이 0.8에 도달할 때까지의 후보만 사용합니다.
후보 단어 확률 누적 확률 Top-P = 0.8일 때
| 좋다 | 0.45 | 0.45 | 포함 |
| 흐리다 | 0.25 | 0.70 | 포함 |
| 따뜻하다 | 0.15 | 0.85 | 포함 후 후보군 확정 |
| 이상하다 | 0.02 | 0.87 | 제외 |
Top-P의 장점은 상황에 따라 후보 수가 유연하게 달라진다는 점입니 다. 확률이 한 단어에 몰려 있으면 후보 수가 적어지고, 여러 단어에 고르게 퍼져 있으면 후보 수가 많아집니다.
5. Temperature vs Top-P
Temperature와 Top-P는 둘 다 답변의 다양성과 관련이 있습니다. 그 래서 처음에는 둘의 차이가 헷갈리기 쉽습니다. 하지만 조절하는 대상이 다릅니다.
| 구분 | Temperature | Top-K |
| 조절 대상 | 확률 분포의 모양 | 후보 토큰의 범위 |
| 낮게 설정하면 | 확률 높은 단어에 더 집중 | 후보군 자체가 좁아짐 |
| 높게 설정하면 | 낮은 확률 단어도 선택될 가능성 증가 | 더 많은 후보 단어를 고려 |
| 비유 | 후보들의 점수 차이를 크게 또는 작게 조절 | 후보 명단에 누구까지 올릴지 결정 |
주의할 점
Temperature와 Top-P를 동시에 크게 바꾸면 결과를 해석하기 어려워질 수 있습니다. 처음 실험할 때는 하나의 값만 바꾸고 나머지는 고정하는 것이 좋습니다. 예를 들어 Temperature 실험을 할 때는 Top-P를 고정하고, Top-P 실험을 할 때는 Temperature를 고정합니다.
6. Max Tokens
Max Tokens는 모델이 생성할 수 있는 최대 출력 길이를 제한하는 설정
여기서 토큰은 모델이 텍스트를 처리하는 단위
단어 하나와 완전히 같지는 않 고, 단어 조각이나 기호도 토큰이 될 수 있습니다.
예를 들어 Max Tokens를 작게 설정하면 답변이 짧아집니다. 너무 작 게 설정하면 답변이 중간에 끊길 수도 있습니다.
max_tokens = 50 → 짧고 간단한 답변
max_tokens = 500 → 더 자세한 답변
max_tokens = 2000 → 긴 설명이나 문서 생성 가능
Max Tokens와 Context Window는 다르다
여기서 헷갈리기 쉬운 개념이 있습니다. 바로 Max Tokens와 Context Window입니다.
| Max Tokens | 모델이 새로 생성할 답변의 최대 길이 | 답변지 길이 제한 |
| Context Window | 입력과 출력 전체를 포함해 모델이 한 번에 다룰 수 있는 범위 | 책상 위에 펼쳐둘 수 있는 전체 자료 크기 |
즉, Max Tokens는 출력 길이만 제한하는 값입니다. 하지만 전체 요청 에서는 사용자가 보낸 입력 토큰과 모델이 생성하는 출력 토큰이 함께 고려됩니다. 입력이 너무 길면 출력에 사용할 수 있는 여유가 줄어들 수 있습니다.
API 비용은 보통 입력 토큰과 출력 토큰을 기준으로 계산됩니다. 따라서 Max Tokens를 무조건 크게 잡으면 긴 답변이 생성될 가능성이 커지고, 그만큼 비용도 늘어날 수 있 습니다.
7. Stop Sequence
Stop Sequence는 모델이 특정 문자열을 만나면 답변 생성을 멈추게 하는 설정
예를 들어 목록을 10개까지만 받고 싶을 때 Stop Sequence를 11.로 설정할 수 있습니다. 그러면 모델이 11번째 항목을 만들려고 하는 순간 그 앞에서 출력을 멈출 수 있습니다.
Stop Sequence: "11."
1.
2.
3.
첫 번째 항목
두 번째 항목 ...
열 번째 항목
또는 한 줄 답변만 받고 싶을 때 줄바꿈 문자 \n을 Stop Sequence로 사용할 수 있습니다.
Stop Sequence 예시 사용 상황
| \n | 한 줄 답변만 받고 싶을 때 |
| ### | 구 분자 이후 내용을 막고 싶을 때 |
| Human:, AI: | 모델이 대화 역할을 임의로 이어 쓰는 것을 막고 싶을 때 |
| 11. | 목록을 10개까지만 생성하고 싶을 때 |
Stop Sequence는 너무 일반적인 문자열로 설정하 면 답변이 너무 빨리 끊길 수 있습니다. 예를 들어 마침표를 Stop Sequence로 두면 첫 문장이 끝나자마자 답변이 멈출 수 있습니다.
8. Frequency Penalty와 Presence Penalty
모델이 답변을 만들다 보면 같은 단어나 표현을 반복할 때가 있습니다. 이 반복을 조절하는 데 사용되는 설정이 Frequency Penalty와 Presence Penalty입니다.
Frequency Penalty
이미 여러 번 등장한 단어일수록 다시 선택될 확률을 낮춥니다.
즉, 많이 반복된 단어를 더 강하게 억제합니다.
예를 들어 모델이 “중요합니다”라는 표현을 계속 반복한다면 Frequency Penalty를 높여 반복을 줄일 수 있습니다.
Presence Penalty
Presence Penalty는 단어가 몇 번 나왔는지보다, 한 번이라 도 등장했는지를 기준으로 다시 등장할 가능성을 낮춥니다.
즉, 새로운 단어나 새로운 주제로 넘어가도록 유도하는 데 더 가깝습니 다. 아이디어 발상이나 창작 글쓰기에서 다양한 방향을 얻고 싶을 때 사용할 수 있습니다.
구분 기준 효과 사용 상황
| Frequency Penalty | 단어가 나온 횟수 | 반복 표현 감소 | 같은 말이 계속 반복될 때 |
| Presence Penalty | 단어가 등장했는지 여부 | 새로운 표현과 주제 유도 | 아이디어를 다양하게 받고 싶을 때 |
둘 다 반복을 줄이는 데 관련이 있지만, 느낌은 조금 다릅니다. Frequency Penalty는 “같은 말 그만 반복해”에 가깝고, Presence Penalty는 “이미 말한 것 말고 새로운 것도 말해 봐”에 가깝습니다.
9. 작업별 추천 설정
매개변수에는 정답이 없습니다. 어떤 작업을 하느냐에 따라 적절한 설 정이 달라집니다. 다만 처음 실습할 때는 아래 기준으로 시작하면 좋습니다.
| 작업 유형 | Temperature | Top-P | 설정 방향 |
| 코드 생성 | 낮게 | 낮거나 중간 | 정확성과 일관성 우선 |
| 문서 요약 | 낮게 | 중간 | 원문에서 벗어나지 않게 유지 |
| 일반 챗봇 | 중간 | 중간~ 높게 | 자연스럽고 유연한 응답 |
| 블로그 글 초안 | 중간 | 높게 | 표현 다양성과 흐름 확보 |
| 아이디어 발상 | 높게 | 높게 | 다양한 방향 탐색 |
| JSON 출력 | 낮게 | 낮거나 중간 | 형식 안정성 우선 |
처음에는 Temperature와 Top-P를 동시에 많이 바 꾸기보다, 기본값에 가까운 설정에서 하나씩 바꿔보는 것이 좋습니다. 그래야 어떤 설정이 결과에 영향을 주었는지 확인 하기 쉽습니다.
10. 실습: 같은 프롬프트로 설정값 비교
매개변수는 설명만 읽는 것보다 직접 비교해보는 것이 훨씬 이해가 빠 릅니다. 하나의 프롬프트를 정하고, 설정값만 바꿔가며 결과를 비교해보겠습니다.
공통 프롬프트


데이터 엔지니어가 하는 일을 처음 배우는 사람에게 쉽게 설명해줘. 비유를 사용하고, 5문장
이내로 답해줘.

실험 1: 낮은 Temperature
{ "temperature": 0.2, "top_p": 1.0, "max_tokens": 300 }

이 설정에서는 답변이 안정적으로 나옵니다. 표현이 크게 튀지 않고, 비 슷한 질문을 여러 번 해도 비슷한 구조의 답변이 나올 가능성이 높습니다.
실험 2: 높은 Temperature
{ "temperature": 0.8, "top_p": 1.0, "max_tokens": 300 }

이 설정에서는 더 다양한 비유와 표현이 나올 수 있습니다. 하지만 너무 높게 설정하면 설명이 산만해지거나, 의도와 살짝 다른 방향으로 답변할 수도 있습니다.
실험 3: Max Tokens 제한
{ "temperature": 0.7, "top_p": 1.0, "max_tokens": 50 }

이 설정에서는 답변이 짧아집니다. 핵심만 받고 싶을 때는 유용하지만, 너무 낮게 설정하면 문장이 중간에 끊길 수 있습니다.
11. 정리 표
매개변수 조절 대상 낮게 설정하면 높게 설정하면 주로 쓰는 상황
| Temperature | 확률 분포의 날카로움 | 안정적, 일 관적 | 창의적, 다양함 | 창작, 요약, 분석 조절 |
| Top-P | 후보 토큰의 누적 확률 범위 | 보수적 | 다양한 후보 고려 | 창의성과 안정성 균형 |
| Top-K | 상위 K개 후보 | 후보 제한 | 후보 확대 | 일부 모델에서 다양성 조절 |
| Max Tokens | 출력 길이 | 짧은 답변 | 긴 답변 가 능 | 비용과 길이 제어 |
| Stop Sequence | 종료 조건 | 특정 지점에서 중단 | 해당 없음 | 형식 제어 |
| Frequency Penalty | 반복 빈도 | 반복 허용 | 반복 억제 | 같은 말 반복 줄이기 |
| Presence Penalty | 등장 여부 | 기존 표현 유지 | 새 표현 유도 | 아이디어, 창작 |
전체 흐름 한 번에 정리
모델 매개변수는 모델의 답변 방식을 조절하는 장치입니다. 모델은 다 음 단어 후보들의 확률을 계산하고, Decoding과 Sampling 과정을 통해 실제 단어를 선택합니다. 이때 Temperature는 확률 분포의 모양을 조절하고, Top-P와 Top-K는 후보 단어의 범위를 조절합니다.
Max Tokens는 답변 길이를 제한하고, Stop Sequence는 특정 문자 열에서 답변을 멈추게 합니다. Frequency Penalty와 Presence Penalty는 반복을 줄이거나 새로운 표현을 유도하는 데 사용됩니다.
실무에서는 매개변수를 한 번에 모두 바꾸기보다, 목적에 맞게 하나씩 조정하면서 결과를 비교하는 것이 좋습니다. 정확성이 중요한 작업은 낮은 Temperature와 적절한 길이 제한을 사용하고, 창의성이 중요한 작업은 Temperature나 Top-P를 조금 높여 다양한 답변을 유도할 수 있습니다.
결국 중요한 것은 “어떤 값이 정답인가?”가 아니라, 내가 만 들고 싶은 서비스의 답변 스타일에 맞게 매개변수를 조정할 수 있는가입니다. Azure OpenAI Playground에서 같은 프롬프트로 설정값을 바꿔 실험해보면, 각 매개변수가 어떤 역할을 하는지 훨씬 더 직관적으로 이해할 수 있습니다.
'Azure OpenAI Engineering > LLM' 카테고리의 다른 글
| [ Azure OpenAI #8] 모델 매개변수 실험 기록: 설정값에 따라 GPT 답변은 어떻게 달라질까? (0) | 2026.06.18 |
|---|---|
| [ Azure OpenAI #6 ] 기본 실습: 리소스 생성부터 Playground, API, SDK 호출까지 (0) | 2026.06.17 |
| [Azure OpenAI #5] Azure OpenAI Service 전체 구조 이해하기: 리소스, 모델, 배포, Endpoint (1) | 2026.06.17 |
| [Azure OpenAI #4] Transformer와 GPT 구조 : 왜 문맥을 이해할 수 있을까? (0) | 2026.06.17 |
| [Azure OpenAI #3] GPT는 문장을 어떻게 이해할까? 토큰과 임베딩 이해하기 (0) | 2026.06.17 |