컨텍스트 윈도우
컨텍스트 윈도우 이해하기
“컨텍스트 윈도우”는 언어 모델이 새로운 텍스트를 생성할 때 참조할 수 있는 전체 텍스트의 양과 생성하는 새로운 텍스트를 합친 것을 의미합니다. 이는 언어 모델이 학습된 방대한 데이터 코퍼스와는 다르며, 모델의 “작업 메모리”를 나타냅니다. 더 큰 컨텍스트 윈도우는 모델이 더 복잡하고 긴 프롬프트를 이해하고 응답할 수 있게 해주는 반면, 작은 컨텍스트 윈도우는 모델이 긴 프롬프트를 처리하거나 장시간 대화에서 일관성을 유지하는 능력을 제한할 수 있습니다.
아래 다이어그램은 API 요청에 대한 표준 컨텍스트 윈도우 동작을 보여줍니다1:
1claude.ai와 같은 채팅 인터페이스의 경우, 컨텍스트 윈도우는 “선입선출” 방식의 롤링 시스템으로 설정될 수도 있습니다.
- 점진적 토큰 축적: 대화가 진행됨에 따라 각 사용자 메시지와 어시스턴트 응답이 컨텍스트 윈도우 내에 축적됩니다. 이전 대화 차례는 완전히 보존됩니다.
- 선형 성장 패턴: 컨텍스트 사용량은 각 대화 차례마다 선형적으로 증가하며, 이전 대화 차례는 완전히 보존됩니다.
- 200K 토큰 용량: 사용 가능한 총 컨텍스트 윈도우(200,000 토큰)는 대화 기록을 저장하고 Claude에서 새로운 출력을 생성하기 위한 최대 용량을 나타냅니다.
- 입력-출력 흐름: 각 대화 차례는 다음으로 구성됩니다:
- 입력 단계: 모든 이전 대화 기록과 현재 사용자 메시지를 포함합니다
- 출력 단계: 미래 입력의 일부가 되는 텍스트 응답을 생성합니다
확장 사고를 포함한 컨텍스트 윈도우
확장 사고를 사용할 때, 사고에 사용된 토큰을 포함한 모든 입력 및 출력 토큰은 컨텍스트 윈도우 제한에 포함되지만, 다중 대화 차례 상황에서는 몇 가지 미묘한 차이가 있습니다.
사고 예산 토큰은 max_tokens
매개변수의 하위 집합이며, 출력 토큰으로 청구되고 속도 제한에 포함됩니다.
그러나 이전 사고 블록은 Anthropic API에 의해 컨텍스트 윈도우 계산에서 자동으로 제외되며, 후속 대화 차례에서 모델이 “보는” 대화 기록의 일부가 아니므로 실제 대화 내용을 위한 토큰 용량이 보존됩니다.
아래 다이어그램은 확장 사고가 활성화되었을 때의 특수 토큰 관리를 보여줍니다:
- 확장 사고 제거: 확장 사고 블록(짙은 회색으로 표시)은 각 대화 차례의 출력 단계에서 생성되지만, 후속 대화 차례의 입력 토큰으로 전달되지 않습니다. 사고 블록을 직접 제거할 필요가 없습니다. Anthropic API가 이를 다시 전달할 때 자동으로 처리합니다.
- 기술적 구현 세부 사항:
- API는 이전 대화 차례의 사고 블록을 대화 기록의 일부로 다시 전달할 때 자동으로 제외합니다.
- 확장 사고 토큰은 생성 시에만 출력 토큰으로 한 번 청구됩니다.
- 유효 컨텍스트 윈도우 계산은 다음과 같습니다:
context_window = (input_tokens - previous_thinking_tokens) + current_turn_tokens
. - 사고 토큰에는
thinking
블록과redacted_thinking
블록이 모두 포함됩니다.
이 아키텍처는 토큰 효율적이며, 사고 블록이 상당한 길이가 될 수 있으므로 토큰 낭비 없이 광범위한 추론을 가능하게 합니다.
컨텍스트 윈도우와 확장 사고에 대한 자세한 내용은 확장 사고 가이드에서 확인할 수 있습니다.
확장 사고 및 도구 사용을 포함한 컨텍스트 윈도우
아래 다이어그램은 확장 사고와 도구 사용을 결합할 때의 컨텍스트 윈도우 토큰 관리를 보여줍니다:
첫 번째 대화 차례 아키텍처
- 입력 구성 요소: 도구 구성 및 사용자 메시지
- 출력 구성 요소: 확장 사고 + 텍스트 응답 + 도구 사용 요청
- 토큰 계산: 모든 입력 및 출력 구성 요소는 컨텍스트 윈도우에 포함되며, 모든 출력 구성 요소는 출력 토큰으로 청구됩니다.
도구 결과 처리 (두 번째 대화 차례)
- 입력 구성 요소: 첫 번째 대화 차례의 모든 블록과
tool_result
. 확장 사고 블록은 해당 도구 결과와 함께 반드시 반환되어야 합니다. 이는 사고 블록을 반환해야 하는 유일한 경우입니다. - 출력 구성 요소: 도구 결과가 Claude에 다시 전달된 후, Claude는 텍스트로만 응답합니다(다음
user
메시지가 있을 때까지 추가 확장 사고 없음). - 토큰 계산: 모든 입력 및 출력 구성 요소는 컨텍스트 윈도우에 포함되며, 모든 출력 구성 요소는 출력 토큰으로 청구됩니다.
세 번째 단계
- 입력 구성 요소: 이전 대화 차례의 모든 입력과 출력은 사고 블록을 제외하고 전달됩니다. 사고 블록은 Claude가 전체 도구 사용 주기를 완료했으므로 이제 삭제할 수 있습니다. API는 사고 블록을 다시 전달하면 자동으로 제거하거나, 이 단계에서 직접 제거해도 됩니다. 이 단계에서 다음
User
대화 차례를 추가합니다. - 출력 구성 요소: 도구 사용 주기 외부에 새로운
User
대화 차례가 있으므로, Claude는 새로운 확장 사고 블록을 생성하고 거기서부터 계속합니다. - 토큰 계산: 이전 사고 토큰은 컨텍스트 윈도우 계산에서 자동으로 제외됩니다. 다른 모든 이전 블록은 여전히 토큰 윈도우의 일부로 계산되며, 현재
Assistant
대화 차례의 사고 블록은 컨텍스트 윈도우의 일부로 계산됩니다.
- 확장 사고를 포함한 도구 사용 시 고려 사항:
- 도구 결과를 게시할 때, 해당 특정 도구 요청에 수반되는 전체 수정되지 않은 사고 블록(서명/수정된 부분 포함)을 포함해야 합니다.
- 확장 사고와 도구 사용을 위한 유효 컨텍스트 윈도우 계산은 다음과 같습니다:
context_window = input_tokens + current_turn_tokens
. - 시스템은 암호화 서명을 사용하여 사고 블록의 진위를 확인합니다. 도구 사용 중 사고 블록을 보존하지 않으면 Claude의 추론 연속성이 깨질 수 있습니다. 따라서 사고 블록을 수정하면 API가 오류를 반환합니다.
Claude 4 모델은 인터리브드 사고(interleaved thinking)를 지원하여 Claude가 도구 호출 사이에 생각하고 도구 결과를 받은 후 더 정교한 추론을 할 수 있게 합니다.
Claude Sonnet 3.7은 인터리브드 사고를 지원하지 않으므로, 중간에 tool_result
가 아닌 사용자 대화 차례 없이는 확장 사고와 도구 호출을 인터리빙할 수 없습니다.
확장 사고와 함께 도구를 사용하는 방법에 대한 자세한 정보는 확장 사고 가이드를 참조하세요.
최신 Claude 모델의 컨텍스트 윈도우 관리
최신 Claude 모델(Claude Sonnet 3.7부터)에서는 프롬프트 토큰과 출력 토큰의 합이 모델의 컨텍스트 윈도우를 초과하면, 시스템은 컨텍스트를 자동으로 잘라내는 대신 유효성 검사 오류를 반환합니다. 이러한 변경은 더 예측 가능한 동작을 제공하지만 더 신중한 토큰 관리가 필요합니다.
토큰 사용량을 계획하고 컨텍스트 윈도우 제한 내에 머무르도록 하려면, 토큰 카운팅 API를 사용하여 메시지를 Claude에 보내기 전에 얼마나 많은 토큰을 사용할지 예측할 수 있습니다.
모델별 컨텍스트 윈도우 크기 목록은 모델 비교 표를 참조하세요.