언어모델은 문장을 글자나 단어 그대로 읽지 않고, 토큰이라는 작은 텍스트 단위로 나누어 처리합니다. 컨텍스트 윈도우는 이렇게 변환된 입력과 대화 기록, 지시문, 모델 출력이 들어갈 수 있는 전체 공간이므로, 한도를 넘으면 일부 내용이 잘리거나 요청이 실패할 수 있습니다.
📌 핵심 5줄 요약
1. 토큰은 언어모델이 텍스트를 읽고 생성하는 기본 처리 단위입니다.
2. 토큰은 항상 한 단어와 일치하지 않으며 언어와 문장 형태에 따라 달라집니다.
3. 컨텍스트 윈도우는 입력, 대화 기록, 지시문, 출력에 사용할 수 있는 전체 토큰 공간입니다.
4. 입력이 길어질수록 답변에 사용할 수 있는 출력 공간은 줄어들 수 있습니다.
5. 긴 문서는 토큰을 계산한 뒤 핵심 정보 중심으로 분할·요약하면 안정적으로 처리할 수 있습니다.
📌 목차
01 | 토큰이란 무엇인가
02 | 토큰은 어떻게 나뉘는가
03 | 한국어에서 토큰이 달라지는 이유
04 | 컨텍스트 윈도우란 무엇인가
05 | 입력 토큰과 출력 토큰의 관계
06 | 대화가 길어지면 생기는 변화
07 | 토큰 수를 직접 확인하는 방법
08 | 긴 문서를 입력하는 실전 절차
09 | 문서 분할과 청크의 기준
10 | 토큰과 API 비용의 관계
11 | 실제 사례로 이해하기
12 | 자주 하는 오해와 한계
13 | 효율적인 프롬프트 작성법
01 | 토큰이란 무엇인가
토큰은 언어모델이 텍스트를 처리할 때 사용하는 숫자 단위입니다. 모델은 입력 문장을 토큰으로 변환한 뒤 각 토큰 사이의 관계를 계산하고, 다음에 올 가능성이 높은 토큰을 차례로 생성합니다.
토큰은 글자, 글자 일부, 단어, 띄어쓰기와 결합된 문자열 등 여러 형태가 될 수 있습니다. 따라서 “단어 1개가 토큰 1개”라고 단정하면 안 됩니다.
02 | 토큰은 어떻게 나뉘는가
토큰을 나누는 규칙은 모델과 토크나이저에 따라 다릅니다. 같은 문장이라도 사용하는 모델이 달라지면 토큰 수가 달라질 수 있으므로, 특정 모델의 토큰 수를 다른 모델에 그대로 적용해서는 안 됩니다.
영어는 자주 등장하는 단어가 비교적 효율적으로 묶이는 반면, 드문 단어·긴 숫자·특수문자·코드·웹주소는 더 작은 조각으로 나뉠 수 있습니다. OpenAI는 일반적인 영어 텍스트에서 토큰 1개가 대략 4자 정도에 해당할 수 있지만, 이는 어디까지나 경험적 기준이며 한국어와 코드에는 그대로 적용하기 어렵다고 설명합니다.
03 | 한국어에서 토큰이 달라지는 이유
한국어는 조사와 어미가 붙고 띄어쓰기 단위가 영어와 다르기 때문에 같은 글자 수라도 토큰 수가 일정하지 않습니다. “검색한다”, “검색했습니다”, “검색하지 않았습니다”처럼 형태가 달라지면 모델이 인식하는 분할 결과도 달라질 수 있습니다.
한글 문장에 영어 약어, 숫자, 표, 이모지, 코드가 섞이면 토큰 수가 더 복잡하게 변합니다. 따라서 한국어 글자 수만 보고 컨텍스트 윈도우 여유를 판단하는 것은 안전하지 않습니다.
04 | 컨텍스트 윈도우란 무엇인가
컨텍스트 윈도우는 모델이 한 번의 요청에서 참고할 수 있는 토큰의 최대 범위입니다. 여기에는 사용자가 입력한 질문뿐 아니라 시스템 지시문, 이전 대화, 첨부 문서, 도구 설명, 모델이 생성하는 답변까지 포함될 수 있습니다.
모델마다 컨텍스트 한도는 다르며 같은 서비스 안에서도 모델 버전이나 API 방식에 따라 달라질 수 있습니다. 최신 한도는 모델별 공식 문서에서 확인해야 합니다. OpenAI 공식 문서도 모델별 토큰 한도와 출력 제한은 해당 모델 문서를 확인하도록 안내합니다.
05 | 입력 토큰과 출력 토큰의 관계
컨텍스트 윈도우를 하나의 전체 용량이라고 보면, 입력 토큰이 차지한 공간만큼 출력에 사용할 수 있는 여유가 줄어듭니다. 예를 들어 입력 문서가 매우 길면 모델이 답변을 생성할 공간이 부족해질 수 있습니다.
API에서는 출력 상한을 별도로 설정하는 경우가 많습니다. 이 값은 답변이 반드시 그 길이만큼 나온다는 뜻이 아니라, 생성 가능한 최대 토큰 수를 제한하는 값입니다. 입력 토큰과 설정한 출력 한도의 합이 모델의 컨텍스트 한도를 넘으면 오류가 발생하거나 출력 한도가 줄어들 수 있습니다.
06 | 대화가 길어지면 생기는 변화
대화형 서비스는 이전 메시지를 현재 요청의 문맥으로 다시 전달하는 방식으로 작동할 수 있습니다. 대화가 계속 길어지면 새 질문 자체는 짧아도 전체 입력 토큰이 커집니다.
한도를 초과하면 오래된 메시지부터 제외하는 자동 잘림이 적용되거나, 요청이 오류로 끝날 수 있습니다. OpenAI의 일부 API 문서도 대화가 입력 한도를 넘으면 오래된 메시지부터 문맥에서 제외할 수 있으며, 자동 잘림을 끄면 오류가 반환될 수 있다고 설명합니다.
07 | 토큰 수를 직접 확인하는 방법
가장 정확한 방법은 사용하려는 모델에 맞는 토크나이저로 실제 텍스트를 계산하는 것입니다. OpenAI는 토큰 확인용 웹 토크나이저를 제공하며, 프로그래밍 환경에서는 tiktoken 라이브러리로 문자열을 인코딩해 토큰 개수를 셀 수 있다고 안내합니다.
다만 서비스 화면에서 표시되는 토큰 수와 API 요청에서 계산되는 토큰 수는 메시지 구조, 역할 정보, 도구 정의, 이미지·파일 처리 방식에 따라 달라질 수 있습니다. 단순히 본문만 계산하지 말고 실제 요청 형식을 기준으로 확인해야 합니다.
08 | 긴 문서를 입력하는 실전 절차
긴 문서를 한 번에 붙여 넣기 전에 먼저 목적을 정합니다. 전체 요약인지, 특정 조항 검색인지, 표 추출인지에 따라 필요한 문맥의 범위가 달라집니다.
첫째, 문서에서 질문과 직접 관련된 부분을 우선 추립니다. 둘째, 제목·페이지·문단 번호를 함께 남겨 출처 위치를 잃지 않게 합니다. 셋째, 문서를 여러 묶음으로 나누어 처리합니다. 마지막으로 각 묶음의 결과를 다시 통합하되, 원문에 없는 내용을 보완하지 말라고 지시하면 오류를 줄이는 데 도움이 됩니다.
09 | 문서 분할과 청크의 기준
문서를 나누는 단위를 청크라고 합니다. 청크는 무조건 같은 글자 수로 자르기보다 문단, 소제목, 표, 항목 단위로 나누는 편이 의미 보존에 유리합니다.
문맥이 이어지는 문서라면 청크 사이에 일부 내용을 겹치게 두는 방법도 있습니다. 다만 겹침이 지나치면 같은 내용이 반복되어 토큰과 비용이 늘어납니다. 실무에서는 “한 청크가 하나의 질문에 답할 수 있는가”를 기준으로 크기를 조정하는 것이 좋습니다.
10 | 토큰과 API 비용의 관계
API를 사용하는 경우 입력 토큰과 출력 토큰은 사용량과 비용을 계산하는 기준이 될 수 있습니다. OpenAI API의 사용량 정보에는 프롬프트 토큰, 완성 토큰, 전체 토큰이 구분되어 표시될 수 있습니다.
따라서 불필요하게 긴 대화 기록, 반복된 지시문, 지나치게 큰 문서, 사용하지 않는 도구 설명은 비용과 처리 시간을 늘릴 수 있습니다. 정확한 단가는 모델과 시점에 따라 변하므로, 비용을 계산할 때는 해당 서비스의 최신 가격표를 따로 확인해야 합니다.
11 | 실제 사례로 이해하기
예를 들어 100쪽짜리 계약서를 입력하고 “불리한 조항을 찾아 달라”고 요청한다고 가정해 보겠습니다. 문서 전체를 한 번에 넣으면 관련 없는 조항까지 문맥을 차지하고, 답변에 사용할 공간이 줄어들 수 있습니다.
이때 계약 목적, 당사자 의무, 해지, 손해배상, 자동갱신처럼 주제별로 문서를 나눈 뒤 각 부분을 분석합니다. 이후 “각 청크에서 위험 조항, 근거 문장, 확인이 필요한 부분만 표로 정리하라”고 요청하고 결과를 통합하면 긴 문서를 더 관리하기 쉽습니다. 이는 특정 계약의 법적 판단이 아니라, 토큰과 문맥을 관리하는 처리 방식의 예시입니다.
12 | 자주 하는 오해와 한계
토큰 수가 많으면 답변 품질이 항상 좋아질까?
그렇지 않습니다. 관련 없는 정보가 많이 들어가면 핵심 지시가 묻히고 모델이 어떤 내용을 우선해야 하는지 혼동할 수 있습니다. 필요한 정보만 선별하는 것이 단순히 입력량을 늘리는 것보다 중요합니다.
컨텍스트 윈도우가 크면 모든 내용을 정확히 기억할까?
컨텍스트 윈도우는 참고 가능한 범위를 뜻할 뿐, 모든 위치의 정보를 동일한 수준으로 활용한다는 의미는 아닙니다. 문서의 핵심 요구사항을 앞부분과 끝부분에 명확히 정리하고, 중요한 근거에는 제목이나 표식을 붙이는 것이 좋습니다.
13 | 효율적인 프롬프트 작성법
긴 입력을 줄이는 가장 쉬운 방법은 질문을 구체적으로 만드는 것입니다. “이 문서를 분석해 줘”보다 “해지 조건만 찾아 조항 번호, 핵심 내용, 주의점을 세 열로 정리해 줘”가 필요한 정보와 출력 형식을 명확하게 제한합니다.
또한 문서 안에서 반드시 참고할 범위와 제외할 범위를 구분하고, 모르는 내용은 추정하지 말라고 지시하는 것이 좋습니다. 답변 길이를 제한하거나 결과를 항목별로 나누면 출력 토큰을 관리하기도 쉽습니다.
☑ 체크리스트
☑ 사용하려는 모델의 컨텍스트 윈도우와 출력 한도를 확인했나요?
☑ 질문과 직접 관련 없는 대화 기록이나 문서를 제거했나요?
☑ 한국어, 숫자, 코드, 표가 섞인 입력을 실제 토크나이저로 계산했나요?
☑ 입력 토큰과 출력 토큰을 함께 고려했나요?
☑ 긴 문서를 제목·문단·주제 단위로 나눴나요?
☑ 답변에 반드시 포함할 형식과 제외할 내용을 지정했나요?
☑ 최신 모델 한도와 가격이 필요하다면 공식 문서에서 다시 확인했나요?
📖 자주하는 질문 Q&A
토큰 1개는 글자 몇 개인가요?
고정된 숫자는 없습니다. 언어, 단어 빈도, 띄어쓰기, 숫자와 특수문자에 따라 달라집니다. 영어의 경험적 환산 기준을 한국어에 그대로 적용하지 말고 실제 토크나이저로 확인하는 것이 안전합니다.
컨텍스트 윈도우와 답변 길이는 같은 개념인가요?
아닙니다. 컨텍스트 윈도우는 입력과 출력 전체가 사용할 수 있는 범위이고, 답변 길이는 그중 출력에 배정된 부분입니다. 입력이 길어지면 답변에 남는 공간이 줄어들 수 있습니다.
대화 내용을 삭제하면 토큰이 줄어드나요?
현재 요청에 이전 대화가 포함되지 않도록 하면 입력 토큰을 줄이는 데 도움이 됩니다. 다만 서비스마다 대화 저장과 전달 방식이 다르므로, 실제 API 요청 구조나 서비스 안내를 확인해야 합니다.
긴 문서는 무조건 여러 번 나눠야 하나요?
항상 그런 것은 아닙니다. 모델의 한도 안에 들어오고 질문과 관련된 정보가 충분히 정리되어 있다면 한 번에 처리할 수 있습니다. 다만 한도에 가까운 입력은 출력 공간과 오류 여유가 줄어들므로, 핵심 부분을 나누어 처리하는 방식이 더 안정적일 수 있습니다.
📝 마무리
토큰은 언어모델이 텍스트를 계산하는 단위이고, 컨텍스트 윈도우는 한 번에 참고할 수 있는 전체 토큰 공간입니다. 긴 입력을 안정적으로 처리하려면 실제 토큰 수를 확인하고, 입력·출력 공간을 나누어 생각하며, 문서를 의미 단위로 분할하는 습관이 필요합니다.
