내 프롬프트는 몇 토큰일까?

1,000단어가 왜 절대 1,000토큰이 되지 않는지, 그리고 그것이 컨텍스트 한도와 비용에 미치는 의미.

토큰은 단어를 더 잘게 나눈 조각이므로 개수가 단어 수와 절대 일치하지 않습니다. 일반적인 영어 기준으로 토큰 1개는 약 4글자, 즉 0.75단어에 해당하므로 1,000단어는 대략 1,300토큰입니다. 코드, 영어 이외의 문자, 희귀한 단어는 문자당 더 많은 토큰을 사용하며, 경우에 따라 몇 배까지 늘어납니다.

토큰이 실제로 무엇인가

언어 모델은 글자나 단어를 읽지 않습니다. 학습 데이터로부터 얻은 고정 어휘에 따라 텍스트를 쪼갠 조각, 즉 토큰을 읽습니다.

흔한 단어는 보통 토큰 하나입니다. 희귀한 단어는 여러 조각으로 쪼개집니다. 공백은 대개 다음 토큰의 앞에 붙기 때문에, 같은 단어라도 문장 맨 앞에 오느냐에 따라 개수가 달라질 수 있습니다.

unbelievable 같은 단어는 토큰 하나가 아닙니다. Un + believ + able처럼 쪼개지는 경우가 많습니다. 반면 the는 토큰 하나이고, international도 학습 데이터에 충분히 자주 등장해 자체 항목을 얻었기 때문에 토큰 하나입니다.

토큰 개수가 예측하기 어렵게 느껴지는 이유가 여기 있습니다. 그 단위는 언어학적이지 않고 통계적입니다. 학습 코퍼스에서의 빈도가 어떤 것이 토큰 하나인지 네 개인지를 결정합니다.

한 문장, 토큰 일곱 개Unbelievableresultsforthequarter
토큰은 단어보다 작은 조각이므로 글자 수와 토큰 수가 일치하는 경우는 드뭅니다.

글자 37자 · 토큰 7개 · 토큰당 약 5.3자

영어 기준 대략적인 규칙: 토큰 1개 ≈ 글자 4자 ≈ 단어 0.75개.

코드, 영어 외 문자, 희귀한 단어는 글자당 더 많은 토큰을 사용합니다.

실제로 통하는 경험칙

영어 산문 기준:

  • 1토큰 ≈ 4글자
  • 1토큰 ≈ 0.75단어
  • 1,000단어 ≈ 1,300토큰
  • 표준 한 페이지(약 500단어) ≈ 650토큰

일반적인 산문을 벗어나면 이 기준은 금방 무너집니다:

콘텐츠 유형 대략적인 수치
영어 산문 토큰당 0.75단어
코드 같은 분량의 산문보다 2~3배 많은 토큰
긴 키를 가진 JSON 매우 높음 — 문장 부호와 따옴표가 별도 토큰
중국어, 일본어, 한국어 문자당 1~2토큰인 경우가 많음
키릴 문자, 데바나가리, 아랍어 같은 의미의 영어보다 보통 2~3배
URL과 해시 극도로 높음 — 무작위 문자열은 토큰화 효율이 나쁨
반복된 공백 연속된 공백 묶음이 각각 별도 토큰이 될 수 있음

다국어 격차는 크지만 과소평가되어 있습니다. 같은 문장이라도 일본어는 영어보다 몇 배의 비용이 들 수 있으며, 이는 비용과 컨텍스트 창에 들어가는 분량 모두에 영향을 줍니다.

모델마다 개수가 다른 이유

모델 계열마다 자체 어휘를 가진 고유한 토크나이저를 사용하므로, 같은 텍스트도 개수가 다르게 나옵니다.

GPT 모델은 바이트 페어 인코딩의 변형을 사용합니다. GPT-4 시대 모델은 cl100k_base, 더 최신 모델은 o200k_base입니다. Claude는 다른 어휘를 가진 별도의 토크나이저를 사용합니다. Llama, Mistral 같은 오픈 모델도 각각 자체 토크나이저를 씁니다.

같은 영어 텍스트에서 계열 간 10~20% 차이는 정상이며, 어휘 차이가 가장 큰 코드와 영어 이외의 텍스트에서는 격차가 더 벌어집니다.

실무적으로 이것이 의미하는 바는:

  • 한 토크나이저의 개수는 다른 모델에 대해서는 추정치일 뿐입니다.
  • 정확한 과금 기준 숫자는 해당 제공사의 토크나이저만 알려줍니다.
  • 한도에 딱 맞추기보다 여유를 두고 예산을 잡으세요.

토큰 계산기는 GPT-4o 기준 개수와 Claude 추정치를 나란히 보여주므로, 프롬프트가 한도 안에 여유 있게 들어가는지 아슬아슬한지 판단하기에 보통 충분합니다.

