컨텍스트 윈도우가 무엇인지 토큰 예산 예제로 알아봅니다.

컨텍스트 윈도우가 크면 긴 문서를 모두 기억하고 정확히 답할까요?
긴 대화나 문서를 AI에 넣을 때는 입력 내용과 답변에 쓸 공간을 함께 생각해야 해요.
이 글에서는 작은 숫자로 토큰 예산을 계산하고, 앞부분의 중요한 조건이 잘릴 수 있는 상황을 파이썬으로 확인해 볼게요.
이 글에서 배울 내용은 '컨텍스트 윈도우와 저장된 대화의 차이', '입력·출력 토큰 예산 계산, 잘림' '시뮬레이션에서 필수 조건을 확인하는 방법' 등을 알아보려고 합니다.
컨텍스트 윈도우란? 먼저 구분할 네 가지
컨텍스트 윈도우는 영구 기억이 아니에요
컨텍스트 윈도우는 모델이 한 번의 처리에서 참고할 수 있는 문맥의 범위를 설명하는 개념이에요.
서비스에 저장된 대화 기록과 지금 모델에 전달된 내용은 같지 않을 수 있어요.
화면에 예전 메시지가 보여도 그 문장이 현재 요청에 모두 포함됐다고 가정하면 위험해요.
긴 대화에서는 서비스가 앞부분을 선택하거나 요약하는 등 별도 방식으로 문맥을 관리할 수 있어요. 그래서 꼭 지켜야 할 조건은 현재 요청에도 짧고 분명하게 적어두는 편이 좋아요.
입력은 눈에 보이는 질문보다 길 수 있어요
사용자가 입력한 한 문장만 토큰을 차지하는 것은 아니에요.
실제 요청에는 지시문, 이전 대화, 문서 조각, 도구 설명 등이 함께 들어갈 수 있어요.
여행 가방의 무게를 잴 때 옷만 세면 전체 무게를 놓치는 것과 비슷해요.
눈에 보이는 글자 수만으로 남은 공간을 정확히 판단하기 어려운 이유가 여기에 있어요. 구체적인 계산 방식은 사용하는 모델과 API의 공식 문서를 확인해야 해요.
답변을 위한 출력 여유도 필요해요
개념을 익히기 위해 전체 예산이 20 토큰이고 답변용으로 5 토큰을 남긴다고 가정해 볼게요.
이 단순한 모형에서는 입력에 쓸 수 있는 양이 20 - 5 = 15 토큰이에요.
출력 여유를 빼지 않고 20 토큰을 전부 입력에 사용하면 답변 공간을 설명할 수 없어요.
다만 실제 서비스에는 모델별 문맥 한도와 별도의 출력 한도 등 추가 조건이 있어요. 여기서 쓰는 20과 5는 계산 연습용 숫자이며 특정 모델의 사양이 아니에요.
길이를 맞춰도 중요한 내용이 사라질 수 있어요
텍스트의 뒤쪽만 남기는 방식은 앞에 적힌 목적지나 예산 조건을 지울 수 있어요.
반대로 앞쪽만 남기면 가장 최근에 바꾼 조건을 놓칠 수 있어요. 입력이 토큰 제한 안에 들어왔다는 검사와 필요한 정보가 남았다는 검사는 따로 해야 해요.
예를 들어 여행 계획에서 "목적지: 서울"이 잘렸다면 길이 계산이 맞아도 답변의 출발점이 틀어질 수 있어요.
다음 실습은 이 차이를 보여주는 교육용 예제이며 실제 ChatGPT의 문맥 관리 규칙을 재현하지는 않아요.
파이썬으로 토큰 예산과 문맥 잘림 확인하는 방법
이번 실습에서는 텍스트의 뒤쪽 토큰만 남기는 규칙을 직접 만듭니다.
실제 서비스가 항상 오래된 내용을 이렇게 자른다는 뜻은 아니에요.
코드를 실행하기 전에 Python과 tiktoken을 준비하고, 출력의 토큰 수와 필수 정보 보존 여부를 각각 확인해 보세요.
터미널에서 python -m pip install tiktoken을 실행해 라이브러리를 설치해요. 이미 설치했다면 이 단계는 건너뛰어도 돼요.
새 파일을 window_demo.py라는 이름으로 만들고 아래 코드를 저장해요.
import tiktoken
text = "Budget: 100. Destination: Seoul. " + "More notes. " * 10
window = 20
reserve = 5
if not 0 <= reserve <= window:
raise ValueError("require 0 <= reserve <= window")
enc = tiktoken.get_encoding("cl100k_base")
ids = enc.encode(text, disallowed_special=())
input_budget = window - reserve
kept = ids[-input_budget:] if input_budget else []
remaining = enc.decode(kept)
print("input budget:", input_budget)
print("kept:", len(kept), "dropped:", len(ids) - len(kept))
print("remaining text:", remaining)
print("Budget preserved:", "Budget: 100" in remaining)
print("Destination preserved:", "Destination: Seoul" in remaining)
같은 폴더의 터미널에서 python window_demo.py를 실행해요. tiktoken 0.14.0에서 확인한 출력은 다음과 같아요.

