Token Calculator — Usage Guide
Công cụ tính token cho LLM và Embedding Models
LLM Token Calculator
Cách đếm Input Tokens (HuggingFace Tokenizer)
Embedding Token Calculator
Cách đếm Input Tokens (HuggingFace Tokenizer)
Bộ công cụ gồm 2 calculator chuyên biệt:
1. LLM Token Calculator (complete_token_calculator_llm.py)
Dành cho Chat Completion models (Gemma, GPT, Claude, v.v.)
So sánh 2 phương pháp:
✅ OpenAI Client (baseline - ground truth)
✅ LiteLLM (wrapper library)
Đặc điểm:
Đếm cả prompt_tokens và completion_tokens
Input: Messages (chat format)
Output: Response text + token usage
2. Embedding Token Calculator (complete_token_calculator_embedding.py)
Dành cho Embedding models (E5, text-embedding-ada-002, v.v.)
So sánh 3 phương pháp:
✅ OpenAI Client (baseline - ground truth)
✅ LiteLLM (wrapper library)
✅ LangChain (high-level framework)
Đặc điểm:
Chỉ đếm prompt_tokens (embeddings không có completion)
Input: Text hoặc list of texts
Output: Embedding vectors + token usage
LLM Token Calculator
Sử dụng trong code
Cơ chế hoạt động
Method 1: OpenAI Client (Baseline)
Method 2: LiteLLM
Kết luận: Cả 2 method đều gọi API thực và đều cho kết quả chính xác như nhau. LiteLLM là wrapper giúp code đơn giản hơn khi làm việc với nhiều provider.
Các API methods ở trên trả về số tokens từ server. Để hiểu rõ cách server đếm tokens, ta cần biết tokenizer mà model sử dụng.
Model: google/gemma-3-27b-it
Tokenizer: Gemma sử dụng Gemma tokenizer (dựa trên SentencePiece)
Cơ chế đếm:
Chat messages được format theo template của model (beg_of_turn, end_of_turn tokens)
Text được tokenize thành subword pieces
Special tokens được thêm vào: <bos>, <eos>, <start_of_turn>, <end_of_turn>
Ví dụ với "Hello, how are you?":
Lưu ý:
API có thể trả về số tokens khác một chút do cách xử lý internal
Special tokens và chat template format ảnh hưởng đến token count
Gemma-2-27b-it và Gemma-3-27b-it có thể dùng cùng tokenizer
Embedding Token Calculator
Sử dụng trong code
Cơ chế hoạt động
Method 1: OpenAI Client (Baseline)
Method 2: LiteLLM
Method 3: LangChain
Kết luận: Tất cả 3 methods đều gọi API thực và cho kết quả giống nhau. Chọn method phù hợp với stack công nghệ bạn đang dùng:
OpenAI Client: Dùng khi chỉ cần OpenAI API
LiteLLM: Dùng khi cần support nhiều providers
LangChain: Dùng khi đã có hệ thống LangChain
Các API methods ở trên trả về số tokens từ AI Serving Engine. Để hiểu rõ cách AI Engine đếm tokens, ta cần biết tokenizer mà model sử dụng.
Gemma Models: https://huggingface.co/google/gemma-2-27b-it
E5 Embedding Models: https://huggingface.co/intfloat/multilingual-e5-large
API & Libraries
LiteLLM Docs: https://docs.litellm.ai/
OpenAI API: https://platform.openai.com/docs
LangChain Docs: https://python.langchain.com/docs/
HuggingFace Transformers: https://huggingface.co/docs/transformers/
Tokenizers Guide: https://huggingface.co/docs/transformers/tokenizer_summary
Tokenizer Implementation
SentencePiece: https://github.com/google/sentencepiece
BPE Algorithm: https://en.wikipedia.org/wiki/Byte_pair_encoding
XLM-RoBERTa: https://huggingface.co/xlm-roberta-large