TiktokenCounter
TiktokenCounter
TiktokenCounter 는 OpenAI의 tiktoken 바이트-쌍 인코더로 ChatMessage 객체와 선택적 도구 스키마의 토큰 수를 추정하는 카운터예요. 일반적으로 OpenAI 모델에서는 문자 기반 추정보다 정확하지만, 다른 제공자의 토큰 수와는 다를 수 있어요.
출처: 문서
본문
임포트 경로는 haystack.token_counters.TiktokenCounter 예요. 필수 초기화 변수는 없어요.
설치 (Installation)
카운터를 만들기 전에 선택적 tiktoken 의존성을 설치하세요:
pip install tiktoken
사용법 (Usage)
카운터를 만들고 count() 에 메시지 목록을 전달해요:
from haystack.dataclasses import ChatMessage
from haystack.token_counters import TiktokenCounter
messages = [
ChatMessage.from_system("You are a helpful assistant."),
ChatMessage.from_user("Explain retrieval-augmented generation."),
]
counter = TiktokenCounter()
token_count = counter.count(messages)
print(token_count)
기본 인코딩은 o200k_base 예요. 모델이 요구할 때 다른 인코딩을 전달하세요:
counter = TiktokenCounter(encoding="cl100k_base")
카운터는 count() 를 처음 호출할 때 인코딩을 로드해요. 대신 애플리케이션 시작 시 로드하려면 warm_up() 을 명시적으로 호출하세요:
counter.warm_up()
도구 스키마가 소비하는 컨텍스트를 포함하려면 도구를 count() 에 전달하세요:
token_count = counter.count(messages, tools=[search_tool])
비텍스트 콘텐츠 (Non-text content)
토크나이저는 이미지나 파일을 측정할 수 없으므로, 카운터는 각 항목에 평평한(flat) 추정치를 더해요. 애플리케이션이 큰 이미지나 긴 문서를 보낼 때 기본값을 바꾸세요:
counter = TiktokenCounter(
encoding="o200k_base",
tokens_per_image=765,
tokens_per_file=4000,
)
카운터는 메시지에 직접 첨부된 비텍스트 콘텐츠뿐 아니라 도구 결과 안에 중첩된 콘텐츠도 포함해요.
더 알아보기 (Learn more)
- ChatMessage — 토큰 수를 세는 메시지 데이터 구조
- Token Counters API 참조
- GitHub 소스