본문으로 건너뛰기

Claude Sonnet 5: 필드 가이드

중급

2026년 6월 30일, Anthropic은 Claude Sonnet 5(claude-sonnet-5)를 출시하면서 조용히 Claude Code의 기본 모델로 지정했습니다. 문서상으로는 동일한 정가로 Sonnet 4.6을 대체하는 드롭인입니다. 실제로는 세 가지 API 제약 때문에 순진하게 마이그레이션하면 400 Bad Request가 반환되고, 새 토크나이저가 동일 텍스트에 대해 약 30% 더 많은 토큰을 생성하므로(컨텍스트 예산과 요청당 비용이 모두 변합니다), effort 스케일이 이동해서 "전부 그대로 두기"는 더 이상 같은 상태가 아닙니다. Sonnet 4.6에서 high로 돌리고 있었다면, Sonnet 5의 high는 Sonnet 4.6의 max에 더 가깝습니다.

이 페이지는 실용적인 필드 가이드입니다. 무엇이 바뀌었는지, 무엇이 깨지는지, 정확한 마이그레이션 체크리스트, 토크나이저 변화에 따른 가격 계산, 대부분의 팀이 먼저 재조정하는 프롬프팅 패턴을 다룹니다.

What you'll learn
  • Sonnet 5가 실제로 무엇인지 이해 — 기본 1M 컨텍스트, 기본으로 켜진 적응형 사고, 실시간 사이버보안 세이프가드를 갖춘 최초의 Sonnet
  • 기존 코드에 400을 일으키는 세 가지 API 제약과 각각의 한 줄짜리 수정법을 파악
  • 새 토크나이저 가격 계산 모델링: 같은 $/token이지만 토큰 수가 약 30% 증가 = 요청당 비용이 달라짐
  • effort 레벨 재보정: Sonnet 5 medium ≈ Sonnet 4.6 high, Sonnet 5 high ≈ Sonnet 4.6 max
  • 가장 크게 바뀌는 프롬프팅 패턴 조정: 장황함, 툴 사용 트리거, 코드 리뷰 재현율, 디자인 기본값

한 문단 요약

Sonnet 5는 균형 잡힌 "시작하기 좋은" Sonnet 티어로, 같은 정가로 Sonnet 4.6보다 상위에 위치하며 이제 Claude Code의 기본입니다. 기본으로 1M 토큰 컨텍스트 윈도우(더 작은 컨텍스트 변형 없음), 128k 최대 출력, 기본으로 켜진 적응형 사고를 지원합니다. 마이그레이션 시 세 가지 API 계약이 깨집니다. 수동 확장 사고(thinking: {type: "enabled", budget_tokens: N})는 제거되어 400을 반환하고, 비기본 샘플링 파라미터(temperature, top_p, top_k)는 400을 반환하며, 토크나이저가 변경되어 동일한 입력 텍스트가 Sonnet 4.6 대비 약 30% 더 많은 토큰을 생성합니다. Priority Tier는 Sonnet 5에서 제공되지 않습니다. 이것이 이번 릴리스의 전체 모양입니다.

"드롭인"에 별표가 필요한 이유

Anthropic의 공식 문서는 Sonnet 5를 "Claude Sonnet 4.6의 드롭인 대체품"으로 설명합니다. 프롬프트 내용에 관해서는 사실입니다. 하지만 API 표면이 충분히 바뀌어서 "모델 문자열만 바꿔 배포"하면 어제까지 잘 돌던 요청에서 오류가 발생합니다. 통합을 깨뜨리는 빈도 순으로 네 가지가 여러분을 물어뜯을 겁니다.

  • temperature, top_p, top_k를 비기본값으로 설정하면 이제 400을 반환합니다. 조용히 무시되는 게 아닙니다. 잘라내는 것도 아닙니다. 하드 에러입니다. Sonnet 계열 모델에서는 새로운 제약입니다. Opus 4.7이 같은 제약을 도입했습니다. SDK 래퍼가 항상 temperature: 0.7을 보낸다면 이제 항상 실패합니다.
  • 수동 확장 사고가 제거되었습니다. thinking: {type: "enabled", budget_tokens: N}은 4.6에서 지원 중단되었고 Sonnet 5에서는 400을 반환합니다. 대신 effort 파라미터를 사용한 적응형 사고를 쓰세요.
  • 적응형 사고가 기본으로 켜져 있습니다. Sonnet 4.6에서는 thinking 필드 없는 요청은 사고 없이 실행되었지만, Sonnet 5에서는 적응형 사고와 함께 실행됩니다. max_tokens는 총 출력(사고 + 응답 텍스트)의 하드 상한이므로, Sonnet 4.6에서 "답변만" 담기던 한계는 Sonnet 5에서 답변을 잘라낼 수 있습니다.
  • 새 토크나이저가 동일 텍스트에 대해 약 30% 더 많은 토큰을 생성합니다. API 변경은 아닙니다 — 요청과 응답 형태는 동일하지만, 토큰으로 측정하거나 예산 잡는 모든 것이 이제 더 높게 측정됩니다.