이 숫자가 중요한 이유

비용. API 가격은 토큰 단위이며 입력과 출력이 따로 책정되고, 출력이 보통 몇 배 더 비쌉니다. 시스템 프롬프트를 두 배로 늘리면 매 호출마다 그 비용이 두 배가 됩니다. 테스트에서는 보이지 않다가 규모가 커지면 비싸지는 대표적인 사례입니다.

컨텍스트 한도. 창에는 모든 것이 포함됩니다. 시스템 프롬프트, 대화 기록, 검색된 문서, 현재 메시지, 그리고 답변을 위해 남겨둔 공간까지요. 긴 대화가 실패하는 이유는 어느 한 메시지가 길어서가 아니라 기록이 누적되기 때문입니다.

잘림. 입력이 한도를 넘으면 무언가가 버려집니다. 종종 아무 알림 없이, 그리고 종종 가장 이른 내용부터요. 지시를 "잊어버린" 모델은 사실 지시가 잘려 나간 경우가 많습니다.

검색을 위한 청킹. 임베딩용 문서 분할은 글자가 아니라 토큰 단위로 이루어집니다. 글자 수로 자른 청크는 크기가 들쭉날쭉해지고, 문장 중간에서 끊긴 청크는 검색 품질이 나쁩니다. 긴 텍스트를 쓰기 좋은 조각으로 나눌 때는 텍스트 분할 도구가 단어 중간이 아니라 문단 경계 근처에서 자릅니다.

의미를 잃지 않고 토큰 줄이기

효과가 큰 순서대로 대략 정리하면:

  1. 대화 기록 줄이기. 긴 대화에서는 이것이 다른 모든 것을 압도합니다. 이전 턴을 그대로 다시 보내지 말고 요약해서 보내세요.
  2. 중복 지시 제거. 같은 규칙을 세 가지 방식으로 반복한다고 지켜질 확률이 세 배가 되지는 않습니다. 그 규칙의 비용만 확실히 세 배가 됩니다.
  3. 서식 잔재 제거. 보이지 않는 문자, 반복된 공백, 장식용 구분선은 모두 토큰이 되며, 하이픈 마흔 개짜리 줄이 바로 위 문장보다 더 많은 비용이 들 수 있습니다. 보이지 않는 문자 제거로 눈에 보이지 않는 것들을 지울 수 있습니다.
  4. JSON 키 짧게 하기. 구조화된 프롬프트에서 {"n": ...}{"customer_full_name": ...}의 차이는 천 개 레코드에 걸쳐 누적되면 상당합니다.
  5. 관련 부분만 보내기. 문서 전체를 붙여넣는 것보다 관련 문단 세 개를 찾아 보내는 편이 낫고, 보통 비용뿐 아니라 답변 품질도 더 좋습니다.

도움이 되지 않는 것들: 일반 문장 부호 제거, 관사 삭제, 전보체처럼 뚝뚝 끊는 문체. 절약 폭은 미미한데 출력 품질 손상은 그렇지 않습니다.

자주 묻는 질문

1,000단어는 몇 토큰인가요?

일반적인 영어 산문은 토큰당 약 0.75단어 기준으로 대략 1,300토큰입니다. 코드, JSON, 영어 이외의 텍스트는 훨씬 높게 나오며, 중국어·일본어·한국어는 문자당 1~2토큰을 쓰는 경우가 많습니다.

GPT와 Claude의 토큰 수가 다른 이유는 무엇인가요?

모델 계열마다 서로 다른 학습 어휘를 가진 자체 토크나이저를 사용하므로 같은 텍스트도 다르게 쪼개집니다. 영어 산문에서 10~20% 차이는 정상이며, 코드와 영어 이외의 텍스트에서는 격차가 더 큽니다.

AI 모델에서 토큰이란 무엇인가요?

모델의 고정 어휘에 들어 있는 텍스트 조각입니다. 흔한 단어는 보통 토큰 하나인 반면 희귀한 단어는 여러 조각으로 쪼개져서, 'unbelievable'은 토큰 세 개가 되는 반면 'international'은 하나일 수 있습니다.

공백과 문장 부호도 토큰으로 계산되나요?

네. 공백은 보통 다음 토큰의 앞에 붙고, 문장 부호는 자체가 토큰인 경우가 많습니다. 반복된 공백이나 장식용 구분선이 길게 이어지면 생각보다 많은 토큰을 소비할 수 있습니다.

토큰 사용량을 어떻게 줄일 수 있나요?

먼저 누적된 대화 기록을 줄이세요. 긴 대화에서는 이것이 전체를 지배합니다. 그 다음 중복된 지시를 없애고, 보이지 않는 문자와 반복 공백을 제거하고, JSON 키를 짧게 하고, 문서 전체 대신 관련 부분만 보내세요.

이 가이드에 소개된 도구

관련 가이드