적응형 사고는 Claude Opus 4.6에서 확장된 사고를 사용하는 권장 방법입니다. 사고 토큰 예산을 수동으로 설정하는 대신, 적응형 사고는 Claude가 각 요청의 복잡성에 따라 언제, 얼마나 사고할지 동적으로 결정하도록 합니다.
적응형 사고는 고정된 budget_tokens를 사용하는 확장된 사고보다 안정적으로 더 나은 성능을 제공하며, Opus 4.6에서 가장 지능적인 응답을 얻으려면 적응형 사고로 전환하는 것을 권장합니다. 베타 헤더가 필요하지 않습니다.
적응형 사고는 다음 모델에서 지원됩니다:
claude-opus-4-6)thinking.type: "enabled"와 budget_tokens는 Opus 4.6에서 더 이상 사용되지 않으며(deprecated) 향후 모델 릴리스에서 제거될 예정입니다. 대신 thinking.type: "adaptive"를 effort 매개변수와 함께 사용하세요.
이전 모델(Sonnet 4.5, Opus 4.5 등)은 적응형 사고를 지원하지 않으며 thinking.type: "enabled"와 budget_tokens가 필요합니다.
적응형 모드에서 사고는 모델에게 선택 사항입니다. Claude는 각 요청의 복잡성을 평가하고 사고 여부와 사고량을 결정합니다. 기본 effort 수준(high)에서 Claude는 거의 항상 사고합니다. 더 낮은 effort 수준에서는 Claude가 더 간단한 문제에 대해 사고를 건너뛸 수 있습니다.
적응형 사고는 또한 자동으로 인터리브 사고를 활성화합니다. 이는 Claude가 도구 호출 사이에 사고할 수 있음을 의미하며, 에이전트 워크플로에 특히 효과적입니다.
API 요청에서 thinking.type을 "adaptive"로 설정하세요:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-opus-4-6",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"messages": [
{
"role": "user",
"content": "Explain why the sum of two even numbers is always even."
}
]
}'적응형 사고를 effort 매개변수와 결합하여 Claude가 얼마나 사고할지 안내할 수 있습니다. effort 수준은 Claude의 사고 할당에 대한 소프트 가이던스 역할을 합니다:
| Effort 수준 | 사고 동작 |
|---|---|
max | Claude가 사고 깊이에 제약 없이 항상 사고합니다. Opus 4.6 전용 — 다른 모델에서 max를 사용하는 요청은 오류를 반환합니다. |
high (기본값) | Claude가 항상 사고합니다. 복잡한 작업에 대해 깊은 추론을 제공합니다. |
medium | Claude가 적당한 수준의 사고를 사용합니다. 매우 간단한 쿼리에 대해서는 사고를 건너뛸 수 있습니다. |
low | Claude가 사고를 최소화합니다. 속도가 가장 중요한 간단한 작업에서 사고를 건너뜁니다. |
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=16000,
thinking={
"type": "adaptive"
},
output_config={
"effort": "medium"
},
messages=[{
"role": "user",
"content": "What is the capital of France?"
}]
)
print(response.content[0].text)적응형 사고는 스트리밍과 원활하게 작동합니다. 사고 블록은 수동 사고 모드와 마찬가지로 thinking_delta 이벤트를 통해 스트리밍됩니다:
import anthropic
client = anthropic.Anthropic()
with client.messages.stream(
model="claude-opus-4-6",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "What is the greatest common divisor of 1071 and 462?"}],
) as stream:
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
print(event.delta.text, end="", flush=True)| 모드 | 설정 | 가용성 | 사용 시기 |
|---|---|---|---|
| 적응형 | thinking: {type: "adaptive"} | Opus 4.6 | Claude가 언제, 얼마나 사고할지 결정합니다. effort로 안내하세요. |
| 수동 | thinking: {type: "enabled", budget_tokens: N} | 모든 모델. Opus 4.6에서는 더 이상 사용되지 않음(deprecated) — 대신 적응형 모드를 사용하세요. | 사고 토큰 지출에 대한 정밀한 제어가 필요할 때. |
| 비활성화 | thinking 매개변수 생략 | 모든 모델 | 확장된 사고가 필요 없고 가장 낮은 지연 시간을 원할 때. |
적응형 사고는 현재 Opus 4.6에서 사용할 수 있습니다. 이전 모델은 type: "enabled"와 budget_tokens만 지원합니다. Opus 4.6에서 type: "enabled"와 budget_tokens는 여전히 허용되지만 더 이상 사용되지 않습니다(deprecated) — 대신 적응형 사고를 effort 매개변수와 함께 사용하는 것을 권장합니다.
적응형 사고를 사용할 때, 이전 어시스턴트 턴이 사고 블록으로 시작할 필요가 없습니다. 이는 API가 사고 활성화 턴이 사고 블록으로 시작하도록 강제하는 수동 모드보다 더 유연합니다.
adaptive 사고를 사용하는 연속 요청은 프롬프트 캐시 중단점을 유지합니다. 그러나 adaptive와 enabled/disabled 사고 모드 간 전환은 메시지의 캐시 중단점을 깨뜨립니다. 시스템 프롬프트와 도구 정의는 모드 변경에 관계없이 캐시된 상태를 유지합니다.
적응형 사고의 트리거 동작은 프롬프트로 조정할 수 있습니다. Claude가 원하는 것보다 더 자주 또는 덜 자주 사고한다면, 시스템 프롬프트에 안내를 추가할 수 있습니다:
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.Claude가 덜 자주 사고하도록 유도하면 추론이 도움이 되는 작업의 품질이 저하될 수 있습니다. 프롬프트 기반 조정을 프로덕션에 배포하기 전에 특정 워크로드에 대한 영향을 측정하세요. 먼저 더 낮은 effort 수준으로 테스트하는 것을 고려하세요.
max_tokens를 총 출력(사고 + 응답 텍스트)에 대한 하드 리밋으로 사용하세요. effort 매개변수는 Claude가 할당하는 사고량에 대한 추가적인 소프트 가이던스를 제공합니다. 이 두 가지를 함께 사용하면 비용을 효과적으로 제어할 수 있습니다.
high 및 max effort 수준에서 Claude는 더 광범위하게 사고할 수 있으며 max_tokens 예산을 소진할 가능성이 더 높습니다. 응답에서 stop_reason: "max_tokens"가 관찰되면, 모델에 더 많은 여유를 주기 위해 max_tokens를 늘리거나 effort 수준을 낮추는 것을 고려하세요.
다음 개념은 적응형 또는 수동 모드 사용 여부에 관계없이 확장된 사고를 지원하는 모든 모델에 적용됩니다.
With extended thinking enabled, the Messages API for Claude 4 models returns a summary of Claude's full thinking process. Summarized thinking provides the full intelligence benefits of extended thinking, while preventing misuse.
Here are some important considerations for summarized thinking:
Claude Sonnet 3.7 continues to return full thinking output.
In rare cases where you need access to full thinking output for Claude 4 models, contact our sales team.
Full thinking content is encrypted and returned in the signature field. This field is used to verify that thinking blocks were generated by Claude when passed back to the API.
It is only strictly necessary to send back thinking blocks when using tools with extended thinking. Otherwise you can omit thinking blocks from previous turns, or let the API strip them for you if you pass them back.
If sending back thinking blocks, we recommend passing everything back as you received it for consistency and to avoid potential issues.
Here are some important considerations on thinking encryption:
signature_delta inside a content_block_delta event just before the content_block_stop event.signature values are significantly longer in Claude 4 models than in previous models.signature field is an opaque field and should not be interpreted or parsed - it exists solely for verification purposes.signature values are compatible across platforms (Claude APIs, Amazon Bedrock, and Vertex AI). Values generated on one platform will be compatible with another.Occasionally Claude's internal reasoning will be flagged by our safety systems. When this occurs, we encrypt some or all of the thinking block and return it to you as a redacted_thinking block. redacted_thinking blocks are decrypted when passed back to the API, allowing Claude to continue its response without losing context.
When building customer-facing applications that use extended thinking:
Here's an example showing both normal and redacted thinking blocks:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "redacted_thinking",
"data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}Seeing redacted thinking blocks in your output is expected behavior. The model can still use this redacted reasoning to inform its responses while maintaining safety guardrails.
If you need to test redacted thinking handling in your application, you can use this special test string as your prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB
When passing thinking and redacted_thinking blocks back to the API in a multi-turn conversation, you must include the complete unmodified block back to the API for the last assistant turn. This is critical for maintaining the model's reasoning flow. We suggest always passing back all thinking blocks to the API. For more details, see the Preserving thinking blocks section.
For complete pricing information including base rates, cache writes, cache hits, and output tokens, see the pricing page.
The thinking process incurs charges for:
When extended thinking is enabled, a specialized system prompt is automatically included to support this feature.
When using summarized thinking:
The billed output token count will not match the visible token count in the response. You are billed for the full thinking process, not the summary you see.
확장된 사고 페이지에서는 모드별 코드 예제와 함께 여러 주제를 더 자세히 다룹니다:
tool_choice 제한 사항에 유의하세요.adaptive와 enabled/disabled 모드 간 전환은 메시지의 캐시 중단점을 깨뜨립니다(시스템 프롬프트와 도구 정의는 캐시된 상태를 유지합니다).max_tokens 및 컨텍스트 윈도우 제한과 어떻게 상호작용하는지.수동 모드, 도구 사용, 프롬프트 캐싱을 포함한 확장된 사고에 대해 자세히 알아보세요.
effort 매개변수로 Claude가 얼마나 철저하게 응답할지 제어하세요.
Was this page helpful?