블로그로 돌아가기

AI 입문가이드

시스템 프롬프트와 temperature: 하는 일과 설정 방법

OpenAI 호환 요청에서 시스템 메시지와 temperature가 하는 일을, CheapTokens 모델로 보낼 수 있는 Python 및 curl 예제와 함께 설명합니다.

작성자: CheapTokens Team 게시됨 업데이트됨읽는 시간 6분

채팅 요청 다이어그램: 규칙이 담긴 시스템 메시지, 작업이 담긴 사용자 메시지, 그리고 temperature 다이얼
이 페이지의 내용
  1. 시스템 프롬프트란 무엇인가요?
  2. 유용한 시스템 프롬프트 작성법
  3. Temperature는 무엇을 하나요?
  4. 둘 다 넣어 요청 보내기
  5. Temperature가 작동하는 모습 보기
  6. 어떤 모델에서 시도할까요
  7. 작동하지 않을 때
  8. 다음 단계

시스템 프롬프트는 역할이 system인 메시지로, 모델이 모든 답변에서 어떻게 행동해야 하는지 알려줍니다: 어떤 존재인지, 어떤 형식을 사용할지, 무엇을 피할지. Temperature는 보통 0과 2 사이의 숫자(범위는 모델에 따라 다름)로, 표현이 얼마나 달라질 수 있는지를 정합니다: 낮은 값은 집중되고 반복 가능한 답변을, 높은 값은 더 다양한 답변을 줍니다. 둘 다 https://api.cheaptokens.dev/v1로 보내는 동일한 Chat Completions 요청에 들어갑니다.

아래 내용: 각각이 무엇인지, 어떤 값으로 시작할지, 그리고 Python이나 curl로 실행할 수 있는 요청입니다. 아직 요청을 보내본 적이 없다면 CheapTokens로 보내는 첫 API 요청부터 시작하세요.

시스템 프롬프트란 무엇인가요?#

채팅 요청은 메시지의 목록이며, 모든 메시지에는 역할이 있습니다. Chat Completions 레퍼런스에는 네 가지가 나열됩니다: system, user, assistant, tool (DeepSeek API 레퍼런스, 2026년 10월 22일 확인). 첫 요청에는 세 가지가 필요합니다:

  • system — 개발자인 여러분의 상시 지침입니다. 모델은 이를 대화의 규칙으로 취급합니다.
  • user — 이번 턴에서 사용자가 묻거나 제공하는 내용입니다.
  • assistant — 모델의 이전 답변입니다. 대화를 이어갈 때 직접 추가합니다.

시스템 메시지는 role을 system로 설정하고 content를 문자열로 지정해야 합니다. name 필드는 선택 사항입니다.

json
"messages": [
  {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
  {"role": "user", "content": "Send me the report by tonight or I will be upset."}
]

시스템 메시지가 먼저 옵니다. 사용자 메시지가 실제 작업입니다.

유용한 시스템 프롬프트 작성법#

  • 모델이 하는 일을 한 문장으로 말하세요: "You are an editor", "You classify support tickets".
  • 출력 형식을 명시하세요: "Return only the rewritten text", "Answer in two sentences", "Reply with valid JSON".
  • 규칙은 짧고 직접적인 문장으로 주세요. 여러 개의 명확한 줄이 하나의 긴 문단보다 효과적입니다.
  • 짧게 유지하세요. 시스템 프롬프트는 매 요청마다 전송되고 입력 토큰으로 계산되므로, 길면 매번 비용을 지불하게 됩니다. 입력과 출력의 과금 방식은 입력 vs 출력 토큰에 있습니다.

Temperature는 무엇을 하나요?#

모델은 다음 토큰을 후보 집합에서 선택합니다. Temperature는 가장 가능성 높은 후보를 얼마나 엄격하게 따를지 제어합니다. DeepSeek API 레퍼런스(2026년 10월 22일 확인)에 따르면 temperature은 0에서 2 사이의 값을 받으며 기본값은 1입니다: 높은 값은 더 무작위적인 출력을, 낮은 값은 더 집중되고 결정적인 출력을 줍니다. 범위는 모델마다 다릅니다: DeepSeek는 0에서 2를, Z.ai는 GLM-5.3에 대해 0에서 1을 문서화합니다(둘 다 2026년 10월 22일 확인). 따라서 0에서 1 사이의 값은 둘 다에서 안전합니다. 모델의 범위는 문서에서 확인하세요.

대부분의 작업에 통하는 시작점입니다. 경험칙일 뿐 보장은 아닙니다:

작업 시작 값
추출, 분류, 코드, 엄격한 형식 0 ~ 0.3
Q&A, 요약, 재작성 0.3 ~ 0.7
브레인스토밍, 이름 짓기, 창의적 텍스트 0.8 ~ 1

알아둘 세 가지:

  1. 낮은 temperature는 더 반복 가능할 뿐, 동일하지는 않습니다. 바이트 단위로 같은 답변을 기대하지 마세요.
  2. temperature 또는 top_p 중 하나만 바꾸세요, 둘 다는 아닙니다. 이는 DeepSeek의 권장 사항입니다; top_p은 기본값이 1인 두 번째 샘플링 파라미터입니다. 익히는 동안에는 그대로 두세요.
  3. 일부 모드는 temperature를 무시합니다. DeepSeek 레퍼런스에 따르면 thinking 모드에서는 temperature가 효과가 없으며, non-thinking 모드에서는 top_p이 1.0으로 고정됩니다. 값을 바꿔도 차이가 없다면 먼저 모델의 모드를 확인하세요.

둘 다 넣어 요청 보내기#

키를 환경 변수로 설정해 코드에 남지 않게 하세요(API 키란 무엇이며 안전하게 저장하는 방법 참고). 정확한 모델 id는 CheapTokens 문서에서 가져오세요: 제공자마다 같은 모델을 다르게 부릅니다. 이 예제는 MiniMax-M2.7을 사용합니다.

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[
        {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
        {"role": "user", "content": "Send me the report by tonight or I will be upset."},
    ],
    temperature=0.3,
    max_tokens=1000,
)

print(response.choices[0].message.content)
print(response.choices[0].finish_reason)

curl로 보내는 같은 요청:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
      {"role": "user", "content": "Send me the report by tonight or I will be upset."}
    ],
    "temperature": 0.3,
    "max_tokens": 1000
  }'

