Token là gì? Cách tính token và chi phí API
Token không phải 'từ' — nó là đơn vị thông tin AI thực sự xử lý. Hiểu cách đếm token để tối ưu context window và kiểm soát chi phí API.
Token là đơn vị cơ bản mà Large Language Model dùng để phân tích và sinh văn bản — không phải từ tiếng Việt hay tiếng Anh, không phải ký tự Unicode, mà là mảng dữ liệu được mã hóa từ quá trình tokenization. Trong Context Engineering, token đóng vai trò "tiền tệ" kép: vừa là đơn vị chi phí bạn trả cho API, vừa là đơn vị chiếm dụng context window — tài nguyên khan hiếm quyết định AI có "nhớ" được gì hay không.
Token không phải từ: Cách AI "nhai" văn bản
Phần lớn người mới hiểu nhầm: 1 từ = 1 token. Thực tế phức tạp hơn nhiều. Các mô hình hiện đại dùng thuật toán Byte Pair Encoding (BPE) hoặc WordPiece để chia văn bản thành các mảng nhỏ dựa trên tần suất xuất hiện trong dữ liệu huấn luyện.
- Từ phổ biến: "the", "chat", "GPT" thường nằm gọn trong 1 token
- Từ hiếm: "Transformer" có thể bị tách thành 3 token:
Trans,former, hoặcTransf,ormer - Tiếng Việt: "Hôm nay" thường thành 2-3 token do cấu trúc unicode và dấu thanh; "Việt Nam" có thể là 3-4 token
- Số liệu: Các con số như "12345" thường thành 5 token riêng lẻ (1, 2, 3, 4, 5) — cực kỳ tốn kém
Kết quả: một đoạn văn tiếng Việt 100 từ có thể tiêu tốn 150-200 tokens, trong khi bản tiếng Anh tương đương chỉ cần 75-100 tokens. Đây là lý do cùng một câu hỏi, hỏi bằng tiếng Anh thường rẻ và nhanh hơn 30-40% so với tiếng Việt.
Cách đếm token trong thực chiến
Để kiểm soát ngân sách, bạn cần đếm token trước khi gửi API. Công cụ phổ biến nhất là thư viện tiktoken của OpenAI:
import tiktoken
# Chọn encoder phù hợp với model
enc = tiktoken.encoding_for_model("gpt-4")
# Đếm token cho tiếng Việt
text = "Context Engineering là paradigm shift từ việc hỏi 'viết gì' sang 'đưa gì'"
tokens = enc.encode(text)
print(f"Số token: {len(tokens)}") # Output: ~15-18 tokens
print(f"Các token: {tokens}") # [1234, 4567, ...]Quy tắc ước tính nhanh:
- Tiếng Anh: 1 từ ≈ 1.3 token (ngược lại: 100 token ≈ 75 từ)
- Tiếng Việt: 1 từ ≈ 2.0-2.5 token (ngược lại: 100 token ≈ 40-50 từ)
- Code Python: 1 dòng trung bình 5-10 token tùy độ dài
Token economics: Input, Output và Context Window
Chi phí API tính theo công thức:
Input tokens bao gồm: system prompt, conversation history, retrieved documents (RAG), và câu hỏi hiện tại. Output tokens là phản hồi AI sinh ra. Thường đắt gấp 2-4 lần vì sinh văn bản tốn tính toán hơn đọc.
Mối liên hệ với Context Window: Context window được đo bằng token (ví dụ: 128K tokens). Mỗi token bạn nhồi vào input là một token ít đi cho AI "suy nghĩ". Đây là trade-off cốt lõi của Context Engineering: đưa nhiều thông tin (nhiều token) thì AI hiểu sâu, nhưng tốn tiền và có nguy cơ vượt giới hạn bộ nhớ.
Tối ưu token cho tiếng Việt
Do tiếng Việt kém hiệu quả trong hệ thống token phương Tây, bạn cần chiến thuật riêng:
- Chuẩn hóa Unicode: Dùng NFC normalization để tránh "e" + "́" thành 2 token riêng biệt
- Tránh dư thừa: "Cái này là cái gì vậy?" → "Đây là gì?" (tiết kiệm 4-5 token)
- Dùng structured format: JSON ít tốn token hơn markdown free-text vì lặp lại keys
- Hy sinh văn phong: Trong ngữ cảnh RAG, "báo cáo tài chính quý 3 năm 2024" ngắn gọn hơn "tài liệu về kết quả kinh doanh trong quý ba của năm hai nghìn không trăm hai mươi tư" và tiết kiệm ~15 tokens
Ví dụ thực tế
Cùng câu hỏi, khác ngữ cảnh — Khác chi phí, khác kết quả
Bạn hỏi AI: "Tóm tắt điểm chính của tài liệu trên".
Scenario A (Prompt Engineering thuần): Gửi kèm 3000 tokens tài liệu dài dòng, không liên quan đến câu hỏi. AI phải đọc qua tất cả, tốn 3000 tokens input, trả lời chung chung.
Scenario B (Context Engineering): Dùng RAG lọc ra đúng 500 tokens đoạn liên quan nhất. Chi phí input giảm 83%, output chính xác hơn vì AI không bị "ngộp" thông tin nhiễu.
So sánh hiệu quả ngôn ngữ
Đoạn văn: "Machine Learning là một nhánh của AI cho phép máy tính học từ dữ liệu."
- Tiếng Anh gốc: ~15 tokens
- Dịch tiếng Việt: ~22-25 tokens (tăng 50%)
- Dịch tiếng Trung (Giản thể): ~12-14 tokens (hiệu quả hơn cả tiếng Anh)
Áp dụng: Nếu hệ thống của bạn xử lý tài liệu song ngữ Anh-Việt, nên lưu trữ và index bản tiếng Anh, chỉ dịch cuối cùng khi trả về người dùng.
Tính toán budget cho ứng dụng chat
# Giả định: 1000 user/ngày, mỗi user 10 turn conversation
avg_tokens_per_turn = 2000 # history + prompt + response
daily_tokens = 1000 * 10 * 2000 # 20 triệu tokens
cost_gpt4o = 20_000_000 * ($5 + $15) / 1_000_000 # ~$400/ngày
cost_gpt4omini = 20_000_000 * ($0.15 + $0.6) / 1_000_000 # ~$15/ngàyNhận ra bottleneck là token count giúp bạn quyết định: dùng model rẻ hơn, hay tối ưu context (rút gọn history) để tiếp tục dùng model mạnh.
Ứng dụng theo đối tượng
Sinh viên và người mới chuyển từ ChatGPT Free
Khi chuyển sang API (OpenAI, Anthropic, hoặc local), "sốc" bill thường đến từ việc copy-paste văn bản dài mà không kiểm tra token count. Mẹo: Dùng playground UI có hiển thị token count real-time, hoặc ước tính 1 trang A4 ≈ 1500 tokens.
Developer xây dựng sản phẩm AI
Thiết kế RAG pipeline phải tính "token budget" cố định cho mỗi request. Ví dụ: chỉ retrieve top-3 chunks, mỗi chunk tối đa 300 tokens = 900 tokens context + 500 tokens query & instruction + 400 tokens cho output = 1800 tokens/request. Nếu vượt quá, hoặc cắt giảm chunks, hoặc dùng model có context window lớn hơn (đắt hơn).
Doanh nghiệp xử lý tài liệu hàng loạt
Batch processing 10.000 hợp đồng: Nếu mỗi hợp đồng dài 8000 tokens, tổng chi phí có thể vượt ngân sách. Giải pháp Context Engineering: dùng sliding window hoặc map-reduce pattern để chia nhỏ tài liệu, xử lý từng phần, chỉ aggregate kết quả — tốn nhiều request nhưng mỗi request rẻ hơn nhiều.
So sánh các khái niệm liên quan
| Tiêu chí | Token | Từ (Word) | Ký tự (Character) | Ý nghĩa trong AI |
|---|---|---|---|---|
| Đơn vị AI xử lý | ✅ Có | ❌ Không | ❌ Không | Token là ngôn ngữ máy |
| Tương đương tiếng Anh | ~0.75 từ | 1 từ | ~5-6 ký tự/từ | 100 tokens ≈ 75 từ Anh |
| Tương đương tiếng Việt | ~0.4-0.5 từ | 1 từ | ~1-2 ký tự/từ | 100 tokens ≈ 40-50 từ Việt |
| Ảnh hưởng giá API | Trực tiếp | Gián tiếp | Không | Đếm token = đếm tiền |
| Giới hạn bộ nhớ | Có | Không | Không | Context window tính bằng token |
Bảng so sánh chi phí (tham khảo):
| Model | Input ($/1M tokens) | Output ($/1M tokens) | Context Window |
|---|---|---|---|
| GPT-4o | $5 | $15 | 128K |
| Claude 3.5 Sonnet | $3 | $15 | 200K |
| GPT-4o-mini | $0.15 | $0.60 | 128K |
| Gemini 1.5 Flash | $0.075 | $0.30 | 1M |
Kết luận: Output token thường đắt gấp 3-4 lần input. Đừng yêu cầu AI "suy nghĩ ra lớn" (Chain-of-Thought dài dòng) nếu không cần thiết — mỗi token suy luận trung gian đều tốn tiền.
Bài viết liên quan
Cùng cụm: Nền tảng Context
Context Engineering là gì?
Hiểu paradigm shift từ việc viết prompt đẹp sang thiết kế thông tin đúng — nền tảng của Level 1
Context Window: Giới hạn bộ nhớ của AI
Token chiếm chỗ trong context window như thế nào? Cách quản lý giới hạn 128K tokens
Context vs Prompt: Khác nhau chỗ nào?
Phân biệt rạch ròi giữa hai paradigm: hỏi AI viết gì vs đưa AI thông tin gì
Kiến trúc thông tin cho AI
Chiến lược sắp xếp thông tin trong context: Đưa gì trước, bỏ gì sau, thứ tự ra sao
Đọc tiếp: Quản lý Context và Retrieval
Quản lý Context hiệu quả
Các kỹ thuật nén, lọc và ưu tiên thông tin trong context window giới hạn
Retrieval & Knowledge
Từ token economics đến thiết kế hệ thống RAG: lấy đúng thông tin, đúng lúc, đúng giá
Context Window: Giới hạn bộ nhớ của AI
Context Window là gì? Tại sao AI 'quên' lúc chat dài? Hiểu giới hạn bộ nhớ tạm thời của LLM để tối ưu chi phí và thiết kế ứng dụng thực tế.
Context Engineering vs Prompt Engineering: Khác nhau chỗ nào?
Phân biệt rõ Prompt Engineering (viết gì) và Context Engineering (đưa gì). Hiểu đúng paradigm shift để xây dựng AI application hiệu quả hơn.