Tóm tắt
Anthropic công bố tokenizer của Claude Opus 4.7 dùng “roughly 1.0 đến 1.35x số token” so với 4.6. Khi đo thực tế: technical docs cho kết quả 1.47x, file CLAUDE.md thực tế cho 1.45x. Đỉnh của range Anthropic công bố mới chính là nơi phần lớn nội dung Claude Code thực sự nằm — không phải giữa range.
Cùng giá niêm yết. Cùng quota. Nhiều token hơn mỗi prompt. Max window hết nhanh hơn. Cached prefix tốn nhiều hơn mỗi turn. Rate limit chạm sớm hơn.
Phương pháp đo
Tác giả dùng POST /v1/messages/count_tokens — công cụ đếm token miễn phí của Anthropic, không tốn inference. Cùng nội dung, hai model, so sánh trực tiếp.
Hai batch samples:
- 7 samples nội dung thực tế từ Claude Code user: CLAUDE.md, user prompt, blog post, git log, terminal output, stack trace, code diff
- 12 samples tổng hợp trải dài nhiều loại nội dung: English prose, code, structured data, CJK, emoji, math symbols
from anthropic import Anthropic
client = Anthropic()
for model in ["claude-opus-4-6", "claude-opus-4-7"]:
r = client.messages.count_tokens(
model=model,
messages=[{"role": "user", "content": sample_text}],
)
print(f"{model}: {r.input_tokens} tokens")
Kết quả đo thực tế
Nội dung Claude Code thực tế (7 samples)
| Loại nội dung | 4.6 tokens | 4.7 tokens | Ratio |
|---|---|---|---|
| CLAUDE.md (file thực, 5KB) | 1,399 | 2,021 | 1.445 |
| User prompt (task điển hình) | 1,122 | 1,541 | 1.373 |
| Blog post excerpt (Markdown) | 1,209 | 1,654 | 1.368 |
| Git commit log | 910 | 1,223 | 1.344 |
| Terminal output (pytest) | 652 | 842 | 1.291 |
| Python stack trace | 1,736 | 2,170 | 1.250 |
| Code diff | 1,226 | 1,486 | 1.212 |
Ratio trung bình cả 7 samples: 1.325x
Theo loại nội dung (12 samples tổng hợp)
| Loại nội dung | Ratio |
|---|---|
| Technical docs (English) | 1.47 |
| Shell script | 1.39 |
| TypeScript code | 1.36 |
| Spanish prose | 1.35 |
| Markdown với code blocks | 1.34 |
| Python code | 1.29 |
| English prose | 1.20 |
| JSON (dense) | 1.13 |
| Tool definitions (JSON Schema) | 1.12 |
| CSV (numeric) | 1.07 |
| Japanese prose | 1.01 |
| Chinese prose | 1.01 |
Lưu ý quan trọng: CJK (tiếng Nhật, tiếng Trung) gần như không thay đổi (1.01x). Nội dung tiếng Anh và code bị ảnh hưởng nhiều nhất.
Tại sao lại có sự thay đổi này?
Ba pattern từ dữ liệu:
- CJK, emoji, và symbol di chuyển 1.005–1.07x — vocabulary cho non-Latin thay đổi ít hơn nhiều
- English và code di chuyển 1.20–1.47x — tokenizer 4.7 dùng sub-word merges ngắn hơn cho common English và code patterns
- Code bị ảnh hưởng nặng hơn prose — code có nhiều high-frequency strings lặp lại (keywords, imports, identifiers) vốn được BPE collapse thành long merges
Chars-per-token trên English giảm từ 4.33 xuống 3.60. TypeScript giảm từ 3.66 xuống 2.69.
Anthropic đổi tokenizer để đổi lấy gì?
Theo migration guide của Anthropic: “more literal instruction following, particularly at lower effort levels.”
Tác giả test bằng IFEval benchmark (541 prompts với verifiable constraints như “Respond in exactly N words”, “No commas”, “All uppercase”):
| Metric | 4.6 | 4.7 | Delta |
|---|---|---|---|
| Strict, prompt-level | 17/20 (85%) | 18/20 (90%) | +5pp |
| Strict, instruction-level | 25/29 (86%) | 26/29 (90%) | +4pp |
| Loose, prompt-level | 18/20 (90%) | 18/20 (90%) | 0 |
Kết luận: cải thiện nhỏ nhưng có hướng rõ ràng trên strict instruction following. Mẫu nhỏ (N=20), không thể kết luận chắc chắn về magnitude.
Tác động tài chính thực tế
Một session Claude Code điển hình (80 turns)
Setup:
- Static prefix: 2K CLAUDE.md + 4K tool definitions = 6K tokens mỗi turn
- Conversation history: tăng ~2K mỗi turn, đạt ~160K ở turn 80
- Cache hit rate: ~95%
- Average cached prefix: ~86K tokens
Chi phí Claude 4.6:
| Item | Chi tiết | Chi phí |
|---|---|---|
| Turn 1 cache-write | 8K × $6.25/MTok | $0.05 |
| Turns 2–80 cache reads | 79 × 86K × $0.50/MTok | $3.40 |
| Fresh user input | 79 × 500 × $5/MTok | $0.20 |
| Output | 80 × 1,500 × $25/MTok | $3.00 |
| Tổng | ~$6.65 |
Chi phí Claude 4.7 (với ratio tokenizer):
- CLAUDE.md: 1.445x → 2K thành 2.9K
- Tool defs: 1.12x → 4K thành 4.5K
- Conversation history: 1.325x → 160K thành 212K ở turn 80
- Average cached prefix: ~115K tokens (tăng từ 86K)
| Item | Chi tiết | Chi phí |
|---|---|---|
| Turn 1 cache-write | 10K × $6.25/MTok | $0.06 |
| Turns 2–80 cache reads | 79 × 115K × $0.50/MTok | $4.54 |
| Fresh user input | 79 × 660 × $5/MTok | $0.26 |
| Output | 80 × 1,500–1,950 × $25/MTok | $3.00–$3.90 |
| Tổng | ~$7.86–$8.76 |
Kết quả: tăng ~20–30% chi phí mỗi session. Giá per-token không đổi, nhưng cost per-session tăng vì cùng session pack nhiều token hơn.
Tác động đến người dùng Max plan
Max-plan users hit rate limits thay vì pay theo dollar — cửa sổ 5 giờ sẽ kết thúc sớm hơn theo cùng tỉ lệ. Một session từng chạy hết window trên 4.6 có thể không chạy được trên 4.7.
Kết luận
Token tốn hơn 1.3–1.45x trên nội dung English và code. Đổi lại là +5pp trên strict instruction following. Giá niêm yết không đổi, chi phí thực tế per-session tăng.
Có đáng không? Phụ thuộc vào workload. Bạn đang trả thêm ~20–30% mỗi session để đổi lấy cải thiện nhỏ nhưng thực sự trong việc model follow instructions chính xác hơn.