Claude Opus 4.6의 adaptive thinking과 fast mode를 실전에서 활용하는 방법. effort 레벨별 비용 비교, API 코드 예시, 그리고 공식 문서에 없는 실무 팁까지 정리했습니다.
이 글에서 다루는 것
2월 5일에 출시된 Claude Opus 4.6에는 두 가지 핵심 기능이 추가됐습니다. Adaptive Thinking과 Fast Mode입니다. 둘 다 "속도와 비용을 어떻게 조절할 것인가"라는 같은 문제를 다르게 풀고 있어요.
이 글을 다 읽으면 다음을 할 수 있습니다:
Adaptive Thinking의 effort 레벨 4단계를 상황에 맞게 사용 Fast Mode를 API에서 활성화하고, 비용 폭탄 피하기 두 기능을 조합해서 "빠르면서 똑똑한" 최적의 설정 찾기 공식 문서에 잘 안 나오는 실무 팁 3가지 저는 출시 당일부터 사이드 프로젝트와 회사 내부 도구에 적용해봤는데, 솔직히 effort 레벨 하나 바꾸는 것만으로 API 비용이 크게 달라져서 놀랐습니다.
사전 준비
시작하기 전에 다음이 필요합니다:
Anthropic API 키:
- console.anthropic.com 에서 발급 Python SDK 최신 버전: anthropic >= 0.52.0 (adaptive thinking 지원) Claude Opus 4.6 접근 권한: 모델 ID는 claude-opus-4-6 Fast Mode 접근 권한: 현재 research preview 상태.
- 대기 목록 에서 신청 필요 # SDK 설치 또는 업데이트 pip install --upgrade anthropic 한 가지 주의할 점: Fast Mode는 아직 베타입니다. 별도의 beta 헤더(fast-mode-2026-02-01)가 필요하고, 대기 목록 승인을 받아야 합니다. Adaptive Thinking은 별도 헤더 없이 바로 사용 가능합니다.
Step 1: Adaptive Thinking 이해하기
기존 Extended Thinking과 뭐가 다른가
이전 모델(Sonnet 4.5, Opus 4.5 등)에서는 thinking.type: "enabled"와 budget_tokens를 직접 설정해야 했습니다. "이 요청에는 thinking 토큰을 최대 1만 개까지 써라"처럼요. 문제는 적정 budget을 매번 예측하기 어렵다는 거였습니다.
Adaptive Thinking은 이걸 Claude가 알아서 판단하게 넘깁니다. 복잡한 질문이면 깊이 생각하고, 단순한 질문이면 thinking을 건너뛰거나 짧게 합니다. 마치 시험에서 쉬운 문제는 바로 풀고, 어려운 문제는 오래 고민하는 것과 같은 원리입니다.
기본 사용법
import anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-opus-4-6", max_tokens=16000, thinking={ "type": "adaptive" # 이게 핵심. "enabled" 대신 "adaptive" }, messages=[{ "role": "user", "content": "이 Python 함수에서 메모리 누수가 발생하는 원인을 분석해줘." }] ) # 응답에서 thinking과 text를 분리해서 출력 for block in response.content: if block.type == "thinking": print(f"[사고 과정] {block.thinking[:200]}...") elif block.type == "text": print(f"[답변] {block.text}") thinking.type을 "adaptive"로 바꾸는 것만으로 끝입니다. budget_tokens를 설정할 필요 없습니다. 참고로 Opus 4.6에서 기존 "enabled" + budget_tokens 방식은 deprecated 됐습니다. 아직 동작하긴 하지만 향후 버전에서 제거될 예정이니 지금 바꿔두는 게 좋습니다.
Step 2: Effort 레벨로 비용 최적화하기
Adaptive Thinking의 진짜 핵심은 effort 파라미터입니다. 4단계로 Claude의 사고 깊이를 조절할 수 있습니다.
Effort 레벨 동작 추천 상황 체감 비용 low 단순 질문은 thinking 건너뜀 번역, 포맷 변환, 단순 코드 생성 기본 대비 ~40% 절감 medium 적당히 생각. 쉬운 건 스킵 코드 리뷰, 일반 질의응답 기본 대비 ~20% 절감 high (기본값) 거의 항상 thinking 수행 버그 분석, 아키텍처 설계 기준 비용 max 제한 없이 깊이 사고 복잡한 수학, 보안 분석, 논문 검증 기본 대비 ~50% 증가 import anthropic client = anthropic.Anthropic() # 단순 작업: low effort로 비용 절약 simple_response = client.messages.create( model="claude-opus-4-6", max_tokens=4000, thinking={"type": "adaptive"}, output_config={"effort": "low"}, # 핵심: effort 레벨 지정 messages=[{ "role": "user", "content": "다음 JSON을 TypeScript 인터페이스로 변환해줘: {\"name\": \"string\", \"age\": 0}" }] ) # 복잡한 작업: max effort로 정확도 극대화 complex_response = client.messages.create( model="claude-opus-4-6", max_tokens=32000, thinking={"type": "adaptive"}, output_config={"effort": "max"}, # 제한 없는 사고 messages=[{ "role": "user", "content": "이 분산 시스템에서 동시성 버그가 발생하는 시나리오를 모두 나열하고, 각각의 해결 방안을 제시해줘." }] ) 제가 실제로 테스트해본 결과, 같은 코드 리팩토링 요청을 low와 high로 보냈을 때 출력 토큰 차이가 약 3배였습니다. low에서는 thinking을 아예 건너뛰고 바로 답변을 생성하더군요. 단순 변환 작업에서는 low로도 품질 차이를 거의 못 느꼈습니다.
이건 공식 문서에 잘 안 나오는 팁인데요
Effort 레벨은 시스템 프롬프트로도 미세 조정할 수 있습니다. 예를 들어 high effort에서도 불필요한 thinking을 줄이고 싶다면:
response = client.messages.create( model="claude-opus-4-6", max_tokens=16000, thinking={"type": "adaptive"}, output_config={"effort": "high"}, system="Extended thinking adds latency and should only be used when it " "will meaningfully improve answer quality — typically for problems " "that require multi-step reasoning. When in doubt, respond directly.", messages=[{"role": "user", "content": "이 코드를 리뷰해줘."}] ) 이렇게 하면 high effort임에도 단순한 요청에서는 thinking 비중이 줄어듭니다. 다만 공식 문서에서도 경고하듯이, thinking을 줄이면 복잡한 작업에서 품질이 떨어질 수 있으니 반드시 본인 워크로드에서 테스트해보세요.
Step 3: Fast Mode로 속도 2.5배 올리기
Adaptive Thinking이 "얼마나 깊이 생각할까"를 조절한다면, Fast Mode는 "얼마나 빨리 출력할까"를 조절합니다. 같은 모델, 같은 지능인데 출력 속도만 최대 2.5배 빨라집니다.
import anthropic client = anthropic.Anthropic() # Fast Mode 활성화 (베타 헤더 필요) response = client.beta.messages.create( model="claude-opus-4-6", max_tokens=4096, speed="fast", # 핵심: speed 파라미터 betas=["fast-mode-2026-02-01"], # 베타 헤더 messages=[{ "role": "user", "content": "Express.js에서 rate limiter 미들웨어를 작성해줘." }] ) # 실제로 fast mode가 적용됐는지 확인 print(f"사용된 속도: {response.usage.speed}") # "fast" 또는 "standard"
Fast Mode 가격: 솔직히 비쌉니다
여기서 현실적인 이야기를 해야 합니다. Fast Mode는 표준 가격의 6배입니다.
구분 Input (MTok) Output (MTok) Standard Opus 4.6 $5 $25 Fast Mode (≤200K) $30 $150 Fast Mode (>200K) $60 $225 2월 16일까지 50% 할인 프로모션이 있어서 지금은 3배 수준이지만, 정가로 돌아가면 부담이 큽니다. 그래서 저는 Fast Mode를 모든 요청에 켜두지 않고, 체감 차이가 큰 특정 상황에서만 사용합니다:
에이전트 워크플로우: 도구 호출을 반복하며 여러 턴을 거치는 작업. 각 턴의 출력 속도가 체감 속도에 직결됨 실시간 코드 완성: 사용자가 기다리는 인터랙티브 환경 대량 출력: 긴 코드나 문서를 생성할 때 (출력 토큰이 많을수록 속도 차이 체감) 반대로 **TTFT(첫 토큰까지의 시간)**는 Fast Mode에서도 크게 개선되지 않습니다. 짧은 한 줄 답변이 필요한 경우에는 비용 대비 효과가 거의 없습니다.
Rate Limit 초과 시 자동 폴백
Fast Mode의 rate limit이 초과되면 429 에러가 발생합니다. 프로덕션에서는 standard로 자동 폴백하는 패턴을 꼭 구현하세요:
import anthropic client = anthropic.Anthropic() def call_with_fast_fallback(**params): """Fast Mode 시도 후, rate limit 초과 시 standard로 폴백""" try: return client.beta.messages.create(**params, max_retries=0) except anthropic.RateLimitError: if params.get("speed") == "fast": del params["speed"] return client.beta.messages.create(**params) raise response = call_with_fast_fallback( model="claude-opus-4-6", max_tokens=4096, speed="fast", betas=["fast-mode-2026-02-01"], messages=[{"role": "user", "content": "코드 리뷰해줘"}] ) 주의할 점이 하나 있습니다. Fast와 Standard 사이를 전환하면 프롬프트 캐시가 무효화됩니다. 즉, 폴백이 발생하면 캐시 히트를 못 받아서 비용이 약간 늘어날 수 있어요. 빈번한 폴백이 예상되면 처음부터 Standard로 보내는 게 나을 수도 있습니다.
Step 4: 두 기능 조합하기 (실전 패턴)
Adaptive Thinking과 Fast Mode는 동시에 사용할 수 있습니다. 이게 진짜 강력한 조합입니다.
패턴 1: 빠르고 가벼운 응답 (채팅봇, 단순 질의)
effort: low + speed: fast = 최소 thinking + 최고 속도 response = client.beta.messages.create( model="claude-opus-4-6", max_tokens=2000, thinking={"type": "adaptive"}, output_config={"effort": "low"}, speed="fast", betas=["fast-mode-2026-02-01"], messages=[{"role": "user", "content": "Python에서 리스트 컴프리헨션 문법 알려줘"}] )
패턴 2: 깊은 분석을 빠르게 (코드 리뷰, 디버깅)
effort: high + speed: fast = 충분한 thinking + 빠른 출력 response = client.beta.messages.create( model="claude-opus-4-6", max_tokens=16000, thinking={"type": "adaptive"}, output_config={"effort": "high"}, speed="fast", betas=["fast-mode-2026-02-01"], messages=[{"role": "user", "content": "이 코드의 보안 취약점을 분석해줘"}] )
패턴 3: 비용 효율 극대화 (배치 작업)
effort: medium + speed: standard = 적당한 thinking + 표준 가격 response = client.messages.create( model="claude-opus-4-6", max_tokens=8000, thinking={"type": "adaptive"}, output_config={"effort": "medium"}, messages=[{"role": "user", "content": "이 함수에 타입 힌트를 추가해줘"}] ) 제 경험상 가장 자주 쓰는 조합은 패턴 3입니다. 대부분의 일상적인 코딩 작업에서 medium effort와 standard speed면 충분하고, 비용도 합리적입니다. Fast Mode는 에이전트 루프처럼 응답 속도가 전체 작업 시간에 직결되는 경우에만 켜는 게 지갑에 이롭습니다.
자주 발생하는 에러와 해결법
1. stop_reason: "max_tokens" 가 자꾸 뜨는 경우
max effort에서 Claude가 thinking에 토큰을 너무 많이 쓰면 실제 답변이 잘리는 경우가 있습니다. thinking 토큰도 max_tokens 한도에 포함되기 때문입니다.
해결: max_tokens를 넉넉하게 늘리거나, effort를 high로 낮추세요.
2. Fast Mode에서 429 Too Many Requests
Fast Mode는 Standard와 별도의 rate limit을 가집니다. 응답 헤더의 anthropic-fast-output-tokens-remaining을 확인해서 남은 쿼터를 모니터링하세요.
해결: 위의 폴백 패턴을 구현하거나, 요청 간격을 조절하세요.
3. "enabled" 타입으로 보냈는데 경고가 뜨는 경우
Opus 4.6에서 thinking.type: "enabled"는 deprecated입니다. 동작은 하지만 향후 제거될 예정이라는 경고가 로그에 찍힙니다.
해결: "enabled" + budget_tokens를 "adaptive" + effort로 교체하세요.
정리 + 다음 단계
핵심만 요약하면 이렇습니다:
Adaptive Thinking: thinking.type: "adaptive"로 전환. Claude가 알아서 사고 깊이 조절 Effort 레벨: low → medium → high → max 순으로 비용/품질 트레이드오프 Fast Mode: speed: "fast" + beta 헤더로 출력 2.5배 가속. 단, 가격 6배 조합 전략: 일상 작업은 medium + standard, 에이전트/실시간은 high + fast 개인적으로 가장 큰 변화는 effort 레벨의 도입입니다. 이전에는 모든 요청에 동일한 비용을 내야 했는데, 이제는 "이건 간단한 질문이니까 가볍게"라는 선택지가 생긴 거죠. API 비용이 부담되는 개인 프로젝트에서 low와 medium만 잘 활용해도 체감 비용이 확 줄어듭니다.
다음 글에서는 Adaptive Thinking을 에이전트 워크플로우(tool use + interleaved thinking)에 적용하는 심화 가이드를 다뤄볼 예정입니다. 도구 호출 사이에 Claude가 중간중간 생각하는 interleaved thinking은 멀티스텝 에이전트의 정확도를 눈에 띄게 높여주거든요.
혹시 이미 Opus 4.6을 실무에 적용해보신 분이 있다면, 어떤 effort 레벨을 주로 사용하시는지 댓글로 공유해주세요.
내부 링크:
- Claude Opus 4.6 vs GPT-5.3 Codex (Opus 4.6의 전반적인 성능 비교가 궁금하다면)
- 내가 AI 도구를 3개월 써본 솔직 후기 (AI 도구 비용 관리 노하우가 담긴 글)