앤트로픽 문서가 증상을 그대로 적어 놨어요 — 출력 한도가 빠듯하면 응답이 거의 전부 사고로 채워지고 뒤에 잘린 답과 stop_reason: max_tokens가 붙어요. 소네트 4.6은 요청에 사고 설정을 안 넣으면 사고를 껐는데, 소네트 5는 같은 요청이 적응형 사고로 돌고 사고에 쓴 토큰이 응답 본문과 같은 max_tokens 한도에서 빠져나가요. 토큰을 쪼개는 방식까지 바뀌어 같은 글이 토큰 약 30% 더 나오니, 4.6에 맞춰 둔 max_tokens는 앞뒤로 두 번 깎여요.
용어 풀이
- max_tokens
- 한 번의 응답에 쓸 수 있는 출력 토큰 총량 상한. 사고 토큰과 응답 본문이 이 한 칸을 나눠 쓴다
- JSON
- 프로그램끼리 데이터를 주고받을 때 쓰는 표준 문서 형식
- stop_reason
- 응답이 왜 끝났는지 API가 알려 주는 항목. max_tokens면 한도에 걸려 잘린 것
- effort
- 클로드가 얼마나 깊이 생각할지 정하는 설정값. low·medium·high·xhigh·max
- 적응형 사고(adaptive thinking)
- 요청마다 생각할지·얼마나 할지 모델이 스스로 정하는 방식. 토큰 예산을 미리 못 박을 수 없다
운영자 인사이트
사고를 아예 끄는 게 빠른 길 같지만, 앤트로픽은 사고를 끄면 소네트 5가 도구를 덜 집는다고 같은 문서에 적어 놨어요 — JSON을 강제 도구 호출로 받고 있으면 바로 그 지점이 흔들려요. 문서가 권하는 순서는 max_tokens를 올리거나 effort를 medium으로 낮추는 쪽이에요.
여러 관점으로 보기
- 증상 → 원인 → 처방 응답이 stop_reason: max_tokens로 끊기는 항목이 문제 해결 문서에 따로 있어요 — 원인은 사고 토큰이 한도를 먼저 쓴 것이고, 처방은 한도를 올리거나 effort를 낮추는 거예요. Anthropic
- 소네트 5가 바꾼 것 바뀐 동작은 셋이에요 — 사고 기본 켜짐, 사고량을 직접 묶던 budget_tokens는 400 오류, temperature·top_p·top_k도 400 오류. 답을 미리 채워 넣어 JSON을 여는 옛 수법도 여전히 400이에요. Anthropic
- 규칙의 출처 사고에 쓴 토큰은 화면에 안 보여도 출력 토큰으로 값이 매겨지고, 응답 본문과 같은 max_tokens 한도에서 빠져나가요. Anthropic