AI 입문가이드
추론 effort와 사고 토큰: 사고가 더 비싼 이유
사고 토큰은 출력으로 청구됩니다. effort 단계의 의미, 답변이 잘리지 않도록 max_tokens에 넣을 값, 청구서를 추정하는 방법을 설명합니다.

이 페이지의 내용
요청은 사실 확인 질문 하나였습니다. 답변은 세 줄이었습니다. 그런데 출력 카운터는 수천 토큰을 가리킵니다. 이는 버그가 아닙니다. 답변하기 전에 많은 모델이 숨겨진 스크래치패드에서 사고하는데, 그 사고 토큰은 출력 토큰으로 청구됩니다. effort 설정은 그 사고가 얼마나 일어날지를 결정하며, max_tokens는 이를 위한 여유를 남겨두어야 합니다. 그렇지 않으면 답변이 잘리거나 비어 있게 됩니다.
모델이 답변하기 전에 하는 일#
시험을 떠올려 보세요. 바로 답을 쓸 수도 있고, 먼저 한 페이지 분량의 연습장을 채울 수도 있습니다. 어려운 문제에서는 연습장이 더 나은 결과를 주는 경우가 많지만, 종이는 공짜가 아닙니다. 추론이 바로 그 연습장이며, 다른 모든 것과 마찬가지로 토큰으로 계산됩니다.
Anthropic의 확장 사고 문서(2026년 10월 23일 확인)에 따르면 사고 토큰은 청구되는 출력 토큰의 일부이며, 응답에서 그 수를 알려줍니다: usage.. 응답이 다음과 같은 usage 블록과 함께 돌아온다고 가정해 봅시다(예시 숫자):
"usage": {
"input_tokens": 480,
"output_tokens": 2150,
"output_tokens_details": { "thinking_tokens": 1900 }
}2,150개의 출력 토큰에 대해 청구됩니다. 사고가 그중 1,900개를 차지했으므로, 실제로 읽는 텍스트는 2,150 − 1,900 = 250 토큰입니다. 사고 텍스트가 반환되지 않는 경우에도 마찬가지입니다. 여전히 계산됩니다. 입력과 출력의 차이를 먼저 명확히 알고 싶다면 입력 vs 출력 토큰부터 시작하세요.
Effort: 사고를 조절하는 다이얼#
Claude의 API에서 다이얼은 output_입니다. Anthropic의 effort 페이지(2026년 10월 23일 확인)에는 다섯 단계가 나열되어 있습니다: low, medium, high, xhigh, max. 초보자에게 중요한 세 가지 세부 사항이 있습니다:
- 사고뿐만 아니라 모든 출력 토큰에 영향을 미칩니다: 텍스트, 도구 호출, 사고가 함께 영향을 받습니다.
- 이는 행동 신호이지 엄격한 예산이 아닙니다. 낮은 effort는 일부 능력을 대가로 더 적은 토큰을 의미하며, 낮은 effort에서 Claude는 간단한 문제에서는 사고를 완전히 건너뛸 수 있습니다.
- 기본값은 Claude Opus 5.5와 Claude Haiku 5.5에서
medium이고, 이 매개변수를 지원하는 대부분의 다른 모델에서는high입니다. 기본값을 명시적으로 설정하는 것은 생략하는 것과 같습니다.
단계는 모델별로 재보정되므로, 한 모델의 high은 다른 모델의 high과 같은 양의 사고가 아니며, 모든 모델이 모든 단계를 받아들이는 것은 아닙니다. 공개된 한 영상에서는 누군가 Claude Opus 5.5의 모든 effort 단계를 동일한 모션 그래픽 작업에 실행하고 그림을 비교했습니다. 더 많은 사고가 무엇을 얻는지 보는 좋은 방법입니다. 하지만 여러분의 청구서를 알려주지는 않습니다. 여러분의 작업은 그들의 작업과 다르기 때문입니다.
간단한 질문에 대한 요청으로, effort를 낮춘 경우:
{
"model": "claude-opus-5-5",
"max_tokens": 4000,
"output_config": { "effort": "low" },
"messages": [
{ "role": "user", "content": "What is the capital of Australia?" }
]
}빈 답변 함정: 사고는 max_tokens에 포함됩니다#
이것이 잘못되는 방식은 다음과 같습니다. 두 문장짜리 답변을 기대해서 max_tokens을 300으로 설정합니다. 모델이 사고를 시작하고, 스크래치패드에 300을 다 쓰고, 한도에 도달해 멈춥니다. 빈 응답이나 단어 중간에 끝나는 문장을 받게 되고, 중지 이유는 max_tokens이라고 표시됩니다.
문서는 명확합니다: max_tokens은 사고와 응답 텍스트를 합친 전체 출력에 대한 하드 한도이며, 사고 내용이 반환되지 않더라도 사고는 계산됩니다. high effort 이상에서는 Anthropic이 큰 값을 설정하라고 권장합니다.
실제로는:
- 원하는 답변의 길이를 정합니다.
- 사고를 위한 넉넉한 여유를 더합니다.
low이상에서는 몇천 토큰이 합리적인 시작점입니다. - 첫 실행 후 중지 이유를 확인합니다. 여전히
max_tokens이라고 표시되면 한도를 높입니다. 답변이 완전하면 낮출 수 있습니다.
잘림 자체와 finish_reason, 컨텍스트 윈도우에 대해서는 AI 답변이 문장 중간에 멈추는 이유에서 다룹니다.
긴 추론이 청구서에 미치는 영향#
하루 2,000건의 티켓을 처리하는 지원 봇을 운영한다고 가정해 봅시다. 각 티켓은 입력이 약 500 토큰입니다. 짧고 직접적인 답변은 출력이 약 400 토큰입니다. 같은 티켓을 길고 숨겨진 추론으로 처리하면 출력이 약 4,000 토큰입니다. 이는 예시를 위한 가정입니다. 자신의 숫자는 요청이 사용하는 토큰 수를 참고하세요.
하루 기준으로 2,000 × 500 = 1,000,000 입력 토큰이고, 출력은 2,000 × 400 = 800,000 토큰 또는 2,000 × 4,000 = 8,000,000 토큰입니다. 티켓을 읽는 사람은 어느 쪽이든 같은 두 줄을 봅니다. 달라진 것은 출력량뿐이며, 추론이 부풀리는 쪽이 바로 출력입니다.
계산은 숨겨진 추론을 청구하는 모든 모델에서 동일합니다: 출력 토큰 × 출력 가격. DeepSeek-V4-Flash의 경우 그 가격은 1M 출력 토큰당 $0.10이며, 출력 쪽이 OpenRouter의 참조 가격보다 저렴합니다. 또한 380K 컨텍스트로 한 번에 최대 32,768 토큰까지 답변하므로 큰 max_tokens도 들어갑니다. 가격은 모델별로 고정되어 있고 피크 시간이 없으며, 위 표는 실시간 가격 목록에서 다시 계산됩니다. 모든 가격은 가격 페이지에 있습니다. DeepSeek 페이지에는 모델 세부 정보가 있습니다.
직접 보내볼 요청이 있습니다. 단순 요약 작업이므로 긴 추론이 필요 없고, 한도에 여유가 충분합니다:
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/DeepSeek-V4-Flash-0731",
"max_tokens": 2000,
"messages": [
{"role": "user", "content": "Summarize in one sentence: A token is a small piece of text that a model reads and writes, and APIs bill by the token."}
]
}'응답에서 usage.는 출력 쪽에서 지불하는 금액이고, finish_reason은 stop이어야 합니다. length이라고 표시되면 한도가 답변을 잘랐습니다. 키 발급과 첫 호출: 문서.
어떤 작업에 어떤 effort를 쓸까#
- 사실, 한 줄 요약, 레이블. 가장 낮은 effort. 글 시작 부분의 사례입니다. 연습장이 필요 없습니다.
- 일상적인 글쓰기, 짧은 설명, 간단한 편집. 모델의 기본값. 답변 비용을 확인한 후에만 변경하세요.
- 까다로운 버그, 다단계 계획, 수학 문제.
high이상, 그리고 큰max_tokens. 여기서는 추가 사고가 핵심입니다.
확실하지 않으면 같은 프롬프트를 두 단계로 실행하고, 답변을 비교하고, output_tokens를 비교하세요. 더 저렴한 답변이 같은 품질이면 그 단계가 정답입니다.
오래된 요청 옮기기: 400 오류#
오래된 코드는 토큰 예산으로 사고를 제어했습니다. Claude 4.7 및 이후 모델(Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1)에서는 그 형식이 400 오류로 거부됩니다. 적응형 사고로 전환하고 effort로 깊이를 설정합니다:
// before: returns 400 on newer models
"thinking": { "type": "enabled", "budget_tokens": 8000 }
// after
"thinking": { "type": "adaptive" },
"output_config": { "effort": "medium" }
함정이 하나 더 있습니다: Opus 5.5에서는 적응형 사고가 항상 켜져 있고, thinking: { "type": "disabled" }는 모든 effort 단계에서 400을 반환합니다. Haiku 5.5는 high effort 이하에서 사고를 비활성화할 수 있습니다. Opus 5.5에서 사고를 줄이고 싶다면 끄는 대신 effort를 낮추세요.
에이전트와 긴 대화: 한 단계를 골라 유지하세요#
프롬프트가 캐시된 경우, 요청 간에 최상위 effort를 변경하면 해당 대화의 캐시 중단점이 무효화됩니다. 에이전트 루프나 긴 대화에서는 처음부터 한 단계를 선택하세요. 일부 모델은 캐시를 유지하는 베타 버전의 메시지별 effort를 제공하는데, 기본기를 갖춘 후에는 살펴볼 가치가 있습니다. 긴 대화에는 두 번째 비용 요인이 있으며, 긴 대화가 더 비싼 이유에서 다룹니다.
자신의 요청으로 시도해 보세요#
- 실제 프롬프트를 한 번 보내고
usage을 읽으세요: 출력 토큰이 몇 개인지, 그중 사고가 몇 개인지. - effort를 한 단계 낮추고 다시 보내세요. 답변과 개수를 비교하세요.
max_tokens를 원하는 답변에 사고 여유를 더한 값으로 설정하고, 중지 이유를 확인하세요.
그런 다음 자신의 토큰 수를 가격 페이지의 실시간 가격 표에 넣으면 월간 추정치를 얻을 수 있습니다.



