ApproximateTokenCounter
ApproximateTokenCounter
ApproximateTokenCounter는 ChatMessage 객체와 선택적 도구 스키마의 토큰 수를 그 텍스트 길이로 추정해요. 추가 의존성이나 warm-up 단계가 필요 없죠.
Import path: haystack.token_counters.ApproximateTokenCounter
API reference: Token Counters
GitHub link: https://github.com/deepset-ai/haystack/blob/main/haystack/token_counters/approximate_counter.py
Package name: haystack-ai
출처: 문서
본문
Usage
카운터를 만들고 count()에 메시지 목록을 전달하세요:
from haystack.dataclasses import ChatMessage
from haystack.token_counters import ApproximateTokenCounter
messages = [
ChatMessage.from_system("You are a helpful assistant."),
ChatMessage.from_user("Explain retrieval-augmented generation."),
]
counter = ApproximateTokenCounter()
token_count = counter.count(messages)
print(token_count)
기본적으로 카운터는 네 문자를 토큰 하나로 취급합니다. chars_per_token을 설정해 애플리케이션의 언어와 모델에 맞게 추정치를 조정할 수 있어요:
counter = ApproximateTokenCounter(chars_per_token=3.5)
값이 작을수록 더 높고 보수적인 추정치가 나옵니다. chars_per_token은 0보다 커야 해요.
도구 스키마가 소비하는 컨텍스트를 포함하려면 count()에 도구를 전달하세요:
token_count = counter.count(messages, tools=[search_tool])
Non-text content
이미지와 파일은 텍스트 길이로 측정할 수 없으므로, 카운터는 항목마다 평면 추정치를 더해요. 애플리케이션이 큰 이미지나 긴 문서를 보낼 때 기본값을 변경하세요:
counter = ApproximateTokenCounter(
chars_per_token=4.0,
tokens_per_image=765,
tokens_per_file=4000,
)
카운터는 메시지에 직접 붙은 비텍스트 콘텐츠뿐 아니라 도구 결과에 중첩된 콘텐츠도 포함합니다.
더 알아보기 (Learn more)
- Token Counters — 토큰 카운터 개요
- TiktokenCounter — OpenAI tiktoken 기반 카운터
- CompactionHook — 컨텍스트 컴팩션