“프롬프트 토큰”은 대개 같은 의미입니다. 하지만 프롬프트에는 애플리케이션이나 API가 추가한 내용이 포함될 수 있으므로 이 명칭은 오해를 불러일으킬 수 있습니다.
사용자의 메시지가 아닌 전체 요청
채팅 상자에 “최신 보고서를 요약해 줘”라고 입력한다고 가정해 보겠습니다. 이 문장은 입력의 한 부분입니다. 애플리케이션은 다음과 같은 내용도 함께 전송할 수 있습니다.
- 어시스턴트의 역할과 동작을 설정하는 지침;
- 이전 사용자 및 어시스턴트 메시지;
- 보고서 전체 또는 보고서에서 검색된 구절;
- 모델이 호출할 수 있는 도구의 정의;
- 도구가 반환한 결과; 및
- 역할, 메시지 경계 또는 생성이 시작될 지점을 식별하는 마커.
이러한 모든 부분이 입력 토큰이 될 수 있습니다. 정확히 어떤 부분이 포함되는지는 애플리케이션, API, 모델 및 활성화된 기능에 따라 달라집니다.
따라서 입력 토큰에는 정확한 경계가 있습니다. 입력 토큰은 하나의 요청에서 수행하는 역할로 정의됩니다. 한 턴에서 모델이 출력으로 생성한 텍스트도 애플리케이션이 대화 기록으로 다시 전송하면 다음 턴의 입력이 될 수 있습니다.
요청이 입력 토큰이 되는 과정
인터페이스에서 모델로 전달되는 과정은 다음과 같습니다.
system instructions ─┐
conversation history ├─> request formatting ─> tokenizer ─> input token IDs ─> model
documents and tools ┤
current message ─────┘먼저 애플리케이션이 요청의 컨텍스트를 구성합니다. 단순한 API 호출에는 프롬프트 하나만 포함될 수 있습니다. 프로덕션 환경의 어시스턴트는 지침, 대화 기록, 검색된 문서, 도구 스키마 및 기타 콘텐츠를 추가할 수 있습니다.
그다음 서비스가 선택한 모델에 맞게 해당 자료의 형식을 지정합니다. 채팅 모델은 색이 있는 메시지 말풍선이 표시된 시각적 대화 기록을 받지 않습니다. 채팅 템플릿 또는 이에 상응하는 내부 형식으로 구성된 시퀀스를 받습니다. vLLM의 채팅 API 문서는 이 단계를 명시적으로 설명합니다. 구조화된 메시지가 모델의 채팅 템플릿을 사용해 텍스트 프롬프트로 변환됩니다.
그런 다음 토크나이저가 형식이 지정된 시퀀스를 토큰 ID로 변환합니다. Hugging Face 토크나이저 레퍼런스에서 설명하듯이 이 과정에는 정규화, 텍스트를 여러 조각으로 분할, 조각을 ID에 매핑, 특수 토큰 추가가 포함될 수 있습니다. 모델마다 토크나이저와 템플릿이 다를 수 있으므로, 화면에 동일하게 표시되는 텍스트가 반드시 같은 입력 토큰 수를 보장하지는 않습니다.
마지막으로 모델이 해당 토큰 시퀀스를 처리하고 생성을 시작합니다. 응답의 사용량 메타데이터에는 제공업체가 요청을 어떻게 계산했는지가 보고됩니다.
예시
애플리케이션이 다음과 같은 예시 요청 내역을 보고한다고 가정해 보겠습니다.
- 시스템 지침: 36토큰
- 도구 정의: 74토큰
- 대화 기록: 160토큰
- 현재 사용자 메시지: 12토큰
- 메시지 형식 지정 및 특수 토큰: 15토큰
이 요청에는 입력 토큰 297개가 포함됩니다. 현재 메시지는 12토큰에 불과합니다.
이제 응답에 생성된 토큰이 60개 포함되었다고 가정해 보겠습니다. 이 60개는 이번 요청의 출력 토큰입니다. 다음 턴에서 애플리케이션은 이 답변을 기록에 포함할 수 있습니다. 그러면 동일한 텍스트가 다음 요청의 입력 토큰 수에 기여합니다.
캐싱은 반복 입력의 처리 방식과 가격을 변경하지만, 입력의 개념적 역할을 바꾸지는 않습니다. 297개 입력 토큰 중 200개가 재사용 가능한 접두사에서 온다면, 제공업체는 해당 200개를 캐시된 입력으로 별도로 보고하거나 가격을 책정할 수 있습니다. 그래도 이 토큰들은 모델에 제공되는 컨텍스트입니다. 예를 들어 Anthropic은 캐시된 요청을 여러 사용량 필드로 나누고, OpenAI는 캐시된 입력을 별도의 입력 범주로 공개합니다. 항상 현재 필드 정의를 확인하고, input_tokens라는 이름의 필드가 전체 합계라고 가정하지 마세요.
입력 토큰을 계산하는 방법
초안 단계에서는 모델에 맞는 토크나이저를 사용해 일반 텍스트의 토큰 수를 추정할 수 있습니다. 그러나 동일한 메시지 템플릿, 도구 형식, 특수 토큰, 미디어 인코딩 및 제공업체 측 추가 내용을 함께 적용하지 않으면 전체 API 토큰 수를 안정적으로 재현할 수 없습니다.
전체 요청을 계산하려면 제공업체가 제공하는 경우 토큰 계산 엔드포인트를 사용하세요. Anthropic의 토큰 계산 엔드포인트는 메시지, 시스템 프롬프트, 도구, 이미지 및 PDF를 허용합니다. Google의 토큰 가이드도 생성 후 반환되는 사용량과 사전 입력 토큰 수를 구분합니다. OpenAI의 토큰 계산 지침은 요청 구조와 텍스트가 아닌 입력이 전체 토큰 수에 영향을 줄 수 있다고 설명합니다.
사전 계산 결과는 용량 및 비용 추정치로 취급하세요. 요청 후에는 해당 호출이 실제로 어떻게 계산되고 청구되었는지 보여 주는 제공업체의 사용량 응답을 기록으로 보관하세요.
입력 토큰이 중요한 이유
비용
많은 API는 입력, 캐시된 입력 및 출력을 별도로 가격 책정합니다. 유용한 비용 내역은 다음과 같습니다.
input cost =
uncached input tokens × uncached input rate
+ cached input tokens × cached input rate요금과 범주는 변경되므로 가격을 애플리케이션 로직에 복사하지 말고 제공업체의 최신 가격 페이지를 사용하세요. 긴 시스템 지침, 반복되는 도구 정의, 대량의 검색 구절 및 계속 늘어나는 채팅 기록 때문에 입력 비용이 워크로드에서 가장 큰 부분을 차지할 수 있습니다.
사용 가능한 컨텍스트
입력 토큰은 모델의 컨텍스트 공간을 차지합니다. 모델과 API의 제한 규칙에 따라 입력이 많아질수록 응답에 사용할 공간이 줄어들 수 있습니다. 따라서 추가 컨텍스트를 전송한다고 해서 용량이 무료로 늘어나는 것은 아닙니다. 추가 컨텍스트는 다른 지침, 근거 및 대화 턴과 모델의 주의력 및 토큰 예산을 두고 경쟁합니다.
응답 시간
모델은 첫 번째 출력 토큰을 생성하기 전에 입력을 처리해야 합니다. 일반적으로 입력이 클수록 프롬프트 처리 작업이 많아집니다. 사용 가능한 캐시된 접두사를 재사용하면 이 작업을 줄일 수 있지만, 캐시 동작과 이점은 제공업체마다 다릅니다.
측정
입력 토큰 수는 문자 수나 단어 수보다 유용한 수준에서 요청을 비교하는 데 도움이 됩니다. 지나치게 큰 도구 스키마, 너무 많은 구절을 전송하는 검색 시스템 또는 매 턴마다 늘어나는 대화 기록을 발견할 수 있습니다.
흔한 오해
“입력 토큰은 내가 입력한 단어다”
사용자가 입력한 단어는 화면에 보이는 부분일 뿐입니다. 모델에 전달되는 요청에는 지침, 기록, 문서, 도구, 미디어 및 형식도 포함될 수 있습니다.
“단어 하나는 입력 토큰 하나다”
토큰은 단어, 단어의 일부, 구두점 또는 모델별 다른 단위일 수 있습니다. 토큰 경계는 토크나이저마다 다릅니다. AI에서 토큰이란 무엇인가요?에서 이 기본 단위를 설명합니다.
“캐시된 토큰은 더 이상 입력 토큰이 아니다”
캐시된 토큰은 재사용되는 입력입니다. 캐싱은 계산량, 가격 및 사용량 필드를 변경할 수 있지만, 캐시된 접두사는 여전히 요청에 컨텍스트를 제공합니다.
“어시스턴트 메시지는 항상 출력 토큰이다”
어시스턴트 메시지는 생성될 때 출력입니다. 이후 요청의 기록에 포함되면 해당 이후 요청에서는 입력이 됩니다. 입력과 출력은 텍스트의 영구적인 유형이 아니라 요청의 양쪽을 설명합니다.
“로컬 토크나이저가 청구 토큰 수를 알려 준다”
로컬 토크나이저는 텍스트 토큰 수를 거의 정확하게 계산할 수 있습니다. 그러나 채팅 템플릿 마커, 도구 스키마, 첨부 파일 및 제공업체 측 형식을 놓칠 수 있습니다. 청구 기록에는 API가 요청 후 반환하는 사용량을 사용하세요.
더 넓은 시스템에서 입력 토큰이 차지하는 위치
입력 토큰은 요청을 시작하는 모델의 시퀀스입니다. 출력 토큰은 해당 시퀀스 이후에 생성되며, 캐시된 입력 토큰은 입력 토큰을 처리 및 청구 측면에서 세분화한 것입니다. 이 범주들을 함께 보면 API 응답과 가격 페이지에 표시되는 대부분의 토큰 내역을 이해할 수 있습니다.
중요한 습관은 조합된 요청을 측정하는 것입니다. 짧은 사용자 메시지인데도 토큰 수가 예상보다 크게 나오면 토크나이저를 탓하기 전에 시스템 지침, 기록, 검색된 자료, 도구 및 형식을 점검하세요.
다음 단계
실제 API 응답 하나를 살펴보고 전체 입력에 기여하는 모든 사용량 필드를 식별하세요. 그런 다음 동일한 요청에 대해 제공업체의 사전 계산기를 실행하고 추정치와 최종 사용량을 비교하세요. 토큰 경계 자체가 불분명하다면 AI에서 토큰이란 무엇인가요?부터 시작하세요. 이어서 출력 토큰이란 무엇인가요?를 읽고, 입력 토큰, 출력 토큰, 추론 토큰 비교를 사용해 세 가지 회계 범주를 비교하세요.