output_config.effort(노력 수준) 및 thinking(적응형 thinking)의 올바른 사용 방법을 다룹니다.
채널, 과금, 기본 온보딩은 먼저 Claude API Basics 페이지를 참조하십시오.
적용 가능한 모델: Claude Opus 4.8 / 4.7 / 4.6, Sonnet 4.6 등입니다. 이 페이지에서는 예시로 Opus 4.8을 사용합니다.
온라인 테스트 도구
코드를 작성하고 싶지 않으신가요? 먼저 APIYI 온라인 추론 테스터를 사용해 보십시오: 모델과 추론 수준을 선택하고, Max Tokens를 설정한 뒤, 「추론 요약 반환」을 체크하고, 각 추론 수준이 어떻게 추론하는지 브라우저에서 바로 비교할 수 있습니다.추론 테스터 · APIYI 온라인 도구
브라우저에서 Claude(GPT / Gemini 포함) 추론 테스트를 코드 없이 바로 실행할 수 있습니다. APIYI 키만 붙여 넣으면 됩니다.

요청 구조
엔드포인트 및 헤더
APIYI가 Bedrock으로 라우팅할 때, 클라이언트는 여전히 Anthropic 네이티브 형식(
x-api-key + /v1/messages)을 사용합니다. 게이트웨이가 내부적으로 Bedrock의 bedrock-2023-05-31로의 변환을 처리합니다. anthropic_version: bedrock-2023-05-31를 설정할 필요는 없습니다.최소 요청 본문
effort 수준
effort는 결과를 생성하는 데 Claude가 사용할 token 수를 제어하며, 철저함과 속도/비용 사이를 절충합니다. 이는 답변, 도구 호출, 그리고 확장된 사고를 포함한 모든 token 소비에 영향을 미칩니다.
effort가 포함된 요청 본문
수준 개요
각 모델이 지원하는 수준
모든 모델이 모든 수준을 지원하는 것은 아닙니다.xhigh는 Opus 4.7에 추가되었으며, max는 Sonnet에서 지원되지 않습니다:
적응형 추론
Opus 4.7 / 4.8은 적응형 추론을 사용합니다. 모델이 언제 얼마나 생각할지 결정하며, effort가 깊이를 제어합니다.thinking.type: "adaptive"— 적응형 추론을 활성화합니다(생략하면 모델은 추론하지 않습니다).thinking.display: "summarized"— 응답에 추론 요약 블록을 반환합니다. 노출할 필요가 없으면 생략하십시오.- effort와 추론의 관계:
high/xhigh/max은 거의 항상 깊게 추론하며;low/medium은 단순한 문제에서는 추론을 건너뛸 수 있습니다. display기본값은 모델마다 다릅니다: Opus 4.6은summarized을 기본값으로 사용하는 반면, Opus 4.7 / 4.8은omitted을 기본값으로 사용합니다(추론 블록은 여전히 존재하지만 그thinking텍스트는 비어 있어, 답변 전에 잠깐 멈춘 것처럼 보입니다). 요약을 안정적으로 받으려면display: "summarized"을 명시적으로 설정하십시오.- 네이티브 API에는
-thinking접미사 모델이 없습니다. 모델이 추론할지는 모델 이름 접미사가 아니라thinking매개변수가 제어합니다.xxx-thinking은 모두 서드파티 별칭일 뿐이므로, 기본 모델 ID와thinking매개변수만 사용하십시오.
추론 요약이 실제로 무엇인지(중요)
- 요약은 **Anthropic(모델/서빙 레이어)**가 생성하며, 게이트웨이도 아니고 별도 모델도 아닙니다. 원본 추론 과정은 절대 그대로 반환되지 않으며, 받는 것은 공식 요약입니다.
- 시스템 prompt로는 추론 요약의 스타일을 지정할 수 없습니다.
system는 모델이 어떻게 생각하는지와 최종 답변의 스타일을 형성하며, 요약은 내부 추론을 읽기 쉽게 표현한 것일 뿐입니다. 톤, 서식, 스타일 요구사항은 최종 답변의 제약에 넣어야text블록에 반영됩니다. - 모델에게 내부 추론을 답변에 그대로 출력하라고 prompt하지 마십시오. 거부를 유발할 수 있습니다(
stop_reason: "refusal", 그리고stop_details.category가reasoning_extraction될 수도 있습니다). 추론을 보려면 대신display: "summarized"요약을 읽으십시오.
동일한 모델에서 다중 턴 대화를 계속할 때는 이전 턴의 추론 블록을 서명과 빈 텍스트 블록을 포함해 변경하지 않은 채 다시 전달하십시오. API는 수정된 추론 블록을 거부합니다. 요약을 표시하는 것은 괜찮지만, 다시 전달하기 전에 편집하는 것은 안 됩니다.
응답 파싱
응답content은 type로 구분되는 블록 배열입니다:
usage 필드에 있습니다:
stop_reason가 max_tokens이면, 출력은 max_tokens에 의해 잘렸으며(고강도에서는 추론이 예산을 쉽게 채울 수 있습니다), 답변 텍스트가 비어 있을 수도 있습니다. 그때는 그냥 max_tokens를 발생시키십시오.스트리밍(stream)에서의 thinking 필드
stream: true에서는 thinking content가 delta.text를 통해 전달되지 않습니다 — 별도의 이벤트 시퀀스입니다:
답변 텍스트는 여전히
delta.type = "text_delta" → delta.text를 통해 전달됩니다. display: "omitted"에서는 thinking 블록이 여전히 표시되지만 delta.thinking는 빈 문자열입니다.
전체 실행 예시
Bedrock 경로에 대한 참고 사항
문제 해결
"thinking.type.enabled" is not supported for this model
AWS (Bedrock) 경로를 통해 Opus 4.7 / 4.8을 호출할 때 가장 흔한 400 오류는 다음과 같습니다:
thinking: { "type": "enabled", "budget_tokens": N }을 사용하고 있습니다. Opus 4.7 / 4.8(및 이후 모델)은 이를 제거했으며 적응형 thinking만 지원합니다. AWS 업스트림에서는 ValidationException 400을 반환합니다. 이는 위의 적응형 thinking 섹션에 있는 참고 사항과 일치합니다.
해결 방법: type: "enabled"와 budget_tokens을 제거하고, adaptive + output_config.effort로 thinking 깊이를 제어합니다.
thinking 없이 실행하려면: Opus 4.7 / 4.8은
thinking: { "type": "disabled" }를 허용하며, 또는 thinking 필드를 그냥 생략하면 됩니다(필드가 없으면 thinking도 없습니다).참고 자료
- Anthropic — Effort 문서:
platform.claude.com/docs/en/build-with-claude/effort - AWS Bedrock — 적응형 사고:
docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html - AWS Bedrock — Claude Opus 4.8:
docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html