엔지니어링 팀에 실제로 돈이 드는 토큰 카운팅 미신 5가지

최종 업데이트: 2026-05-27 · 9분 분량

toksum.dev 가이드 시리즈의 일부.

미신 1: "토큰 1개 = 4 문자"

가장 흔하게 인용되는 휴리스틱이지만, 영어 산문에만 대략 맞고 그 외에는 크게 빗나갑니다. 영어 산문에서도 정확히는 "토큰 1개 ≈ 3.5 문자" 또는 "토큰 1개 ≈ 0.75 단어"가 GPT 토크나이저에 더 가깝습니다. 코드, JSON, 한국어, 중국어, 아랍어에서는 이 공식이 토큰 수를 30~70%까지 과소평가합니다.

실제 분포: 영어 평문 1,000 단어는 약 1,330 GPT 토큰(0.75 비율). 같은 의미의 한국어 1,000 단어는 약 1,800~2,400 토큰. 1,000줄 TypeScript 코드는 약 8,000~12,000 토큰. PDF에서 추출한 표/이미지 캡션이 섞인 문서는 더 비대 — 줄바꿈과 공백이 자주 별도 토큰이 됩니다. "4 문자" 휴리스틱으로 비용을 추정하면 한국어 사용자가 많은 서비스의 예산이 청구서 도착 시점에 50% 부족할 수 있습니다.

해결책: 추정에 휴리스틱을 쓰지 말고 실제 토크나이저를 사용하세요. brower-side 토큰 카운터가 GPT-4o tiktoken을 정확히 실행하므로, 대표 샘플을 붙여넣고 실제 수치로 작업하세요.

미신 2: "GPT 토큰과 Claude 토큰은 비슷하다"

외관상 비슷하지만 미묘하게 다릅니다 — 그리고 그 미묘함이 비용에 누적되어 영향을 줍니다. OpenAI는 GPT-4o/o1에 o200k_base 토크나이저를, 구버전 GPT에 cl100k_base를 사용합니다. Anthropic은 Claude 3/4 계열에 자체 토크나이저를 사용하며 OpenAI 인코딩과 다릅니다. Google Gemini는 또 다른 토크나이저.

영어 산문에서 Claude는 GPT-4o 대비 약 10~20% 적은 토큰으로 토큰화됩니다 — 같은 시스템 프롬프트라도 Claude에서 더 적은 입력 토큰을 청구합니다. 코드와 한국어에서는 격차가 다른 방향으로도 갈 수 있어, "GPT 토큰 수로 추정한 비용 + Anthropic 단가"는 정확하지 않습니다.

실용적 영향: 새 모델로 마이그레이션할 때 비용 모델을 직접 재계산해야 합니다. GPT-5.4 ($2.50/1M)에서 Claude Sonnet 4.6 ($3.00/1M)로 옮기면 단가만 보면 20% 비싸 보이지만, 동일 콘텐츠 기준 토큰 수가 10~20% 적으면 실제 청구액 차이는 0~10% 수준일 수 있습니다. 단가가 아닌 워크로드 시뮬레이션 결과로 비교하세요.

미신 3: "출력 토큰 비용은 무시해도 된다"

입력 토큰 수에 집중하고 출력을 잊는 흔한 실수입니다. 사실 출력 단가는 입력의 3~6배입니다. 토큰 수가 입력 70% / 출력 30%인 워크로드도 청구액 비율은 출력 75%일 수 있습니다.

구체적으로 Claude Opus 4.7 기준 입력 $5/1M, 출력 $25/1M (5배). 요청당 2,000 입력 + 500 출력 토큰의 워크로드:

코드 생성, 장문 작성, 번역 같은 출력 헤비 작업에서는 입력 vs 출력 청구액 비율이 1:10에 가깝습니다. "max_tokens"를 신중히 설정하지 않으면 모델이 길게 생성하도록 유도되어 비용이 곱해집니다. 응답 길이 가이드를 시스템 프롬프트에 명시("3~5문장으로 답하라")하고 max_tokens 한도를 보수적으로 설정하세요 — 무제한이 아닌 실제 필요한 최대값으로.

미신 4: "한국어/일본어/중국어 토큰 수는 영어와 비슷하다"

비라틴 문자는 토큰을 훨씬 많이 소비합니다. 같은 의미를 가진 텍스트가 영어로 1,000 토큰일 때 한국어로는 약 1,500~2,000 토큰, 일본어로는 약 1,600~2,200 토큰입니다. 이유는 BPE(Byte Pair Encoding) 학습 데이터에 영어가 압도적으로 많아 영어 단어는 1~2 토큰으로 압축되지만, 한국어 음절은 종종 2~3 UTF-8 바이트로 분리되어 각 바이트가 별도 토큰이 되는 경우가 흔합니다.

