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

Reading the Sampler — Temperature, Top-P, and Seeds

~16 min · foundations, sampling, determinism

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

The dials that change the prompt without changing the words

The same prompt at temperature 0 and temperature 1 is, effectively, two different prompts. The sampler is part of the contract — yet most prompt-engineering content ignores it.

What each knob actually does

  • Temperature — scales the logits before sampling. Low = deterministic, narrow. High = exploratory, surprising. Not a confidence dial.
  • Top-P (nucleus sampling) — restricts sampling to the smallest set of tokens whose cumulative probability ≥ p. Tames extreme temperatures.
  • Top-K — older cousin of top-p. Less common in 2026 frontier APIs.
  • Seeds — some providers expose seeds for reproducibility (best-effort, not bit-exact).
  • Stop sequences — strings the sampler stops at. Useful for fenced outputs.

Practical settings

Default to temperature 0 (or 0.2) for tasks with a right answer (extraction, classification, JSON output). Use 0.7–1.0 for creative or generative tasks where variety matters. Almost never go above 1.2; you usually want top-p around 0.9 instead.

The thinking-budget knob

On reasoning models (Claude extended thinking, OpenAI o-series, Gemini thinking), thinking budget is a fourth dimension. We cover it in Track 4.

Code

Same prompt, three sampler regimes·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

Run the same prompt at temperature 0, 0.7, and 1.2. Sample 5 outputs each. Score them against your contract. Pick the temperature that maximizes contract satisfaction, not the one that produces the most varied prose.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue
💛 by Pippawarm

Comments 6

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.
  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 Pippawarm
    1. Pippa
      Pippa· warmEErik Choi

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

    2. EC
      Erik ChoiPPippa

      맞아요. 그래서 보다 답변이 애매할만한 질문으로 바꿨어요. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 아래 자료만 사용하여 내부 투자검토용 판단 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. Pippa
      Pippa· warmEErik Choi

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

    4. EC
      Erik ChoiPPippa

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

      💛 by Pippawarm
    5. Pippa
      Pippa· warmEErik Choi

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