Context Window + Token economics — vì sao AI hết tiền dù bạn chỉ hỏi 1 câu
Context window là 'bộ nhớ ngắn hạn' của AI — bài/file/conversation bạn paste vào đều ăn token. Hiểu Token vs Context vs Pricing 2026 để tránh bill $1000 cho 1 ngày dev, tối ưu prompt 50-90% phí, và biết khi nào AI 'quên'.
Mục lục bài viết(26)

Kiến trúc Transformer — backbone của mọi LLM (GPT, Claude, Gemini). Input chia thành token, embedding thành vector, qua nhiều attention layer xử lý quan hệ giữa token, output dự đoán token tiếp theo. Context window = số token tối đa model có thể "nhìn" 1 lần. Token economics quyết định bill API + giới hạn task. Nguồn: Wikimedia Commons (CC BY-SA 4.0).
Hiểu đơn giản nhất
Tưởng tượng AI là một người giúp việc lành nghề nhưng có 2 hạn chế:
- Bộ nhớ ngắn hạn có giới hạn — chỉ nhớ vài chục trang văn bản 1 lúc. Quá → quên đoạn đầu.
- Tính tiền theo từng "ý" — không phải theo lượt nói chuyện, mà theo số "từ" đã đọc + viết.
Tương ứng trong AI:
| Khái niệm | Đời thực | AI |
|---|---|---|
| Token | "Ý" của câu nói (≈ 1 âm tiết) | Đơn vị nhỏ nhất AI đọc/viết |
| Context Window | Bộ nhớ ngắn hạn người làm việc | Số token tối đa AI "nhìn" 1 lúc |
| Input cost | Tiền nghe chuyện | Tiền cho phần BẠN gửi |
| Output cost | Tiền nói chuyện | Tiền cho phần AI trả lời (đắt hơn 3-5x) |
| Prompt caching | Tiền giảm khi dạy 1 lần dùng nhiều lần | Cache prefix → request sau chỉ tính 10% |
3 model phổ biến nhất 2026 với context window:
| Model | Context Window | Input price | Output price |
|---|---|---|---|
| Claude Sonnet 4.5 | 200k token | $3/M | $15/M |
| Claude Opus 4.5 | 200k token | $15/M | $75/M |
| GPT-4o | 128k token | $2.5/M | $10/M |
| GPT-4 Turbo | 128k token | $10/M | $30/M |
| Gemini 1.5 Pro | 2M token (!) | $1.25/M | $5/M |
| Claude Haiku 4.5 | 200k token | $0.80/M | $4/M |
/M = per million token. $3/M nghĩa 1 triệu token tốn $3.
Tại sao bạn cần biết
- Tránh bill $1000 cho 1 ngày dev không kiểm soát. Bug code làm app gọi API 10k lần với prompt 50k token = $1500 chỉ trong vài giờ.
- Optimize prompt để giảm 50-90% phí. Strategic caching + chunk task = tiết kiệm dramatic.
- Hiểu vì sao AI 'quên' giữa chừng. Conversation dài 30 turn dễ overflow 200k context → quality giảm.
- Chọn đúng model cho task. Task simple dùng Haiku ($0.8/M) thay Opus ($15/M) = 18x rẻ hơn cho cùng output.
- Biết khi nào nên chia task thành sub-task. Task quá lớn 1 lần = lost-in-the-middle. Chia = quality cao hơn + cost thấp hơn.
Token là gì — không phải word, không phải character
Token là đơn vị sub-word AI dùng để xử lý text. Tokenizer chuyển text → list token IDs (số nguyên).
Ví dụ với GPT tokenizer:
"Hello world" → ["Hello", " world"] → [9906, 1917] (2 token)
"Internationalization" → ["International", "ization"] (2 token)
"vietcodex.com" → ["v", "iet", "code", "x", ".", "com"] (6 token!)
"Xin chào, hôm nay tôi đến quán cafe."
→ ["Xin", " ch", "ào", ",", " h", "ôm", " nay", " t", "ôi", " đ", "ến", " qu", "án", " cafe", "."]
→ 15 token (vs English equivalent "Hi, today I came to a cafe" ~7 token)
Quy đổi nhanh
| Text | Token estimate |
|---|---|
| 1 word English | ~1.3 token |
| 1 word Vietnamese | ~2-3 token (do dấu thanh + unicode) |
| 1 ký tự ASCII | ~0.25 token |
| 1 ký tự Vietnamese có dấu | ~1 token |
| 1 dòng code TypeScript | ~10-20 token |
File .tsx 200 dòng | ~3000-5000 token |
| Bài blog 1000 từ English | ~1300 token |
| Bài blog 1000 từ Vietnamese | ~2500-3000 token |
| PDF 10 trang | ~5000-8000 token |
Tool đo chính xác
- OpenAI: platform.openai.com/tokenizer — paste text, đếm GPT token
- Anthropic: SDK
client.messages.count_tokens(...)— đếm Claude token - Tiktoken (lib):
npm i tiktokencho Node,pip install tiktokencho Python - Cursor / Claude Code: hiện token count trong UI
Context Window — bộ nhớ ngắn hạn
Context window = số token tối đa AI nhìn trong 1 lần gọi. Khi conversation dài, context dồn lên đến giới hạn → "quên" phần đầu.
Cấu thành context
[ System prompt ] 1-5k token
[ Tool definitions ] 2-10k token (nếu dùng nhiều tool)
[ File paste #1 ] 5k token
[ File paste #2 ] 8k token
[ Conversation turn 1 ]
- User: 200 token
- AI: 400 token
[ Conversation turn 2 ]
- User: 300 token
- AI: 600 token
...
[ Latest user query ] 500 token
[ Reserved for output ] 4-8k token
─────────────────────────
TOTAL ~50-200k token
Khi total > context window: API throw error context_length_exceeded hoặc model truncate (cắt đầu conversation).
Lost in the middle problem
Nghiên cứu 2023 (Liu et al.): khi context > 50% capacity, chất lượng giảm. Model "skim" đầu + cuối, miss giữa. 100k context không đồng nghĩa hiệu quả 100k.
Practical rule: dùng ≤ 50% context window cho input → còn 50% cho generation + safety margin.
| Model | Practical context | Khi nào dùng full |
|---|---|---|
| Claude 200k | ~100k input | Document analysis specific |
| GPT 128k | ~60k input | Code refactor multi-file |
| Gemini 2M | ~500k-1M input | Codebase whole-repo |
Pricing math — tính bill thực tế
Ví dụ 1: ChatGPT-like assistant đơn giản
User hỏi 1 câu, AI trả 1 paragraph.
Input:
System prompt: 1.000 token
User query: 200 token
──────────────────────────────
Total input: 1.200 token
Output:
AI response: 400 token
Cost (Claude Sonnet 4.5):
Input: 1200 × $3/M = $0.0036
Output: 400 × $15/M = $0.006
Total: $0.0096 (~24 VND)
1000 query/ngày = $9.6 (~232k VND). 1M query/tháng = $9600 (~232tr VND).
Ví dụ 2: Code editing app (Cursor-like)
User paste 5 file để fix bug.
Input:
System prompt: 2.000 token
Tool defs: 5.000 token
File 1 (page.tsx): 3.500 token
File 2 (component): 2.800 token
File 3 (utils): 1.500 token
File 4 (api route): 2.000 token
File 5 (schema): 6.000 token
User query: 500 token
─────────────────────────────────
Total input: 23.300 token
Output:
AI response (edit): 1.500 token
Cost:
Input: 23300 × $3/M = $0.0699
Output: 1500 × $15/M = $0.0225
Total: $0.0924 (~2.3k VND/query)
Dev làm 100 query/ngày = $9.24. Tháng = $277. Đáng vs developer time saved.
Ví dụ 3: Multi-turn conversation 30 turn
Turn 1: input 5k, output 1k = 5k + 1k = 6k
Turn 2: input 7k (history grows), output 1k = 7k + 1k = 8k
Turn 3: input 9k, output 1k = 10k
...
Turn 30: input 64k, output 1k = 65k
Total cumulative input: ~700k token (sum of all input grow over time)
Total output: ~30k token
Cost: 700k × $3/M + 30k × $15/M = $2.10 + $0.45 = $2.55
Lưu ý: input ACCUMULATES vì mỗi turn gửi LẠI toàn history. Sau 30 turn, chi phí tăng exponentially. Đó là lý do prompt caching critical.
Prompt Caching — tiết kiệm 50-90% trên prefix tĩnh
Anthropic launch prompt caching tháng 8/2024. Cache phần tĩnh (system prompt + tool defs + boilerplate) → request sau chỉ tính 10% giá input cho phần cached.
Pattern
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic();
const message = await client.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 1024,
system: [
{
type: "text",
text: "You are a Vietnamese coding assistant for VietCodex...",
cache_control: { type: "ephemeral" }, // Mark prefix to cache
},
],
tools: [/* 50 tool definitions */],
messages: [{ role: "user", content: "Hello" }],
});Saving thực tế
Pattern vietcodex.com Claude API:
| Without cache | With cache |
|---|---|
| Lần 1: 55k × $3/M = $0.165 | Lần 1: 55k × $3/M = $0.165 (write cache) |
| Lần 2: 55k × $3/M = $0.165 | Lần 2: 50k × $0.30/M + 5k × $3/M = $0.030 |
| Lần 100: $0.165 | Lần 100: $0.030 |
| Total 100 requests: $16.50 | Total 100 requests: $0.165 + $2.97 = $3.13 |
Tiết kiệm 81%. Cache TTL 5 phút mặc định, extend 1 giờ với header riêng.
Khi nào dùng cache
- ✅ System prompt > 1024 token (Anthropic min) hoặc > 2048 token (Claude 4.x)
- ✅ Tool definitions không đổi
- ✅ Boilerplate context (codebase summary, brand guide)
- ❌ Per-user data ngắn (cache miss mỗi user)
- ❌ Request rare (< 1 lần/5 phút)
Cost optimization — 5 tactics
1. Right-sized model
Task simple (extract email, classify): Haiku ($0.80/M)
Task medium (write summary, code): Sonnet ($3/M)
Task complex (architecture, debug): Opus ($15/M)
Đừng dùng Opus cho mọi thứ — 18x phí Haiku.
2. Chunk + summarize history
Conversation > 20 turn → summarize cũ thành 500 token, restart "context fresh".
3. Strict output limit
Set max_tokens: 500 thay vì 4096. Force AI trả ngắn gọn → giảm output cost.
4. Prompt caching cho prefix
Đã chi tiết ở trên.
5. Streaming + early stop
Nếu user dừng (close tab) → cancel request → không tính phần generation chưa generate.
Ví dụ thực tế: vietcodex.com Claude API budget
Estimate 1 tháng dùng Claude API cho wiki gen + customer chat:
Wiki gen workflow:
- 5 bài/tuần × 4 tuần = 20 bài
- Mỗi bài: 50k system + 5k user, 6k output
- Cost/bài: 50k × $0.30/M (cached) + 5k × $3/M + 6k × $15/M = $0.105
- Total: 20 × $0.105 = $2.10/tháng
Customer support chatbot (proposed):
- 200 query/tháng (sales early stage)
- Avg: 8k input + 1k output
- Cost: 8k × $0.30/M + 1k × $15/M = $0.0174 × 200 = $3.48/tháng
Web design quote generation:
- 50 lead/tháng × 1 call generate quote
- 30k input + 2k output
- Cost: 30k × $0.30/M + 2k × $15/M = $0.039 × 50 = $1.95/tháng
────────────────────────────────────────────
Total estimate: ~$7.50/tháng (~180k VND)
So với SaaS subscription Cursor Pro $20/dev/tháng hoặc Claude Pro $20/user/tháng — API direct usage rẻ hơn nhiều cho usage thực tế.
Cái gì có thể sai
| Vấn đề | Triệu chứng | Cách fix |
|---|---|---|
| Bill cao bất ngờ | Loop bug gọi API thừa | Set monthly budget cap (Anthropic console) + alert |
context_length_exceeded error | History đầy | Summarize cũ hoặc bắt đầu conversation mới |
| AI "quên" rule | Context > 50%, lost in middle | Repeat critical rule vào latest user message |
| Caching không work | Prefix < min token threshold | Anthropic min 1024 token cho cache mark |
| Vietnamese tốn nhiều token | Tokenizer BPE English-biased | Mix English system prompt, Vietnamese user query |
| Output truncate giữa chừng | max_tokens quá thấp | Tăng max_tokens hoặc dùng stop sequence |
| Latency 30-60s với context lớn | Model parse 200k token chậm | Chia request thành parallel calls nhỏ |
| Stream cancel không refund | Server-side generation tiếp tục | Implement client-side abort + server callback |
Tóm tắt 1 dòng
Token = đơn vị AI đọc/viết (1 word EN ≈ 1.3 token, 1 word VN ≈ 2-3 token). Context window = bộ nhớ ngắn hạn (Claude 200k, GPT 128k, Gemini 2M). Output đắt 3-5x input. Prompt caching tiết kiệm 80-90% trên prefix tĩnh. Quy tắc cost: right-sized model (Haiku/Sonnet/Opus) + cache prefix + chunk history + strict output limit. Vietnamese tốn 2x token EN — mix EN system prompt nếu cost-sensitive.
Đọc tiếp
- LLM là gì? Cách 'bộ não' AI dự đoán từ tiếp theo — token là input/output cốt lõi của LLM
- Multi-agent + Cost routing — sâu hơn về cost optimization
- Prompt Engineering — cách 'nói chuyện' với AI — prompt structure ảnh hưởng token usage
- MCP (Model Context Protocol) là gì — chuẩn mới giúp tool defs gọn hơn — tiết kiệm token (sắp có)