측정 예: "안녕하세요"(5 음절) → GPT-4o로 약 5 토큰, "Hello" → 1 토큰. "오늘 날씨가 어떻습니까?" (12 음절) → 약 13 토큰, "What's the weather today?" → 약 6 토큰. 영어 대비 약 2배.

한국 사용자가 많은 서비스(챗봇, 번역, 검색)에서 영어 기준 비용 추정은 거의 항상 50~100% 부족합니다. 비용 모델에 다음을 반영하세요:

미신 5: "토큰 수는 모델 버전과 무관하게 일정하다"

모델이 업그레이드되면 토크나이저도 바뀔 수 있습니다. OpenAI는 GPT-4에서 GPT-4o로 cl100k_base → o200k_base로 교체했고, 그 결과 동일 영어 텍스트가 약 5~15% 적은 토큰으로 토큰화됩니다. 이는 마이그레이션 시 무료 절감이지만 — 비용 모델이 구 토크나이저 기준으로 작성되어 있으면 새 모델의 실제 청구액과 어긋납니다.

Anthropic의 Claude 3, Claude 4 계열도 토크나이저 동작에 미세한 차이가 있을 수 있습니다 — 두 자릿수 퍼센트는 아니지만 큰 토큰 볼륨에서는 의미 있습니다. 모델 업그레이드 시 반드시 다음을 수행:

  1. 대표 프롬프트 샘플 100~500개를 두 모델로 토큰화해 토큰 수 분포 비교
  2. 새 모델의 실제 청구액을 1주일 운영 후 추정치와 비교 검증
  3. 비용 모델 코드를 새 토크나이저로 업데이트 (tiktoken 인코딩 파일 교체)
  4. 대시보드와 알림 임계값을 새 비용 기준으로 재조정

"버전 무관 토큰 수" 가정은 새 모델 출시일에 청구액 충격을 만드는 가장 흔한 함정 중 하나입니다. 항상 새 모델은 표준 비용 모델과 별도로 1주일 실측하세요.

교훈: 휴리스틱이 아닌 실측에 기반한 비용 모델

"4 문자 = 1 토큰" 같은 단순 공식은 빠른 백오브엔벨로프 추정에는 쓸 수 있지만, 프로덕션 예산 수치에는 절대 쓰지 마세요. 비용 모델은 항상:

비용 추정의 정확도가 5%면 100만 달러 워크로드의 5만 달러 오차 — 작은 팀 한 명 분의 1년 인건비 수준입니다. 단순 휴리스틱을 그대로 두는 비용이 정확한 측정에 드는 비용보다 훨씬 큽니다.

자주 묻는 질문

코드를 영어로 보고 단가를 매기면 안 되는 이유는?

코드는 산문 영어와 토큰화 동작이 다릅니다. 들여쓰기, 변수명, 연산자, 괄호가 토큰 경계를 자주 끊으므로, 같은 문자 길이의 영어 산문보다 약 20~40% 더 많은 토큰을 소비합니다. JSON과 YAML 같은 구조화 데이터는 더 비대해집니다 — 큰따옴표, 콜론, 쉼표가 추가 토큰을 만듭니다.

Claude와 GPT의 토큰 수를 호환되게 쓰면 왜 안 되나요?

두 모델은 서로 다른 토크나이저를 사용합니다. 같은 텍스트라도 Claude는 GPT 대비 영어 산문에서 약 10~20% 적게 셉니다. 한국어/일본어/중국어에서는 격차가 더 커지거나 역전됩니다. GPT 단가로 비용을 추정하고 Claude로 옮기면 실제 청구액이 추정치와 15~30% 다를 수 있습니다.

출력 토큰 비용을 무시해도 되나요?

절대 안 됩니다. 출력 단가는 입력의 3~6배입니다. 청구액 비율은 토큰 수가 아니라 가중 평균에 좌우되므로, 출력 토큰 1개가 입력 토큰 5개와 같은 비용입니다. 긴 응답을 생성하는 워크로드에서 출력은 총 비용의 70~90%를 차지합니다.

시스템 프롬프트가 시간이 지나면 토큰 수가 변할 수 있나요?

예. 토크나이저는 모델 버전마다 다를 수 있습니다. OpenAI는 GPT-4(cl100k_base)에서 GPT-4o(o200k_base)로 토크나이저를 교체해 같은 영어 텍스트가 약 5~15% 적은 토큰으로 토큰화됩니다. 새 모델로 마이그레이션할 때 비용 모델을 재검증하세요.