LLM 토큰의 작동 방식 (그리고 이것이 AI 비용을 설명하는 이유)
요약
LLM이 텍스트를 처리하는 기본 단위인 토큰의 개념과 작동 원리를 설명합니다. 토큰화 과정이 AI 모델의 비용 산정 및 성능에 미치는 직접적인 영향을 분석합니다.
핵심 포인트
- LLM은 단어가 아닌 숫자로 매핑된 토큰 단위로 데이터를 처리함
- 토큰은 단어, 부분 단어, 공백, 문장 부호를 포함하는 텍스트 덩어리임
- API 비용은 입력과 출력 토큰 수에 따라 결정되며 출력 단가가 더 높음
- 비용 절감을 위해 프롬프트 최적화 및 컨텍스트 캐싱 활용이 권장됨
당신의 LLM은 결코 당신의 단어를 읽지 않습니다 — 토큰을 읽습니다. 그리고 당신의 AI 청구서에 나타나는 거의 모든 놀라운 점들은 바로 그 하나의 사실로 거슬러 올라갑니다. 그 분석 내용을 여기 공개합니다 👇
거대 언어 모델 (Large Language Models)에 대해 거의 아무도 내재화하지 못하는 사실이 있습니다: Claude는 결코 당신의 단어를 읽지 않습니다. 그것은 토큰 (tokens) — 즉, 숫자를 읽습니다. 당신의 프롬프트는 조각들로 잘게 쪼개지고, 각 조각은 정수 (integer)로 매핑되며, 모델은 오직 그 정수들만을 봅니다. 당신이 마주하는 모든 제한 사항, 당신이 지불하는 모든 비용, 그리고 당신이 목격한 기이한 동작의 절반은 이 하나의 사실로 거슬러 올라갑니다.
이 기사는 토큰이 실제로 무엇인지, 왜 모델이 단어 대신 토큰으로 작동하는지, 그리고 그 단 하나의 설계 선택이 어떻게 당신의 AI 비용을 설명하는지를 설명합니다.
한 문장 요약: 텍스트는 토큰(평균적으로 단어의 약 3/4 크기인 덩어리)으로 분할되고, 각 토큰은 숫자에 매핑되며, 당신은 입력(in)과 출력(out) 모두에 대해 토큰당 비용을 지불합니다. 따라서 토큰을 이해하는 것이 비용을 이해하는 것입니다.
토큰이 실제로 무엇인가
토큰은 텍스트의 덩어리입니다 — 종종 하나의 단어이지만, 빈번하게는 단어의 일부분, 공백, 또는 문장 부호입니다. 토크나이저 (Tokenizer)는 텍스트 덩어리를 정수 ID로 매핑하는 고정된 사전입니다.
대략적인 직관:
- 일반적인 단어 (
the,code,error)는 보통 하나의 토큰입니다. - 희귀하거나 긴 단어는 여러 개의 토큰으로 분할됩니다 (
tokenization→token+ization). - 공백과 문장 부호도 토큰입니다.
- 영어에서의 유용한 경험칙: 토큰당 약 4글자, 또는 토큰당 약 0.75단어.
따라서 모델에게
토큰은 설계된 중간 단계입니다. 즉, 모델이 한 번도 접해보지 못한 단어를 포함하여 어떠한 텍스트라도 조각들을 이어 붙임으로써 조립할 수 있는 공통 조각들의 고정된 어휘집(수만 개의 항목)입니다. 이 압축 과정이 전체 시스템을 다룰 수 있게(tractable) 만듭니다.
이것이 비용을 설명하는 이유
Anthropic을 포함한 모든 API 제공업체는 토큰당 가격을 책정하며, 양방향을 모두 계산합니다:
- 입력 토큰 (Input tokens): 당신이 보내는 모든 것 — 프롬프트 (prompt), 시스템 프롬프트 (system prompt), 대화 기록 (conversation history), 검색된 문서 (retrieved documents), 도구 정의 (tool definitions) 등 전부를 의미합니다.
- 출력 토큰 (Output tokens): 모델이 다시 생성하는 모든 것. 출력은 일반적으로 입력보다 몇 배 더 높은 가격이 책정됩니다.
이것이 비용이 사람들을 놀라게 하는 이유입니다:
-
긴 컨텍스트 (Long context)는 공짜가 아닙니다.
-
비용을 추산할 때는 단어가 아니라 토큰을 세세요.
-
프롬프트를 필요한 만큼만 다듬으세요. "혹시 몰라서" 추가한 모든 문단은 호출할 때마다 비용이 발생합니다.
-
채팅 앱의 대화 기록 증가를 주의하세요. 오래된 대화는 삭제하거나 요약하세요.
-
에세이가 필요하지 않다면 출력 길이를 제한하세요.
-
동일한 대규모 컨텍스트를 반복해서 재사용한다면, 안정적인 접두사(stable prefix)를 캐싱(Cache)하세요.
흔한 오해들
- "모델이 내 텍스트를 읽는다." 아닙니다. 모델은 토큰 ID (token IDs)를 읽습니다. 당신의 단어들은 먼저 변환됩니다.
- "단어 하나가 토큰 하나다." 종종 그렇지만, 길거나 희귀한 단어는 여러 개의 토큰으로 분할되며, 공백과 문장 부호도 계산에 포함됩니다.
- "출력만 비용이 발생한다." 양방향 모두 청구됩니다. 입력 (input)은 보통 토큰당 가격이 더 저렴하지만, 양이 훨씬 더 많습니다.
- "더 큰 컨텍스트 창 (context window)은 사용하는 것이 공짜다." 용량은 사용할 수 있지만, 그것을 사용하는 것은 매 호출마다 토큰 비용이 발생합니다.
자주 묻는 질문 (FAQ)
일반적인 텍스트 한 페이지는 몇 토큰인가요?
산문 기준으로 페이지당 대략 500~800 토큰이지만, 서식과 어휘에 따라 달라집니다.
왜 코드와 JSON은 때때로 보이는 것보다 더 많은 토큰 비용이 드나요?
기호, 들여쓰기, 중괄호 등이 각각 별도로 토큰화되므로, 구조화된 텍스트는 문자 수 대비 토큰 밀도가 높을 수 있습니다.
시스템 프롬프트 (system prompt)도 포함되나요?
네. 시스템 프롬프트, 도구 정의 (tool definitions), 그리고 검색된 모든 컨텍스트 (retrieved context)는 매 호출 시 당신이 비용을 지불해야 하는 입력 토큰입니다.
매번 동일한 대규모 컨텍스트를 다시 보내지 않는 방법이 있나요?
네, 프롬프트 캐싱 (prompt caching)을 사용하면 아주 적은 비용으로 안정적인 접두사를 재사용할 수 있습니다.
저는 Claude를 하나씩 분해하여 살펴보는 전체 시리즈를 진행하고 있습니다 — 각 영상과 글 버전이 The Stack Underflow에 업로드됩니다. 이 글의 전체 텍스트 버전과 시리즈의 나머지 내용은 thestackunderflow.com/tutorials에서 확인하실 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기