400을 유발할 API 제약들

Guided walkthrough1 of 4
  1. API 기본이 아닌 temperature, top_p, top_k를 모두 제거하세요. 앱에 스타일 다양성이 필요하면 temperature 대신 시스템 프롬프트 지시를 사용하세요(이제 그것이 유일한 레버입니다). 다양한 디자인 출력이 필요하면 모델에 N개의 서로 다른 방향을 제안하게 하고 하나를 고르세요 — 고정된 샘플링에서도 실행 간 다양성을 얻을 수 있습니다.

최소 안전 마이그레이션 — 한 개의 diff

# Before (Sonnet 4.6) — worked
response = client.messages.create(
  model="claude-sonnet-4-6",
  max_tokens=4096,
  temperature=0.7,                          # 400 on Sonnet 5
  thinking={"type": "enabled",
            "budget_tokens": 8000},         # 400 on Sonnet 5
  messages=[...],
)

# After (Sonnet 5) — one-liner replacements
response = client.messages.create(
  model="claude-sonnet-5",
  max_tokens=8192,                          # raise: thinking now shares the budget
  # temperature removed — use system prompt instead
  # thinking removed — adaptive is on by default
  extra_body={"effort": "high"},            # was implicit in budget_tokens
  messages=[...],
)

토크나이저 변화는 API 이야기가 아니라 가격 이야기입니다

새 토크나이저는 재무팀을 가장 놀라게 할 변화입니다. 요청과 응답은 전송선상에서 동일하게 보이지만, 동일한 입력 텍스트가 Sonnet 4.6 대비 약 30% 더 많은 토큰을 생성합니다. 정확한 배율은 콘텐츠에 따라 달라지지만(코드, 영어 산문, 비영어 텍스트, 구조화 데이터가 각각 다르게 이동합니다) 30%가 Anthropic이 인용하는 숫자입니다.

이로 인해 동시에 세 가지가 달라집니다.

  • 요청당 비용. 토큰당 가격은 Sonnet 4.6과 같은 표준 $3 / $15 per MTok(그리고 2026년 8월 31일까지 $2 / $10)로 변경되지 않았습니다. 하지만 동일 텍스트가 30% 더 많은 토큰을 생성하면, 표준 요율이 발효된 후에는 같은 텍스트가 약 30% 더 비싸집니다.
  • 텍스트 기준 컨텍스트 용량. 컨텍스트 윈도우는 여전히 1M 토큰이지만, 각 토큰이 평균적으로 더 적은 텍스트를 커버합니다. 같은 문서가 윈도우의 약 30%를 더 차지합니다.
  • max_tokens 잘림 위험. Sonnet 4.6에서 "이 정도 텍스트 분량"에 맞춰 조정된 출력 상한이 Sonnet 5에서 동등한 출력을 조용히 잘라낼 수 있습니다. 예상 출력 길이에 근접한 모든 한계를 재검토하세요.

솔직히 정리한 가격 계산입니다.

기간정가같은 텍스트 → Sonnet 4.6 대비 비용
지금 → 2026년 8월 31일 (도입가)$2 in / $10 out13% 저렴 (30% 더 많은 토큰 × $2 vs. Sonnet 4.6의 $3)
2026년 9월 1일부터 (표준)$3 in / $15 out동등 텍스트에 대해 약 30% 더 비쌈

도입가 토큰으로 앱 가격을 책정하고 9월 1일 전환을 모델링하지 않았다면, 눈에 띄게 될 겁니다.

