Claude Sonnet 4.5 / 4.6 기준
IT/AI
Claude Sonnet 4.5 1M 한도, 4월 30일 후 달라지는 것
4월 30일, 실제로 무엇이 끊기나
Claude Sonnet 4.5의 1M 토큰 컨텍스트는 처음부터 베타였습니다. Anthropic이 2025년 8월에 context-1m-2025-08-07라는 베타 헤더를 도입했고, 이 헤더가 없으면 Sonnet 4.5의 실질 한도는 그냥 200K였습니다. 헤더를 붙이면 1M까지 받아주는 구조였죠.
2026년 4월 30일 이후로는 이 헤더가 아무 의미가 없어집니다. Anthropic 공식 changelog에 3월 30일자로 종료 일정이 공지됐습니다. 헤더를 달아도 무시되고, 200K 토큰을 초과하는 요청은 그대로 에러 처리됩니다. (출처: Riptide Consulting 마이그레이션 가이드, 2026.04 기준)
직접 영향을 받는 케이스는 명확합니다. 긴 PDF나 계약서를 한 번에 처리하는 파이프라인, 코드베이스 전체를 컨텍스트에 넣는 에이전트, 긴 대화 히스토리를 유지하는 챗봇 — 이 중 하나라도 Sonnet 4.5 + 1M 베타 헤더 조합으로 돌아가고 있다면 5월 1일에 프로덕션이 멈춥니다.
💡 공식 발표 시점(3월 30일)과 종료 시점(4월 30일) 사이가 딱 한 달입니다. 이 간격이 짧다 보니 노이즈 속에 묻힌 팀들이 많습니다. “베타가 잘 돌아가고 있으니 안정적인 상태겠지”라는 판단이 가장 위험한 착각입니다.
1M 베타를 쓰고 있는지 5초 만에 확인하는 법
코드베이스에서 아래 명령어 한 줄이면 끝납니다.
grep -r "context-1m-2025-08-07" .
결과가 나왔다면, 그 파일에서 함께 쓰인 모델 ID를 확인하세요. claude-sonnet-4-5 또는 claude-sonnet-4와 함께 쓰이고 있다면 마이그레이션 대상입니다.
AWS Bedrock나 Google Vertex AI를 통해 호출하는 경우도 동일합니다. 두 플랫폼 모두 이 헤더를 적용해 왔고, 같은 날짜에 종료됩니다. 인퍼런스 프로파일 설정 쪽도 같은 키워드로 검색해 보는 게 좋습니다.
💡 외부 API 래퍼(LangChain, LlamaIndex, liteLLM 등)를 쓰고 있다면 라이브러리 내부 설정에도 헤더가 박혀 있을 수 있습니다. 내 코드에서 직접 설정하지 않았다고 해서 안심할 수 없고, 의존 라이브러리 버전도 같이 확인해야 합니다.
Sonnet 4.6이 같은 값인데 더 좋은 이유
여기서 많은 팀이 놓치는 사실이 있습니다. Sonnet 4.6의 1M 컨텍스트 윈도우는 베타가 아닙니다. 정식 지원이고, 추가 요금이 없습니다. 가격은 Sonnet 4.5와 똑같이 입력 $3 / 출력 $15 (1M 토큰당) 입니다. (출처: Anthropic 공식 docs.anthropic.com/en/docs/about-claude/models, 2026.04.25 기준)
그러면서 성능은 전 부문에서 올라갔습니다. 아래 표로 보면 차이가 명확합니다.
| 지표 | Sonnet 4.5 | Sonnet 4.6 |
|---|---|---|
| 컨텍스트 윈도우 | 200K (1M은 베타) | 1M (정식) |
| SWE-bench Verified | 77.2% | 79.6% |
| OSWorld (컴퓨터 사용) | 61.4% | 72.5% |
| 수학 정확도 | 62% | 89% |
| 가격 (입력/출력 1M당) | $3 / $15 | $3 / $15 (동일) |
| Claude Code 사용자 선호 | 30% | 70% |
(출처: nxcode.io Claude Sonnet 4.6 vs 4.5 업그레이드 가이드, Anthropic 공식 발표, 2026.02.17)
수학 정확도 62%→89%는 단순 벤치마크 숫자가 아닙니다. 재무 계산, 데이터 분석, 수치 추론이 들어간 워크플로우에서 중간에 계산이 틀릴 확률이 대폭 낮아진다는 뜻입니다.
그리고 여기서 진짜 뜻밖의 수치가 나옵니다. Claude Code 내부 테스트에서 Sonnet 4.6은 Opus 4.5(2025년 11월 기준 최상위 모델)와 1:1 대결에서 59% 선호를 얻었습니다. 플래그십 모델을 미드레인지가 앞선 것입니다. 같은 가격에 쓸 수 있는 Sonnet 4.6이 실질적으로 상위 모델을 대체하는 구간이 생긴 겁니다. (출처: Anthropic 공식 뉴스룸 claude-sonnet-4-6 발표문, 2026.02.17)
비용이 오히려 오를 수 있는 조건
Sonnet 4.6으로 갈아탔는데 비용이 늘어났다는 후기가 간간이 나옵니다. 이유가 있습니다. Sonnet 4.6의 thinking effort 기본값은 “high”입니다. Sonnet 4.5는 thinking 설정이 없었기 때문에 단순 분류나 라우팅 작업도 그냥 처리했는데, 4.6으로 바꾼 후 같은 요청에 내부 추론 토큰이 더 붙으면 출력 토큰 수가 늘어납니다. 토큰이 늘면 비용도 늘죠.
예를 들어 단순 고객 지원 티켓 분류처럼 “이거 환불 문의냐 배송 문의냐”를 판단하는 작업에 effort: "high"를 기본으로 날리면, 필요 없는 추론 과정이 생깁니다. 4.5 대비 토큰 소모가 체감상 더 많아지는 구간이 바로 이런 단순 반복 작업입니다.
해결책은 effort를 명시적으로 지정하는 것입니다. 단순 분류나 텍스트 추출에는 effort: "low", 코드 생성이나 요약에는 effort: "medium"을 쓰면 됩니다. 기본값에 맡기면 안 됩니다.
Effort 레벨 가이드
| 레벨 | 적합한 작업 | 비용 부담 |
|---|---|---|
| low | 분류, 텍스트 추출, 라우팅 | 낮음 |
| medium | 코드 생성, 요약, 콘텐츠 작성 | 중간 |
| high (기본값) | 복잡한 추론, 멀티스텝 분석, 디버깅 | 높음 |
| max | 수학 증명, 연구 합성, 고위험 판단 | 최고 |
(출처: nxcode.io Claude Sonnet 4.6 마이그레이션 가이드, 2026.02)
prefilling 제거 — 가장 자주 막히는 변경점
Sonnet 4.5에서 4.6으로 바꾸면서 가장 많이 터지는 에러가 여기서 나옵니다. 어시스턴트 메시지 앞에 내용을 미리 채워 출력 포맷을 유도하는 방식, 이른바 prefilling이 Sonnet 4.6에서 완전히 막혔습니다. 요청하면 400 에러가 뜹니다.
Sonnet 4.5에서 이렇게 쓰던 코드가 있다면 바로 오류납니다.
# ❌ Sonnet 4.6에서 400 에러 발생
messages=[
{"role": "user", "content": "프레임워크 3개 알려줘"},
{"role": "assistant", "content": '{"frameworks": ['} # prefilling
]
대체 방법은 세 가지입니다. JSON 구조가 필요하면 structured outputs의 json_schema 방식으로 교체하고, 불필요한 서두를 없애고 싶다면 시스템 프롬프트에서 “서두 없이 바로 답하라”고 지시하면 됩니다. 이전 출력을 이어가는 구조라면 유저 메시지 안에 이전 내용을 넣고 이어달라고 요청하는 패턴으로 전환하면 됩니다.
⚠️ prefilling 사용 여부는 코드베이스에서 {"role": "assistant"를 검색해 messages 배열 안에 있는 케이스를 찾으면 됩니다. LangChain 같은 래퍼가 내부적으로 prefilling을 쓰는 경우도 있어서 라이브러리 버전도 함께 확인이 필요합니다.
마이그레이션 체크리스트 (12항목)
아래 항목을 프로덕션 배포 전에 순서대로 짚으면 됩니다. (출처: nxcode.io 공식 마이그레이션 가이드, Anthropic 공식 문서 기반 정리)
모델 ID 교체 —
claude-sonnet-4-5-20241022 → claude-sonnet-4-6
베타 헤더 삭제 —
context-1m-2025-08-07 헤더 제거 (Sonnet 4.6에서는 불필요)
prefilling 전수 검색 —
{"role": "assistant"가 messages 배열 안에 있는지 확인
effort 레벨 명시 — 모든 API 호출에
output_config: {"effort": "medium"} 등 명시 (기본값 “high” 의존 금지)
extended thinking 마이그레이션 —
thinking: {type: "enabled", budget_tokens: N} → thinking: {type: "adaptive"}
output_format 파라미터 교체 — 구버전
output_format → output_config.format
폐기된 베타 헤더 정리 —
effort-2025-11-24, fine-grained-tool-streaming-2025-05-14 헤더 제거
Tool call JSON 파싱 방식 확인 — 정규식 대신
json.loads() / JSON.parse() 사용
컨텍스트 윈도우 사용량 테스트 — 200K 초과 입력이 있는 케이스 Sonnet 4.6에서 동작 검증
레이턴시 벤치마크 비교 — Sonnet 4.5 대비 응답 시간 차이 측정 후 허용 가능 여부 확인
에러 핸들링 추가 — prefilling 관련 400 에러 처리 로직 삽입
스테이징 환경 먼저 배포 — 프로덕션 전환 전 전체 통합 테스트 수행
💡 Anthropic의 베타 헤더 종료 패턴을 살펴보면 일정이 보입니다. 베타로 수요를 검증하고, 새 모델에 정식 기능으로 올린 뒤, 이전 베타 헤더를 소리 없이 종료합니다. interleaved-thinking-2025-05-14 헤더도 Sonnet 4.6에서 deprecated 상태입니다. 베타 헤더에 의존하는 인프라는 이 패턴을 상시 모니터링하는 체계가 없으면 주기적으로 같은 상황이 반복됩니다.
자주 묻는 질문
마치며
솔직히 말하면, 이번 변화는 “기능 업그레이드”보다 “조용한 종료”에 가깝습니다. Anthropic이 3월 30일 changelog에 공지를 넣었지만, 단 한 달 뒤에 프로덕션 코드가 멈출 수 있다는 사실이 주목받지 못한 채 흘러간 케이스가 많습니다.
마이그레이션 자체는 어렵지 않습니다. 베타 헤더 삭제, 모델 ID 교체, prefilling 패턴 대체 — 이 세 가지가 핵심입니다. 그리고 어차피 해야 할 작업이라면 Sonnet 4.6의 실질적인 성능 개선 (수학 +27p, 컴퓨터 사용 +11.1p, 동일 가격에 1M 정식 지원)까지 얹어서 가는 게 맞는 방향입니다.
Anthropic의 베타 헤더 패턴은 앞으로도 반복될 가능성이 높습니다. interleaved-thinking-2025-05-14 헤더도 지금 deprecated 상태이고, 유사한 종료 타임라인이 예상됩니다. changelog를 일상적인 모니터링 대상으로 두지 않으면 이 패턴에 계속 걸리게 됩니다.
지금 당장 grep 한 줄 돌려서 베타 헤더 사용 여부부터 확인해 보는 걸 권합니다. 5월 1일까지 남은 시간이 많지 않습니다.
📎 본 포스팅 참고 자료
- Anthropic 공식 뉴스룸 — Introducing Claude Sonnet 4.6 (anthropic.com/news/claude-sonnet-4-6)
- Anthropic 공식 API 문서 — Models Overview (docs.anthropic.com/en/docs/about-claude/models)
- Riptide Consulting — The April 30 Cliff: Migrating Off Sonnet 4.5’s 1M Context Beta (riptideconsulting.com)
- NxCode.io — Claude Sonnet 4.6 vs 4.5 Complete Upgrade and Migration Guide (nxcode.io)
- Anthropic 공식 뉴스룸 — Introducing Claude Sonnet 4.5 (anthropic.com/news/claude-sonnet-4-5)
본 포스팅은 2026년 4월 25일 기준으로 작성되었습니다. 본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. Anthropic의 공식 문서 및 changelog를 통해 최신 정보를 반드시 확인하시기 바랍니다.

댓글 남기기