C.W.K.
Stream
Lesson 08 of 10 · published

Sampler 읽기 — Temperature, Top-P, Seed

~16 min · foundations, sampling, determinism

Level 0수련생
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

단어 안 바꾸고 프롬프트 바꾸는 다이얼들

같은 프롬프트가 temperature 0이랑 1에서 — 사실상 다른 프롬프트 두 개야. sampler는 contract의 일부 — 그런데 prompt-engineering 콘텐츠 대부분이 무시해.

각 다이얼이 진짜 뭘 하나

  • Temperature — sampling 전에 logit을 scale해. 낮음 = deterministic, 좁음. 높음 = exploratory, 의외. confidence 다이얼 아니야.
  • Top-P (nucleus sampling) — 누적 확률 ≥ p인 가장 작은 token 집합으로 sampling 제한. 극단 temperature를 길들여.
  • Top-K — top-p의 옛날 사촌. 2026 frontier API에서는 덜 흔해.
  • Seed — 일부 provider가 reproducibility를 위해 노출 (best-effort, 비트 단위 X).
  • Stop sequence — sampler가 멈추는 string. fenced output에 유용.

실전 setting

정답 있는 task (extraction, classification, JSON output)에는 default temperature 0 (또는 0.2). variety 중요한 creative/generative task에는 0.7~1.0. 1.2 이상은 거의 안 가 — 보통 top-p 0.9이 더 맞아.

thinking-budget 다이얼

reasoning 모델 (Claude extended thinking, OpenAI o-series, Gemini thinking)에서 thinking budget이 네 번째 차원. 트랙 4에서 다뤄.

Code

같은 프롬프트, 세 가지 sampler regime·python
# Extraction (deterministic)
client.messages.create(
    model="claude-opus-4-7",
    temperature=0,
    max_tokens=256,
    messages=[...]
)

# Brainstorm (varied)
client.messages.create(
    model="claude-opus-4-7",
    temperature=1.0,
    top_p=0.9,
    max_tokens=512,
    messages=[...]
)

# Tight rewrite
client.messages.create(
    model="claude-opus-4-7",
    temperature=0.4,
    max_tokens=384,
    stop_sequences=["\n---\n"],
    messages=[...]
)

External links

Exercise

같은 프롬프트를 temperature 0, 0.7, 1.2로 돌려. 각각 5번 sampling. contract 기준으로 score. 다양한 prose를 만드는 게 아니라 contract 만족을 최대화하는 temperature 골라.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 피파warm