새 토크나이저로 프롬프트를 다시 세기

# Recount before you migrate — don't trust old numbers
count = client.messages.count_tokens(
  model="claude-sonnet-5",     # count under the NEW tokenizer
  messages=[{"role": "user", "content": your_prompt}],
  system=your_system,
)
print(count.input_tokens)        # roughly 30% higher than on claude-sonnet-4-6

effort 스케일이 이동했습니다 — 비교하기 전에 재보정하세요

effort 파라미터(low / medium / high / xhigh / max)는 여전히 같은 다섯 값을 갖지만, Anthropic은 마이그레이션 시 대부분의 팀이 첫 독해에서 놓치는 명시적 교차 모델 매핑을 제공합니다.

  • Sonnet 5의 medium ≈ Sonnet 4.6의 high.
  • Sonnet 5의 high ≈ Sonnet 4.6의 max.
  • **xhigh**는 가장 어려운 코딩과 에이전트 작업에 권장됩니다.
  • **max**는 토큰 소비 제약을 완전히 제거합니다.

두 가지 함의입니다.

  • Sonnet 4.6을 high로 돌리다가 effort는 그대로 두고 모델만 바꾸면, 이제 더 많은 사고, 더 많은 토큰, 아마 더 나은 출력으로 돌리는 셈이지만 청구서는 커집니다. medium으로 내리는 것을 고려하세요.
  • Sonnet 4.6을 max로 돌리다가 Sonnet 5의 max로 바꾸면, 필요 없는 여유 공간에 돈을 내고 있을 수 있습니다. 먼저 xhigh를 시도하세요.

Anthropic은 또한 Sonnet 5가 특히 저강도 쪽에서 effort를 엄격하게 존중한다고 경고합니다. lowmedium은 요청된 작업의 범위에 맞추며, "그 이상"으로 나아가지 않습니다. 지연 시간과 비용에는 좋지만, 중간 정도로 복잡한 작업을 low로 돌리면 사고 부족의 실질적 위험이 있습니다. 권장되는 해결책은 프롬프트로 우회하기보다 effort를 올리는 것입니다.

이제 Sonnet 5가 Claude Code 기본입니다 — 무엇이 바뀌나

Claude Code v2.1.197(2026년 6월 30일) 기준, claude-sonnet-5가 기본 모델입니다. 아무것도 설정하지 않으면 세션이 Sonnet 5로 실행됩니다. 실용적 결과입니다.

  • 1M 컨텍스트를 얻지만, max_tokens와 effort 설정은 상속됩니다. Claude Code의 기본값은 새 모델에 맞게 조정되어 있습니다. max_tokens를 고정하거나 effort 오버라이드를 설정한 커스텀 CLAUDE.md 구성은 재검증해야 합니다.
  • 더 빠르고 더 에이전트적인 기본 동작. Sonnet 5는 기본적으로 Sonnet 4.6보다 더 에이전트적입니다 — 도구에 더 쉽게 손을 뻗고, 자체 검증 루프를 더 기꺼이 실행합니다. Claude Code가 명령 실행에 보수적이었던 것에 익숙했다면, 더 많은 이니셔티브를 기대하세요.
  • 정기적인 사용자 대상 진행 업데이트. Sonnet 5는 이미 긴 트레이스에서 더 나은 품질의 중간 업데이트를 제공합니다. "3번의 도구 호출마다 진행을 요약해줘" 같은 프롬프트 스캐폴딩은 대개 제거할 수 있습니다.
  • Sonnet 4.6은 이제 레거시 모델입니다. 여전히 사용 가능하지만(claude-sonnet-4-6을 이유가 있어 고정한다면), 더 이상 진입점이 아닙니다.

대부분의 팀이 재조정하는 네 가지 프롬프팅 패턴

1. 장황함은 작업 복잡도에 맞춰 보정됩니다

Sonnet 5는 고정된 장황함을 기본값으로 삼기보다 작업 복잡도에 따라 응답 길이를 선택합니다. 단순 조회에는 짧은 답변이, 열린 분석에는 긴 답변이 나옵니다. 제품이 일관된 스타일을 원한다면 프롬프트를 조정하세요 — Anthropic의 스니펫이 잘 작동합니다.

