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

11 phút đọcCập nhật 2026-05-22
Nghe bài viết
Để Claude đọc bài cho bạn — vừa nghe vừa làm việc khác
Mục lục bài viết(26)
Sơ đồ kiến trúc Transformer — input token qua embedding + attention layer + output

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ế:

  1. 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.
  2. 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ựcAI
Token"Ý" của câu nói (≈ 1 âm tiết)Đơn vị nhỏ nhất AI đọc/viết
Context WindowBộ nhớ ngắn hạn người làm việcSố token tối đa AI "nhìn" 1 lúc
Input costTiền nghe chuyệnTiền cho phần BẠN gửi
Output costTiền nói chuyệnTiền cho phần AI trả lời (đắt hơn 3-5x)
Prompt cachingTiền giảm khi dạy 1 lần dùng nhiều lầnCache prefix → request sau chỉ tính 10%

3 model phổ biến nhất 2026 với context window:

ModelContext WindowInput priceOutput price
Claude Sonnet 4.5200k token$3/M$15/M
Claude Opus 4.5200k token$15/M$75/M
GPT-4o128k token$2.5/M$10/M
GPT-4 Turbo128k token$10/M$30/M
Gemini 1.5 Pro2M token (!)$1.25/M$5/M
Claude Haiku 4.5200k 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

TextToken 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 tiktoken cho Node, pip install tiktoken cho 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.

ModelPractical contextKhi nào dùng full
Claude 200k~100k inputDocument analysis specific
GPT 128k~60k inputCode refactor multi-file
Gemini 2M~500k-1M inputCodebase 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 cacheWith cache
Lần 1: 55k × $3/M = $0.165Lần 1: 55k × $3/M = $0.165 (write cache)
Lần 2: 55k × $3/M = $0.165Lần 2: 50k × $0.30/M + 5k × $3/M = $0.030
Lần 100: $0.165Lần 100: $0.030
Total 100 requests: $16.50Total 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ứngCách fix
Bill cao bất ngờLoop bug gọi API thừaSet monthly budget cap (Anthropic console) + alert
context_length_exceeded errorHistory đầySummarize cũ hoặc bắt đầu conversation mới
AI "quên" ruleContext > 50%, lost in middleRepeat critical rule vào latest user message
Caching không workPrefix < min token thresholdAnthropic min 1024 token cho cache mark
Vietnamese tốn nhiều tokenTokenizer BPE English-biasedMix English system prompt, Vietnamese user query
Output truncate giữa chừngmax_tokens quá thấpTăng max_tokens hoặc dùng stop sequence
Latency 30-60s với context lớnModel parse 200k token chậmChia request thành parallel calls nhỏ
Stream cancel không refundServer-side generation tiếp tụcImplement 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

Câu hỏi thường gặp

Token là gì? 1 token bằng bao nhiêu chữ?
Token là đơn vị AI chia nhỏ text — không phải word, không phải character. 1 token ≈ 4 ký tự tiếng Anh (~0.75 word) hoặc ≈ 1-3 ký tự tiếng Việt (do dấu/UTF-8). Câu 'Xin chào, hôm nay tôi vào quán cafe' ~14 token. File code JS 1000 dòng ~3000-5000 token. PDF 10 trang ~5000-8000 token. Để estimate nhanh: chia ký tự cho 4 (English) hoặc 2.5 (Vietnamese). Tool đo: platform.openai.com/tokenizer hoặc anthropic.com/tokenizer.
Context window 200k token nghe to — sao vẫn 'hết'?
200k token tổng tải VÀO + RA của 1 lần gọi API. Đếm: system prompt (1-5k) + tool definitions (2-10k nếu nhiều tool) + conversation history (đầy lên mỗi turn) + file paste (1 file Next.js full = 10-50k) + output (đến 8k tuỳ model). Conversation dài 30 turn dễ ăn hết 150k context. Khi gần đầy: model 'quên' phần đầu conversation, response chất lượng giảm. Best practice: chia conversation thành chunk, summarize cũ trước khi tiếp tục. Claude Code có 'auto compact' khi đạt 90% context.
Input token và output token tính tiền khác nhau không?
Có — output đắt 3-5x input. Claude Sonnet 4.5 (5/2026): input $3/M token, output $15/M token. GPT-4 Turbo: $10/M input, $30/M output. Lý do: generate token nặng GPU hơn read token. Implication: paste 50k file để hỏi 1 câu (output 500 token) = 50k × $3/M + 500 × $15/M = $0.15 + $0.0075 = $0.1575. Cùng 50k mà generate 5000 token output = $0.15 + $0.075 = $0.225 (gấp rưỡi). Optimization: chỉ paste cần thiết, ask AI trả ngắn gọn.
Prompt caching tiết kiệm bao nhiêu?
Claude Anthropic launch prompt caching 2024: cache static prefix (system prompt + tool defs + boilerplate) → request thứ 2 trở đi chỉ tính 10% giá input cho phần cached. Saving 90% trên cached portion. Pattern: vietcodex.com Claude API call có 50k system prompt + 5k user query. Lần 1: 55k × $3/M = $0.165. Lần 2-100: (50k × $0.30/M + 5k × $3/M) × 99 = $1.485 + $1.485 = $2.97 (vs $16.34 không cache). Tiết kiệm $13.4 (82%). Cache TTL 5 phút mặc định, có thể extend 1 giờ.
Context window càng to thì càng tốt không?
Không hoàn toàn. Pros context to: nhồi nhiều file 1 lần, làm task lớn không cần chia. Cons: (1) Latency tăng — 200k token request lâu 30-60s vs 10k ~3s; (2) Cost tuyến tính theo input — paste 200k 1 lần = $0.60. Paste 10x trong conversation = $6; (3) Hiệu suất giảm khi gần đầy — model 'lost in the middle', skim đầu/cuối, miss giữa; (4) Quên rule system. Quy tắc: chỉ paste files thực sự liên quan task hiện tại. Chia task lớn thành sub-task với context riêng. Đừng 'hoarding' file.
Có cách nào AI 'nhớ' giữa session khác nhau?
AI vốn KHÔNG có long-term memory — mỗi conversation độc lập. 3 cách 'mô phỏng' memory: (1) Save conversation file (Markdown, JSON) → paste vào session sau làm context. Claude Code có /save và /resume. (2) RAG (Retrieval Augmented Generation) — lưu doc trong vector DB, mỗi request semantic search top-K chunk relevant, inject làm context. (3) Memory API (Anthropic launch 2025): explicit memory store + retrieve calls. vietcodex.com dùng pattern (1) qua file .claude/projects/ — auto-load context mỗi session start.
Token tiếng Việt vs tiếng Anh — sao chênh nhiều?
Tokenizer phổ biến (GPT/Claude dùng BPE) train phần lớn trên English corpus → English token efficient 1 token ≈ 4 chars. Tiếng Việt unicode + dấu thanh không có trong vocabulary core → mỗi từ chia thành nhiều subtoken. 'Việt Nam' = ~3-4 token (vs 'Vietnam' 1 token). Hậu quả: cùng nội dung, bài tiếng Việt tốn ~2-3x token vs English. Solution: (1) Mix English cho prompt system, Vietnamese cho user query; (2) Nếu cost-sensitive, draft prompt English; (3) Anthropic Claude tokenizer tốt hơn GPT cho Vietnamese ~1.5x vs ~2.5x.