Skip to Content
모델 사용법Claude확장 사고

Claude 확장 사고

이 페이지에서는 Claude의 확장 사고를 켜고 사고 내용을 읽는 방법을 설명합니다. 모델 ID와 엔드포인트 주소는 Claude 시리즈 개요를 참고하십시오.

요점네이티브 API에서는 thinking을, OpenAI 호환 API에서는 reasoning 객체를 전달합니다. 사고를 켤 때는 temperature를 설정하지 마십시오.

확장 사고는 모델이 답변하기 전에 먼저 추론하도록 하는 기능으로, 수학, 코드, 여러 단계의 분석에 적합합니다. 실측 결과 다음 모델은 기본 공급자에서 사고 내용을 안정적으로 반환합니다. Opus 5.5, Opus 5, Opus 4.8, Opus 4.6, Sonnet 4.6, Haiku 5.5, Haiku 4.5, Fable 5.

Anthropic 네이티브 API

두 가지 모드가 있습니다.

모드작성법설명
고정 예산"thinking": {"type": "enabled", "budget_tokens": 2000}budget_tokens는 1024 이상이어야 하며 max_tokens보다 작아야 함
자동 조절"thinking": {"type": "adaptive"}모델이 사고 깊이를 결정. "output_config": {"effort": "low"} 등으로 조절 가능
claude_thinking.py
import os import anthropic client = anthropic.Anthropic(base_url="https://api.ofox.ai/anthropic", api_key=os.environ["OFOX_API_KEY"]) message = client.messages.create( model="anthropic/claude-opus-5.5", max_tokens=4000, thinking={"type": "enabled", "budget_tokens": 2000}, messages=[{"role": "user", "content": "라켓과 공을 합쳐 1.10달러이고, 라켓이 공보다 1달러 비쌉니다. 공은 얼마입니까?"}], ) for block in message.content: if block.type == "thinking": print("[사고]", block.thinking) elif block.type == "text": print("[답변]", block.text)
  • 응답의 content에는 thinking 블록이 먼저 나오고 그다음 text 블록이 나옵니다. thinking 블록에는 signature가 포함되며, 여러 차례의 도구 호출에서는 이를 그대로 다시 전달해야 합니다.
  • 스트리밍 출력에서는 사고 내용이 thinking_delta 이벤트로 반환되고, 이어서 signature_delta 이벤트가 한 번 온 뒤 text_delta가 시작됩니다.
  • 사고를 켤 때는 temperature를 설정하지 말고(또는 1로 설정), top_k도 설정하지 마십시오.
  • 사고에 소비된 토큰은 output_tokens에 포함되며 출력 단가로 과금됩니다.

OpenAI 호환 API

reasoning 객체로 켜며, max_tokens가 사고 예산입니다.

claude_thinking_openai.py
import os from openai import OpenAI client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"]) resp = client.chat.completions.create( model="anthropic/claude-sonnet-4.6", max_tokens=4000, extra_body={"reasoning": {"max_tokens": 2000}}, messages=[{"role": "user", "content": "라켓과 공을 합쳐 1.10달러이고, 라켓이 공보다 1달러 비쌉니다. 공은 얼마입니까?"}], ) msg = resp.choices[0].message details = getattr(msg, "reasoning_details", None) or [] print("[사고]", "".join(d.get("text", "") for d in details)) print("[답변]", msg.content)
  • 비스트리밍 응답에서는 사고 내용이 message.reasoning_details에 있으며, 각 항목의 text를 순서대로 이어 붙이십시오.
  • 스트리밍 응답에서는 사고 내용이 delta.reasoning_content에 있습니다.

기타 오류는 자주 발생하는 오류를 참고하십시오.

마지막 업데이트