고정된 목소리가 필요할 때 장황함 길들이기

Provide concise, focused responses. Skip non-essential context, and keep examples minimal.

긍정 예시("이렇게 간결하게 표현해줘")가 부정 예시("과설명하지 마")보다 더 잘 작동합니다.

2. 툴 사용 트리거링이 더 에이전트적입니다 — 조절할 수 있습니다

Sonnet 5는 4.6보다 도구에 더 쉽게 손을 뻗습니다. 두 가지 레버입니다.

  • Effort. high 또는 xhigh는 에이전트 검색과 코딩 워크로드에서 상당히 더 많은 도구 사용을 보입니다. lowmedium은 작업 범위를 좁게 잡습니다.
  • 사고 끄기. thinking: {type: "disabled"}이면 모델이 도구에 손을 뻗을 가능성이 더 낮아집니다. 사고를 끄지만 여전히 도구 호출에 의존한다면, 시스템 프롬프트에 명시적 유도를 추가하세요.

3. 코드 리뷰 하네스에서 재현율이 떨어질 수 있습니다 — 모델이 더 문자 그대로 동작하는 겁니다

리뷰 프롬프트가 "고심각도 이슈만 보고해" 또는 "사소한 지적은 하지 마"라고 말하면, Sonnet 5는 이를 충실히 따를 수 있습니다 — 똑같이 철저하게 조사하고, 같은 버그를 찾은 다음, 설정한 기준 아래로 판단되는 발견은 보고하지 않습니다. 정밀도는 대개 올라가고, 재현율은 떨어져 보일 수 있습니다. Anthropic이 권장하는 해결책은 발견 단계와 순위 매김 단계를 분리하는 것입니다.

Sonnet 5용 재현율 지향 코드 리뷰 프롬프트

Report every issue you find, including ones you are uncertain about or consider low-severity.
Do not filter for importance or confidence at this stage - a separate verification step will do that.
Your goal here is coverage: it is better to surface a finding that later gets filtered out than to silently drop a real bug.
For each finding, include your confidence level and an estimated severity so a downstream filter can rank them.

프롬프트가 도움이 되려고 실제로 두 번째 단계를 만들 필요는 없습니다 — 신뢰도 필터링을 발견 단계 밖으로 옮기는 것이 동작을 바꿉니다.

4. 디자인 기본값이 "하우스 스타일"로 정착합니다 — 명시적으로 오버라이드하세요

열린 프론트엔드와 디자인 브리프에서 Sonnet 5는 일관된 기본 시각 스타일 쪽으로 기웁니다. 어떤 제품에는 잘 읽히지만, 대시보드, 개발자 도구, 핀테크, 헬스케어, 엔터프라이즈 앱에는 부적합합니다. 일반적인 반박("덜 뻔하게 만들어줘")은 다양성을 만들기보다 모델을 다른 고정 스타일로 이동시키는 경향이 있습니다. 잘 작동하는 두 패턴입니다.

  • 구체적인 대안을 지정 — hex 코드, 서체 이름, 레이아웃 규칙. Sonnet 5는 명시적 사양을 정확하게 따릅니다.
  • 빌드 전에 N개의 옵션을 제안하도록 요청. 비기본 temperature가 400을 반환하므로, 이것이 이제 실행 간 의미 있게 다른 디자인 방향을 생성하는 권장 방법입니다.

temperature 없이 디자인 다양성 강제하기

Before building, propose 4 distinct visual directions tailored to this brief
(each as: bg hex / accent hex / typeface, plus a one-line rationale).
Ask the user to pick one, then implement only that direction.

사이버보안 세이프가드: HTTP 200으로 반환되는 거부

Sonnet 5는 실시간 사이버보안 세이프가드를 갖춘 최초의 Sonnet 티어 모델입니다. 요청이 거부되면, 오류가 아니라 stop_reason: "refusal"이 담긴 성공적인 HTTP 200으로 반환됩니다. 거부 처리 분기를 만들지 않았다면, 앱은 빈 응답을 성공적인 빈 답변으로 취급하고 조용히 사용자에게 배송할 것입니다.

수정은 응답에 대한 한 줄 분기입니다.

거부를 깔끔하게 처리하기

