Tokenizer.md

Token Calculator — Usage Guide

Công cụ tính token cho LLM và Embedding Models


📚 Mục lục

  1. Tổng quan

  2. Cài đặt

  3. LLM Token Calculator

    • Cách đếm Input Tokens (HuggingFace Tokenizer)

  4. Embedding Token Calculator

    • Cách đếm Input Tokens (HuggingFace Tokenizer)

  5. Reference


Tổng quan

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_tokenscompletion_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


Cài đặt

Yêu cầu

Dependencies


LLM Token Calculator

Cách chạy

Sử dụng trong code

Output mẫu

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ách đếm Input Tokens theo HuggingFace Tokenizer

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:

  1. Chat messages được format theo template của model (beg_of_turn, end_of_turn tokens)

  2. Text được tokenize thành subword pieces

  3. 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

Cách chạy

Sử dụng trong code

Output mẫu

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ách đếm Input Tokens theo HuggingFace Tokenizer

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

Reference

API & Libraries

  • LiteLLM Docs: https://docs.litellm.ai/

  • OpenAI API: https://platform.openai.com/docs

  • LangChain Docs: https://python.langchain.com/docs/

Tokenizers

  • 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

Last updated

Was this helpful?