전체 40 토큰 가운데 입력 예산 15 토큰만 남았습니다. 남은 문자열에는 `Budget: 100`과 `Destination: Seoul`이 없어요.
즉, 길이 검사는 통과했지만 여행 계획에 필요한 조건은 사라졌습니다.
설치한 버전에 따라 토큰화 결과가 달라질 수 있으므로 자신의 출력도 확인해 보세요.
`window`를 20보다 크게 바꾸고 다시 실행해요. 출력의 `kept`와 두 보존 여부가 어떻게 달라지는지 비교해 보세요.
창을 키워도 정보가 남는지 실제 출력으로 확인해야 해요.
`reserve`를 `window`와 같은 값으로 바꿔 실행해요. 입력 예산이 0이면 `kept`가 빈 목록이 되어 남은 토큰 수가 0이어야 해요.
코드의 `if input_budget else []`가 없으면 파이썬의 `ids [-0:]`가 전체 목록을 반환하므로 이 경계 처리가 필요해요.
`reserve`를 `window`보다 크게 바꿔 `ValueError`가 발생하는지 확인한 뒤 정상 값으로 되돌려요.
마지막으로 "남은 토큰 수 ≤ 입력 예산"과 "예산값·목적지 전체 보존"을 서로 다른 항목으로 기록해요.
토큰 경계가 한글 같은 문자의 바이트 중간에 걸리면 복원된 표시가 매끄럽지 않을 수도 있어요.
이 실습의 통과 기준은 유효한 예산에서 남은 토큰 수가 입력 예산을 넘지 않고, 0 예산과 잘못된 예산이 각각 명확히 처리되는 것이에요. 필수 조건이 사라졌다면 길이 검사와 별도로 입력 내용을 다시 구성해야 해요. 긴 문서를 줄일 때는 먼저 꼭 남겨야 할 조건과 근거를 정리해 보세요.
- 컨텍스트 윈도우가 크면 대화를 계속 기억하나요?
- 컨텍스트 윈도우가 크다는 말만으로 영구 기억을 뜻하지는 않아요.
- 지금 모델에 전달된 문맥과 서비스에 저장된 대화 기록은 구분해야 해요.
- 과거 메시지가 화면에 보여도 현재 요청에 포함됐는지는 별개의 문제예요.
- 오래된 조건이 중요하다면 현재 요청에 다시 적어주세요.
- 특히 숫자나 예외 조건은 한눈에 확인할 수 있게 짧게 정리하면 좋아요.
- 긴 문서가 입력되면 요약도 반드시 정확한가요?
- 입력할 수 있는 길이와 문서 내용을 정확히 활용하는 능력은 달라요.
- 문서가 들어가더라도 숫자나 예외 조건을 빠뜨릴 수 있어요. 요약 전에 반드시 포함할 항목을 목록으로 정해두세요.
- 결과를 받은 뒤에는 그 목록과 원문을 대조해보세요. 분량만 보고 정확도를 판단하지 않는 것이 핵심이에요.
- 이 코드가 실제 ChatGPT의 잘림 방식을 보여주나요?
- 아니요. 뒤쪽 토큰을 남기는 하나의 교육용 규칙이에요.
- 실제 서비스의 내부 문맥 처리 방식을 확인한 코드가 아니에요.
- 이 예제는 공간을 맞춰도 중요한 앞부분이 사라질 수 있음을 보여줘요.
- 모델별 문맥 길이와 출력 제한은 해당 모델의 공식 문서를 확인하세요.
- 실습 결과를 특정 서비스의 내부 동작에 대한 증거로 사용하지 마세요.
토큰 수와 필수 정보는 따로 확인하세요
컨텍스트 윈도우는 저장된 대화 기록이나 영구 기억과 같은 뜻이 아니에요.
교육용 예산 계산은 전체 20에서 출력 여유 5를 빼 입력 15를 구해요.
길이 제한을 지켜도 목적지나 예산처럼 꼭 필요한 정보가 남았는지 확인해야 해요.
'AI,도구' 카테고리의 다른 글
| AI 모델 파라미터 수란? 7B·70B와 토큰 수가 다른 이유 (0) | 2026.09.29 |
|---|---|
| [AI] 대화가 길어지면 AI가 앞의 내용을 잊는 이유와 조건 정리법 (0) | 2026.09.28 |
| [AI] 한글과 영어의 토큰 수 비교: 글자가 짧아도 토큰은 많을 수 있어요 (0) | 2026.09.28 |
| [AI] AI 모델 이름 읽는 법: 버전·성능 등급·서비스 요금제 구분하기 (0) | 2026.09.28 |
| [AI] AI 토큰이란? 파이썬 tiktoken으로 토큰 수 계산하기 (0) | 2026.09.19 |