보여야 하는 것: 문장의 짧고 더 친근한 버전과 finish_reason로서의 stop. finish_reason이 length이면 답변이 max_tokens 한도에 도달한 것입니다; AI 답변이 문장 중간에 멈추는 이유를 참고하세요.

Temperature가 작동하는 모습 보기#

Temperature를 이해하는 가장 좋은 방법은 같은 질문을 여러 번 하는 것입니다. 이 루프는 위 예제의 client를 사용해 짧은 요청 하나를 0에서 세 번, 1에서 세 번 보냅니다:

python
for temp in (0, 1):
    print("temperature", temp)
    for _ in range(3):
        r = client.chat.completions.create(
            model="MiniMaxAI/MiniMax-M2.7",
            messages=[
                {"role": "system", "content": "Answer with one word."},
                {"role": "user", "content": "Name a fruit."},
            ],
            temperature=temp,
            max_tokens=500,
        )
        print(" ", r.choices[0].message.content)

0에서는 세 줄이 보통 같은 단어이고, 1에서는 보통 더 다양한 단어가 보입니다. 답변 전에 추론하는 모델은 max_tokens의 일부를 그 추론에 쓸 수 있으므로, 한 단어 답변이더라도 한도를 넉넉히 두세요. 그런 다음 시스템 프롬프트만 바꿔(예: "Answer with one word, in French") 다시 실행해 보세요: 시스템 메시지의 규칙은 모든 temperature에서 적용됩니다.

이런 실험은 규모가 작습니다. 대략적인 감을 위해, 약 120 입력 토큰과 80 출력 토큰씩인 요청 100건의 비용은 다음과 같습니다(예시 워크로드이며, 토큰 수는 프롬프트에 따라 다릅니다):

모델 요청당 100회 요청 OpenRouter, 100회 요청
GLM-5.3-Flash $0.0000056 $0.00056 $0.0011
DeepSeek-V4-Flash $0.0000098 $0.00098 $0.0018
MiniMax-M2.7 $0.000018 $0.0018 $0.0132

요청당 입력 120개 및 출력 80개 토큰입니다. 100만 토큰당 가격은 현재 기준이며 당사 요금제에 따라 함께 변경됩니다. OpenRouter 열은 동일한 작업량에 대한 참고 가격을 보여줍니다.

어떤 모델에서 시도할까요#

  • MiniMax-M2.7은 많은 짧은 테스트 요청에 좋은 첫 선택이며, 같은 시스템 프롬프트를 재사용해 답변을 비교할 수 있습니다: 180K 컨텍스트, 최대 8,192 출력 토큰, 입력과 출력 양쪽 모두 OpenRouter의 기준 가격보다 저렴합니다. 현재 가격: 1M 토큰당 입력 $0.05, 출력 $0.15.

하나의 잔액으로 모두를 커버하므로, 모델 전환은 model를 한 줄 바꾸는 일입니다. 모든 현재 가격은 가격 페이지에 있습니다.

작동하지 않을 때#

  • 401 또는 인증 오류: 키가 없거나, 잘못 입력되었거나, 이 터미널에 환경 변수가 설정되지 않았습니다. echo $CHEAPTOKENS_API_KEY을 확인하세요.
  • 모델을 찾을 수 없음: 문서에서 모델 id를 접두사까지 정확히 복사하세요.
  • 잘못된 파라미터에 관한 오류: temperature을 모델이 지원하는 범위 안에 두고(0에서 1이 안전), 문자열이 아닌 숫자로 전달하세요.
  • 모델이 규칙을 무시함: 짧고 직접적인 한 문장으로 만들고, 시스템 메시지 맨 위로 옮기고, 원하는 정확한 형식을 반복하세요.
  • temperature를 바꿔도 아무 변화 없음: 이를 무시하는 모드를 사용 중이거나(위 참고), 답변이 너무 제약되어("one word", "valid JSON") 변형이 거의 없을 수 있습니다.
  • 답변이 잘림: max_tokens을 높이세요; max_tokens 가이드에 방법이 나와 있습니다.

다음 단계#

시스템 메시지에 명확한 규칙 하나를 넣고, 표에서 temperature를 고르고, 위 루프를 여러분의 작업에 실행해 보세요. 결과가 원하는 대로 나오면 시스템 프롬프트를 짧게 유지하고 재사용하세요. 키를 발급받고 현재 가격은 문서에서 확인하세요.