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)