resp = client.messages.create(model="claude-sonnet-5", messages=[...])
if resp.stop_reason == "refusal":
  # Show a graceful message. Optionally retry on a fallback model
  # (Opus 4.8 is a common choice). You are NOT billed for a refusal
  # returned before any output was generated.
  return handle_refusal(resp)
# Otherwise process resp.content as normal

이것은 Fable 5의 인밴드 거부와 같은 모양입니다 — 그것을 이미 처리하고 있다면 커버됩니다. 처음 접하는 경우, fallbacks 파라미터를 포함한 더 완전한 패턴은 Fable 5 필드 가이드를 참조하세요.

Priority Tier가 제공되지 않습니다 — 우회 계획을 세우세요

현재 다른 모든 Anthropic 모델은 예약 용량과 예측 가능한 지연 시간을 위한 Priority Tier를 지원합니다. Sonnet 5는 그렇지 않습니다. 오늘 Priority Tier 약정에 의존하는 엔터프라이즈 워크로드가 있다면, 옵션은 다음과 같습니다.

  • 워크로드를 Sonnet 4.6에 유지 (여전히 지원, 여전히 Priority Tier).
  • 워크로드를 Opus 4.8로 마이그레이션 — Priority Tier에 있으며 어려운 작업에서 Sonnet 5가 어차피 비교 대상으로 삼는 모델입니다.
  • Sonnet 5의 표준 티어로 이동하고 비예약 용량을 받아들이기.

베타 헤더 우회는 없습니다. Priority Tier가 여러분에게 필수적이라면, 이것이 먼저 계획해야 할 마이그레이션 블로커입니다.

Sonnet 5 vs Sonnet 4.6 vs Opus 4.8 — 선택

선택언제 고를까
Sonnet 5새로운 무엇이든 기본. 코딩, 에이전트 작업, 1M 컨텍스트, 가격 민감도 모두 여기를 가리킵니다.
Sonnet 4.6Priority Tier가 필요하거나, 아직 재작성할 수 없는 비기본 샘플링 파라미터에 의존하는 프롬프트가 있거나, 평가 중이며 안정적인 베이스라인을 원할 때.
Opus 4.8Sonnet 5가 도달하지 못하는 추론 깊이나 장기 안정성이 필요하거나, 상위에서 Priority Tier가 필요할 때. effort 오버라이드와 페어링하세요 — Opus 4.8의 xhigh가 흔한 최적점입니다.
Fable 5 / Mythos 5Opus 4.8이 충분하지 않음을 검증했고 다일간 자율 실행을 위해 Sonnet 5 출력 가격의 5배를 지불할 의향이 있을 때. Fable 5 필드 가이드를 참조하세요.

마이그레이션 체크리스트

Guided walkthrough1 of 6
  1. 길이가 중요한 모든 프롬프트에 대해 model="claude-sonnet-5"로 토큰 카운팅 API를 사용하세요. 고정된 1M 토큰 예산과 비교하는 곳마다 약 30% 더 많은 사용량을 가정하세요. max_tokens가 빡빡한 곳마다 올리세요.

빠른 확인

Check yourself

0/5
  1. 기존 Sonnet 4.6 코드가 temperature: 0.7과 thinking: {type: "enabled", budget_tokens: 8000}을 설정합니다. 모델을 claude-sonnet-5로 바꿉니다. 어떻게 될까요?
  2. Sonnet 4.6에서 시스템 프롬프트를 40,000 토큰으로 측정했습니다. 같은 텍스트가 Sonnet 5에서 대략 몇 토큰으로 카운트될 것으로 예상해야 할까요?
  3. Priority Tier 약정이 있는 Sonnet 4.6의 엔터프라이즈 워크로드가 있습니다. Sonnet 5로 마이그레이션하고 싶습니다. 블로커는 무엇인가요?
  4. Anthropic의 교차 모델 effort 매핑에 따르면, Sonnet 5를 effort=medium으로 돌리는 것은 지능 면에서 대략 어느 Sonnet 4.6 설정과 비교할 만합니까?
  5. Sonnet 5 요청이 content: []와 stop_reason: "refusal"이 담긴 HTTP 200 응답을 반환합니다. 무엇이 일어나지 *않았습니까*?

출처 및 추가 자료