OpenAI
이 페이지는 기계 번역되었습니다. 영어 원문 보기

토큰이란 무엇이며 어떻게 계산하나요?

마지막 수정: 4 days ago

토큰이란 무엇인가요?

토큰은 OpenAI 모델이 처리하는 텍스트의 기본 단위입니다. 언어와 문맥에 따라 문자 하나만큼 짧을 수도 있고 단어 하나만큼 길 수도 있습니다. 공백, 문장 부호, 단어의 일부도 모두 토큰 수에 포함됩니다. API는 응답을 생성하기 전에 내부적으로 이와 같은 방식으로 텍스트를 분할합니다.

영어에 적용할 수 있는 유용한 경험 법칙은 다음과 같습니다.

  • 1토큰 ≈ 4자

  • 1토큰 ≈ 단어 ¾개

  • 100토큰 ≈ 75단어

  • 문장 1~2개 ≈ 30토큰

  • 문단 1개 ≈ 100토큰

  • 약 1,500단어 ≈ 2,048토큰

토큰화 방식은 모델과 인코딩에 따라 달라집니다. 대상 모델의 정확한 토큰 수를 확인하려면 Tokenizer 도구 또는 tiktoken.encoding_for_model(model)을 사용하세요.

예시

실제 텍스트와 대략적인 토큰 수를 비교한 예시는 다음과 같습니다.

  • 웨인 그레츠키의 명언 “시도하지 않은 슛은 100% 빗나간다” = 11토큰

  • OpenAI 헌장 = 476토큰

  • 미국 독립선언서 = 1,695토큰

토큰 수 계산 방식

API에 텍스트를 전송하면 다음과 같이 처리됩니다.

  1. 텍스트가 토큰으로 분할됩니다.

  2. 모델이 이 토큰을 처리합니다.

  3. 응답이 토큰 시퀀스로 생성된 후 다시 텍스트로 변환됩니다.

토큰 사용량은 다음과 같은 여러 범주로 집계됩니다.

  • 입력 토큰 – 요청에 포함된 토큰입니다.

  • 출력 토큰 – 응답에서 생성된 토큰입니다.

  • 캐시된 토큰 – 대화 기록에서 재사용된 토큰으로, 대개 할인된 요금이 적용됩니다.

  • 추론 토큰 – 일부 고급 모델에서는 최종 출력을 생성하기 전에 추가적인 “사고 단계”가 내부적으로 포함됩니다.

이 수치는 API 응답 메타데이터에 표시되며 요금 청구와 사용량 추적에 활용됩니다.

토큰화를 더 자세히 살펴보려면 대화형 Tokenizer 도구를 사용하세요. 토큰 수를 계산하고 텍스트가 토큰으로 분할되는 방식도 확인할 수 있습니다.

또는 프로그래밍 방식으로 텍스트를 토큰화하려면 OpenAI 모델 전용 고속 BPE 토크나이저인 Tiktoken을 사용하세요.

토큰 한도

모델에는 입력과 출력을 합산한 최대 토큰 한도가 있습니다. 현재 고용량 모델은 컨텍스트에서 최대 수십만 개의 토큰을 지원하지만, 실제 한도는 모델 버전과 사용 등급에 따라 달라질 수 있습니다.

한도를 초과한 경우 다음 방법을 사용할 수 있습니다.

  • 프롬프트를 줄이거나 바꿔 씁니다.

  • 긴 텍스트를 더 작은 단위로 나눕니다.

  • 입력을 전송하기 전에 요약하거나 전처리합니다.

토큰 요금

API 사용 요금은 토큰 단위로 책정되며 모델과 토큰 유형(입력, 출력 또는 캐시)에 따라 달라집니다. 현재 요금은 OpenAI의 요금 페이지에서 확인하세요. 일부 추론 모델은 내부적으로 더 많은 토큰을 사용할 수 있지만, 완료된 작업당 필요한 토큰 수를 줄여 효율성을 높이는 것을 목표로 합니다.

토큰은 AI 모델이나 제공업체 간에 표준화되어 있지 않습니다. 같은 텍스트라도 모델마다 처리하거나 생성하는 데 필요한 토큰 수가 다를 수 있으므로, 고지된 100만 토큰당 요금이 낮다고 해서 반드시 총비용도 낮은 것은 아닙니다.

사용자에게 표시되는 응답 길이만으로도 전체 상황을 판단할 수 없습니다. 일부 모델은 답변을 생성하기 전에 내부적으로 추론 토큰을 사용하므로, 표시되는 응답이 길다고 해서 반드시 모델이 전체적으로 더 많은 토큰을 사용한 것은 아닙니다.

모델을 비교할 때는 필요한 총 토큰 수와 성공적인 결과당 비용을 고려하세요. 벤치마크는 유용한 출발점이 될 수 있지만, 실제 비용과 성능을 파악하는 가장 좋은 방법은 자체 사용 사례로 모델을 테스트하는 것입니다.

토큰 살펴보기

API는 말뭉치 데이터의 문맥에 따라 단어를 처리합니다. 모델은 프롬프트를 받아 입력을 토큰 목록으로 변환하고 프롬프트를 처리한 다음, 예측된 토큰을 응답에 표시되는 단어로 다시 변환합니다.

사람에게는 똑같아 보이는 두 단어도 텍스트 내 구조에 따라 서로 다른 토큰으로 생성될 수 있습니다. API가 텍스트 내 문맥에 따라 ‘red’라는 단어의 토큰 값을 생성하는 방식을 살펴보세요.

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

위의 첫 번째 예에서 ‘ red’의 토큰 “2266”에는 뒤쪽 공백이 포함됩니다. 참고로 이 토큰 ID는 설명을 위한 예시입니다.

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

‘ Red’의 토큰 “2296”은 앞에 공백이 있고 대문자로 시작하므로, 소문자로 된 ‘ red’의 토큰 “2266”과 다릅니다.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

‘Red’가 문장 맨 앞에 사용되면 생성된 토큰에 앞쪽 공백이 포함되지 않습니다. 토큰 “7738”은 앞의 두 예시와 다릅니다.

관찰 결과:

토큰의 출현 가능성이나 빈도가 높을수록 더 낮은 토큰 번호가 할당됩니다.

  • 마침표에 생성된 토큰은 세 문장 모두에서 동일한 “13”입니다. 말뭉치 데이터 전체에서 마침표가 문맥상 매우 비슷하게 사용되기 때문입니다.

  • ‘red’에 생성되는 토큰은 문장 내 위치에 따라 달라집니다.

    • 문장 중간의 소문자: ‘ red’ - (토큰: “2266”)

    • 문장 중간의 대문자: ‘ Red’ - (토큰: “2297”)

    • 문장 맨 앞의 대문자: ‘Red’ - (토큰: “7738”)

이 문서가 도움이 되었나요?