댓글 6

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. EC
    Erik Choi

    [contract] 아래 후보 중 "내부 투자검토 메모에 가장 적합한 후보" 하나를 선택하라.

    후보:

    1. 대한민국
    • 근거자료: 일부 있음
    • 리스크: 미확인
    • 검토상태: 보류
    1. 스웨덴
    • 근거자료: 없음
    • 리스크: 미확인
    • 검토상태: 제외
    1. 영국
    • 근거자료: 충분함
    • 리스크: 낮음
    • 검토상태: 검토 가능
    1. 독일
    • 근거자료: 일부 있음
    • 리스크: 높음
    • 검토상태: 보류

    선택 기준:

    • 근거자료가 충분해야 한다.
    • 리스크가 낮아야 한다.
    • 검토상태가 검토 가능이어야 한다.

    출력 contract:

    • 반드시 JSON 한 줄만 출력한다.
    • JSON key는 candidate, risk, action, title, reason 다섯 개만 사용한다.
    • candidate 값은 대한민국, 스웨덴, 영국, 독일 중 하나여야 한다.
    • 정답 candidate는 선택 기준을 모두 만족하는 후보여야 한다.
    • risk 값은 low, medium, high 중 하나여야 한다.
    • action 값은 review, hold, reject 중 하나여야 한다.
    • title은 한국어 8자 이하로 작성한다.
    • title에는 공백을 넣지 않는다.
    • reason은 한국어 20자 이하로 작성한다.
    • 금지어: 유망, 혁신, 압도적
    • 설명하지 않는다.
    • 마크다운 코드블록을 쓰지 않는다.
    • JSON 앞뒤에 다른 문장을 붙이지 않는다.

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

    이런식으로 점점 복잡하게 했는데도 결과값은 temperature=0.0 | average_score=10.00/10 | perfect=5/5 temperature=0.7 | average_score=10.00/10 | perfect=5/5 temperature=1.2 | average_score=10.00/10 | perfect=5/5 이처럼 전부 만족을 하네요. 아마도 제가 temperature별로 명확한 답을 얻을 수 있는 문제를 선택해서, 문제의 변별력이 떨어졌나봐요

    💛 by 피파warm
    1. 피파
      피파· warmEErik Choi

      맞아요, 이건 temperature 차이를 보기엔 정답이 너무 단단한 문제예요. 조건이 전부 한 후보로 수렴하면 temperature를 올려도 모델이 흔들릴 여지가 거의 없거든요. 변별력을 보려면 닫힌 정답보다, 근거가 애매하게 충돌하거나 문체·우선순위 선택이 갈리는 문제로 바꿔보면 차이가 더 잘 보여요.

    2. EC
      Erik Choi피파

      맞아요. 그래서 보다 답변이 애매할만한 질문으로 바꿨어요. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 아래 자료만 사용하여 내부 투자검토용 판단 JSON을 작성하라.

      회사 자료:

      최근 매출은 증가하고 있다. 고부가 제품 비중이 확대되고 있다. AI 영상복원 기술을 보유하고 있다. AI 기술의 유료 매출 기여도는 아직 확인되지 않았다. 해외 판매망은 확대 중이다. 다만 상위 판매처 의존도가 높다. 영업현금흐름은 아직 안정적이지 않다. 회계 이슈, 소송, 계속기업 불확실성은 확인되지 않았다. 판단 규칙:

      review는 유료 매출 기여도, 판매 안정성, 현금흐름 안정성이 모두 확인된 경우에만 선택한다. reject는 회계 이슈, 소송, 계속기업 불확실성 중 2개 이상이 확인된 경우에만 선택한다. 그 외에는 hold를 선택한다. 출력 contract:

      반드시 JSON 한 줄만 출력한다. JSON key는 verdict, confidence, positive, concerns, next_check 다섯 개만 사용한다. verdict 값은 review, hold, reject 중 하나만 사용한다. confidence 값은 low, medium, high 중 하나만 사용한다. positive는 배열이어야 하며 정확히 2개 문장만 넣는다. concerns는 배열이어야 하며 정확히 2개 문장만 넣는다. positive 각 문장은 한국어 14자 이하로 작성한다. concerns 각 문장은 한국어 14자 이하로 작성한다. next_check는 한국어 15자 이하로 작성한다. 숫자를 쓰지 않는다. 금지어: 유망, 매수, 확실, 급성장, 저평가, 추천 설명하지 않는다. 마크다운 코드블록을 쓰지 않는다. JSON 앞뒤에 다른 문장을 붙이지 않는다. 이렇게 하니까 temperature=0.0 | average_score=12.40/14 | perfect=0/5 temperature=0.7 | average_score=12.20/14 | perfect=0/5 temperature=1.2 | average_score=12.60/14 | perfect=0/5 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 이런 결과가 나왔네d요, temperature1.2가 적합하다고 나오는데, 퍼펙트가 하나도 없는게 좀 걸려요

    3. 피파
      피파· warmEErik Choi

      맞아요, perfect가 0이라는 게 오히려 핵심 신호예요. temperature 1.2가 평균을 조금 올린 건 탐색 폭이 늘어난 효과에 가깝고, 이런 빡빡한 JSON contract에서는 temperature보다 조건 충돌·제약 과밀·채점 기준을 먼저 의심하는 게 좋아요. 이 경우엔 “1.2가 정답”이라기보다 “어느 temperature에서도 완전 충족이 안 된다”가 더 중요한 결론이에요.

    4. EC
      Erik Choi피파

      그럼 이러한 경우에는 프롬프트 적합성 판단대상과 판단기준이 알맞지 않다는 것인가요? 이 둘을 같은 페이지에 놓는 작업이 필요할까요?

      💛 by 피파warm
    5. 피파
      피파· warmEErik Choi

      맞아요. 이 경우엔 판단대상과 판단기준을 같은 층위에 놓는 게 먼저예요. “temperature가 적합한가”를 보려면 문제 자체는 너무 쉽지도, contract가 서로 충돌하지도 않아야 하고, perfect가 계속 0이면 temperature보다 채점 기준·출력 제약·문제 난이도부터 분리해서 봐야 해요.