Claude Sonnet 5 적응형 사고(Adaptive Thinking)와 Effort 파라미터로 토큰 비용 최적화하기

2026년 AI 프론티어 모델 시장의 새로운 표준으로 자리 잡은 Claude Sonnet 5는 이전 세대(Claude Sonnet 4.6)와 API 요청/응답 구조가 동일한 드롭인 업그레이드지만, 사고(Thinking) 제어 방식에서 만큼은 이전과 완전히 다르다. Claude Sonnet 4.6까지 쓰이던 수동 확장 사고(thinking: { type: "enabled", budget_tokens: N })는 Sonnet 5에서 완전히 제거되어 400 에러를 반환하며, 대신 기본으로 켜진 **적응형 사고(Adaptive Thinking)**와 output_config.effort 파라미터로 사고 깊이·토큰 소비를 제어한다.
본 가이드에서는 Claude Sonnet 5 API의 thinking: { type: "adaptive" } + effort 조합 제어 구조, 신규 토크나이저가 토큰 비용 산정에 미치는 영향, 그리고 프로덕션 파이프라인에서 요청 단위로 비용을 최적화하는 실전 패턴을 다룬다.
핵심 요약
- Claude Sonnet 5는 요청에
thinking필드를 생략하면 기본으로 적응형 사고가 켜진 채 동작한다(Sonnet 4.6까지는 반대로 기본이 꺼짐이었다). 끄려면thinking: { type: "disabled" }를 명시해야 한다.- 사고 깊이는 더 이상
budget_tokens정수값이 아니라output_config: { effort: "low" | "medium" | "high" | "xhigh" | "max" }레벨로 제어한다. 기본값은high.temperature/top_p/top_k를 기본값이 아닌 값으로 설정하면 400 에러를 반환한다 — Sonnet 4.6에는 없던 새 제약이다.- Sonnet 5는 신규 토크나이저를 써서 동일 텍스트가 Sonnet 4.6 대비 약 30% 더 많은 토큰으로 계산된다. 요금은 토큰당 단가가 아니라 토큰 수 자체가 늘어나는 방식으로 비용에 영향을 준다.
- 도입가 입력 $2 / 출력 $10(백만 토큰당)가 2026년 8월 31일까지 적용되고, 이후 표준가 $3 / $15로 전환된다.
Claude Sonnet 5 사고 제어 아키텍처
| 파라미터 / 모드 | effort: "low" |
effort: "high" (기본값) |
effort: "xhigh" |
|---|---|---|---|
| 적용 유스케이스 | 단순 분류, 챗봇 응답, 고빈도 저지연 요청 | 복잡한 추론, 어려운 코딩 문제, 에이전틱 작업 | 30분 이상 걸리는 장기 코딩/에이전틱 작업 |
| 사고 방식 | 적응형 사고가 대부분의 요청에서 생략됨 | 필요할 때 적응형 사고 발동 | 더 깊고 잦은 사고 |
| 속도/비용 특성 | 가장 빠르고 저렴 | 균형점(파라미터 생략과 동일 동작) | 토큰 소비가 크게 증가 |
effort를 명시하지 않으면 high와 동일하게 동작한다. max는 토큰 소비 제한 없이 최고 성능을 내는 레벨로, 정말 어려운 문제에만 쓴다.
Claude Sonnet 5 API 호출 실전 코드
Node.js / TypeScript 환경에서 Anthropic SDK로 effort를 태스크 난이도에 따라 동적으로 조절하는 실전 코드다. Sonnet 4.6 이하에서 쓰던 thinking.budget_tokens를 그대로 가져오면 400 에러가 난다 — 마이그레이션 시 반드시 아래처럼 바꿔야 한다.
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
type Effort = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
async function runAdaptiveThinking(prompt: string, effort: Effort) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-5',
max_tokens: 8192,
// Sonnet 4.6까지 쓰던 { type: 'enabled', budget_tokens: N } 은
// Sonnet 5에서 제거되어 400 에러를 반환한다. 끄고 싶을 때만 명시하면 되고,
// 생략하면 적응형 사고가 기본으로 켜진 채 동작한다.
thinking: { type: 'adaptive' },
output_config: { effort },
messages: [
{
role: 'user',
content: prompt,
},
],
});
for (const block of response.content) {
if (block.type === 'thinking') {
console.log('[Claude Sonnet 5 Thinking]:', block.thinking);
} else if (block.type === 'text') {
console.log('[Claude Sonnet 5 Response]:', block.text);
}
}
}
// 단순 태스크는 low, 복잡한 리팩토링/에이전틱 작업은 xhigh
await runAdaptiveThinking('이 JSON을 스키마에 맞게 정규화해줘', 'low');
await runAdaptiveThinking('이 레포의 순환 의존성을 찾아서 리팩토링 계획을 세워줘', 'xhigh');
사고를 완전히 끄고 싶은 요청(지연 시간이 절대적으로 중요한 단순 응답)에는 thinking: { type: 'disabled' }를 명시한다. temperature나 top_p를 함께 조정하려는 유혹이 들 수 있는데, Sonnet 5에서는 기본값이 아닌 샘플링 파라미터를 보내는 순간 400 에러이므로 톤 조절은 시스템 프롬프트 지시로 대체해야 한다.
신규 토크나이저와 프로덕션 비용 최적화 전략
- 토큰 재측정 (Recount, Don’t Reuse):
Sonnet 4.6 기준으로 측정해 둔 토큰 수/예산을 그대로 재사용하면 안 된다. 동일 텍스트가 신규 토크나이저에서 약 30% 더 많은 토큰으로 잡히므로,
max_tokens를 포함해 토큰 예산과 관련된 모든 값을 Token Counting API로 다시 측정해야 한다. - Effort 동적 라우팅 (Task Complexity Router):
사용자 요청이나 코드 변경 건수의 복잡도를 측정해
effort값을 자동으로 매핑한다. 고빈도·단순 응답은low로 비용을 낮추고, 에이전틱 코딩·심층 분석에는xhigh로 승격한다. - 프롬프트 캐싱 (Prompt Caching):
대용량 코드베이스나 라이브러리 타입 정의를 System Prompt로 전달할 때
cache_control: { type: "ephemeral" }을 지정해 캐시 히트 시 최대 90% 토큰 할인을 받는다. 단, 동일 대화 안에서effort값을 바꾸면 캐시된 프리픽스가 무효화되므로, 세션 시작 시 정한 effort는 그 세션 안에서 유지하는 편이 캐시 적중률에 유리하다. - 도입가 기간 활용: 2026년 8월 31일까지는 입력 $2 / 출력 $10(백만 토큰당) 도입가가 적용된다. 이후 표준가 $3 / $15로 전환되므로, 대규모 마이그레이션 테스트나 백필 작업은 이 기간 안에 몰아서 처리하는 편이 비용상 유리하다.
Claude Sonnet 5의 적응형 사고와 effort 파라미터를 프로덕션 시스템에 맞게 라우팅하면, Sonnet 4.6 대비 늘어난 토큰 단가 부담을 상쇄하면서도 예측 가능한 파이프라인 비용을 유지할 수 있다.