Tôi đã thay thế JSON bằng TOON trong các prompt LLM và tiết kiệm được 40% Token. Đây là cách làm
Việc gửi dữ liệu JSON vào prompt của LLM đang khiến bạn lãng phí tiền bạc cho các cú pháp thừa. Bài viết này sẽ giới thiệu TOON (Token-Oriented Object Notation) - một định dạng mới giúp loại bỏ sự lặp lại, cắt giảm 60% số lượng token và tiết kiệm chi phí API đáng kể mà không làm mất dữ liệu gốc.

Xin chào! Tôi là Andrey, một nhà phát triển Frontend tại Cloud.ru, và tôi thường viết về frontend cũng như AI trên blog và kênh Telegram cá nhân.
Tôi làm việc với các API của LLM (Mô hình ngôn ngữ lớn) mỗi ngày. Và mỗi ngày, tôi đều gửi dữ liệu có cấu trúc vào ngữ cảnh (context): danh sách sản phẩm, nhật ký hệ thống (logs), thông tin người dùng, các chỉ số đo lường. Tất cả chúng đều ở định dạng JSON. Và tất cả đều tốn tiền.
Vào một thời điểm nào đó, tôi đã tính toán xem có bao nhiêu token trong các prompt của tôi bị "ngốn" bởi các dấu ngoặc nhọn, dấu ngoặc kép và các khóa (keys) bị lặp lại. Kết quả là: rất nhiều. Quá nhiều.
Sau đó, tôi đã thử TOON. Và đây là những gì đã xảy ra.
Vấn đề: JSON là một định dạng "hào phóng"
Hãy xem xét một trường hợp điển hình. Bạn đang xây dựng một hệ thống RAG hoặc một trợ lý AI để phân tích dữ liệu. Prompt của bạn kéo vào một danh sách gồm 50 bản ghi. Dưới đây là một bản ghi trong định dạng JSON:
{
"id": 2001,
"timestamp": "2025-11-18T08:14:23Z",
"level": "error",
"service": "auth-api",
"ip": "172.16.4.21",
"message": "Auth failed for user",
"code": "AUTH_401"
}
Bây giờ hãy nhân con số này lên 50 lần. Mỗi bản ghi lặp lại 7 khóa: id, timestamp, level, service, ip, message, code. Cộng thêm dấu ngoặc kép bao quanh mọi khóa và giá trị chuỗi. Cộng thêm dấu ngoặc nhọn. Cộng thêm dấu phẩy.
Với 50 bản ghi, đó là khoảng 350 lần lặp lại khóa thừa thãi và hàng trăm ký tự cú pháp. Mô hình sẽ token hóa tất cả chúng. Và bạn phải trả tiền cho tất cả.
Giải pháp: TOON trong 30 giây
TOON (Token-Oriented Object Notation) mã hóa cùng một dữ liệu với cùng cấu trúc, nhưng không có sự lặp lại. Các khóa được khai báo một lần trong phần header, sau đó chỉ còn lại các giá trị:
logs[3]{id,timestamp,level,service,ip,message,code}:
2001,2025-11-18T08:14:23Z,error,auth-api,172.16.4.21,Auth failed for user,AUTH_401
2002,2025-11-18T08:14:24Z,warn,payment,172.16.4.22,Timeout on payment gateway,PAY_TIMEOUT
2003,2025-11-18T08:14:25Z,info,user-svc,172.16.4.23,User profile updated,USR_200
Header logs[3]{id,timestamp,level,service,ip,message,code}: nói rằng: đây là mảng gồm 3 phần tử, với các trường như liệt kê. Chỉ có thế. Sau đó là các dòng giá trị được phân tách bằng dấu phẩy. Không có dấu ngoặc kép quanh các khóa, không có dấu {} cho từng đối tượng, không có sự lặp lại.
Việc chuyển đổi JSON -> TOON -> JSON là không mất mát (lossless), tỷ lệ 1:1. Nó không phải là một mô hình dữ liệu khác - nó chỉ là một cách mã hóa khác của cùng một mô hình.
Đếm Token: Một bài kiểm tra thực tế
Tôi đã lấy một bộ dữ liệu gồm 50 bản ghi log (mỗi bản ghi có 7 trường) và chạy nó qua một bộ token hóa:
Python:
import json
import toon_format # pip install toon-format
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
with open("logs.json") as f:
data = json.load(f)
json_str = json.dumps(data, indent=2)
json_compact = json.dumps(data)
toon_str = toon_format.encode(data)
print(f"JSON (formatted): {len(enc.encode(json_str))} tokens")
print(f"JSON (compact): {len(enc.encode(json_compact))} tokens")
print(f"TOON: {len(enc.encode(toon_str))} tokens")
TypeScript:
import { encode as toToon } from "@toon-format/toon";
import { encode as tokenize } from "gpt-3-encoder";
import fs from "fs";
const data = JSON.parse(fs.readFileSync("./logs.json", "utf8"));
const jsonFormatted = JSON.stringify(data, null, 2);
const jsonCompact = JSON.stringify(data);
const toonStr = toToon(data);
console.log(`JSON (formatted): ${tokenize(jsonFormatted).length} tokens`);
console.log(`JSON (compact): ${tokenize(jsonCompact).length} tokens`);
console.log(`TOON: ${tokenize(toonStr).length} tokens`);
Kết quả trên dữ liệu thực (từ chuẩn TOON):
| Định dạng | Tokens | Tiết kiệm so với JSON |
|---|---|---|
| JSON (formatted) | 379 | - |
| JSON (compact) | 236 | -37.7% |
| TOON | 150 | -60.4% |
Tiết kiệm 60%. Chỉ trên một prompt duy nhất. Không phải lý thuyết - mà được đo lường bởi bộ token hóa.
Tính toán chi phí: Bạn đang bị tính tiền thừa bao nhiêu
Bây giờ là phần thú vị. Giá API hiện tại (tháng 4 năm 2026):
| Mô hình | Input (cho 1M token) | Output (cho 1M token) |
|---|---|---|
| GPT-4o | $2.50 | $10.00 |
| GPT-4.1 | $2.00 | $8.00 |
| Claude Sonnet 4.6 | $3.00 | $15.00 |
| Claude Opus 4.6 | $5.00 | $25.00 |
Giả sử bạn thực hiện 10.000 yêu cầu mỗi ngày, mỗi yêu cầu chứa một mảng gồm 100 đối tượng (điển hình cho RAG/phân tích). Hãy tính toán cho GPT-4o:
| Chỉ số | JSON | TOON | Chênh lệch |
|---|---|---|---|
| Tokens mỗi yêu cầu | ~3.200 | ~1.850 | -42% |
| Tokens mỗi ngày | 32M | 18.5M | -13.5M |
| Chi phí mỗi ngày | $80 | $46.25 | -$33.75 |
| Mỗi tháng | $2.400 | $1.387 | -$1.013 |
| Mỗi năm | $28.800 | $16.650 | -$12.150 |
Với Claude Opus 4.6 (input $5/1M), khoản tiết kiệm còn lớn hơn:
| Chỉ số | JSON | TOON | Chênh lệch |
|---|---|---|---|
| Mỗi tháng | $4.800 | $2.775 | -$2.025 |
| Mỗi năm | $57.600 | $33.300 | -$24.300 |
$12.000 - $24.000 mỗi năm - chỉ tính trên token đầu vào, và chỉ trên một điểm cuối API (endpoint). Nếu bạn có nhiều pipeline - hãy nhân số tiền đó lên tương ứng.
Tích hợp: 5 Phút, 4 dòng code
Bạn không cần viết lại kiến trúc của mình. TOON được cắm vào như một lớp trước khi gửi đến API:
Python + OpenAI:
import openai
import toon_format
def analyze_with_llm(data: list[dict]) -> str:
toon_str = toon_format.encode({"records": data}) # JSON -> TOON
response = openai.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": f"Analyze this data and find anomalies:\n\n{toon_str}"
}]
)
return response.choices[0].message.content
TypeScript + Anthropic:
import Anthropic from "@anthropic-ai/sdk";
import { encode as toToon } from "@toon-format/toon";
async function analyzeData(records: any[]) {
const toonData = toToon({ records });
const response = await anthropic.messages.create({
model: "claude-sonnet-4-6-20250514",
max_tokens: 1024,
messages: [{
role: "user",
content: `Analyze this data and find anomalies:\n\n${toonData}`
}]
});
return response.content[0].text;
}
Chỉ một dòng - toon_format.encode() - và bạn tiết kiệm được 40-60% token. Mô hình sẽ trả về định dạng như bình thường, không có gì cần thay đổi ở phía đầu ra.
So sánh lớn: TOON so với mọi thứ khác
Không có định dạng nào hoàn hảo cho mọi trường hợp. Dưới đây là sự phân tích trung thực:
| Tiêu chí | JSON | JSON compact | YAML | CSV | TOON | TRON |
|---|---|---|---|---|---|---|
| Tokens (dạng bảng) | 100% | ~63% | ~72% | ~38% | ~40% | ~55% |
| Tokens (dữ liệu lồng) | 100% | ~78% | ~85% | n/a | ~67% | ~75% |
| Độ chính xác LLM | 75.0% | 73.7% | 74.5% | ~72% | 76.4% | - |
| Cấu trúc lồng nhau | xuất sắc | xuất sắc | tốt | không | trung bình | tốt |
| Tương thích pipeline | khắp nơi | khắp nơi | rộng | rộng | cần SDK | Tương thích JSON |
| Sự quen thuộc của LLM | lớn | lớn | lớn | lớn | tối thiểu | tối thiểu |
| Chuyển đổi vòng lặp JSON (không mất mát) | có | có | lưu ý | không | có | có |
Những điểm chính:
- TOON so với CSV: CSV nhỏ gọn hơn ~5-6% cho các bảng phẳng nhưng không hỗ trợ lồng nhau hoặc kiểu dữ liệu. TOON thêm chi phí tối thiểu nhưng mô hình phân tích dữ liệu chính xác hơn.
- TOON so với YAML: TOON tiết kiệm 48% token trên dữ liệu dạng bảng so với YAML. YAML tốt hơn cho các cấu hình lồng nhau sâu.
- TOON so với JSON compact: Ngay cả JSON đã minified vẫn thua TOON 35% trên các bảng. Trên dữ liệu lồng nhau, khoảng cách nhỏ hơn (~15%).
- TOON so với TRON: TRON tương thích với JSON (có thể phân tích bằng bất kỳ trình phân tích JSON nào). TOON nhỏ gọn hơn nhưng yêu cầu trình phân tích chuyên dụng. Chọn TRON nếu bạn không muốn thay đổi chuỗi công cụ (toolchain).
Khi nào nên sử dụng TOON (và khi nào không)
Nên sử dụng TOON khi:
- Mảng đối tượng đồng nhất - danh sách người dùng, sản phẩm, logs, chỉ số. Tiết kiệm 40-60%.
- Pipeline RAG - hàng chục tài liệu có cùng cấu trúc được kéo vào ngữ cảnh.
- Xử lý hàng loạt - hàng ngàn yêu cầu mỗi ngày, mỗi phần trăm tiết kiệm được đều là tiền thật.
- Ngữ cảnh dài (Long contexts) - khi dữ liệu không vừa khổ cửa sổ ngữ cảnh và việc thu gọn nó là quan trọng.
Không nên sử dụng TOON khi:
- Cấu trúc lồng nhau sâu (4+ cấp). Độ chính xác của LLM giảm xuống 43% trên dữ liệu lồng nhau. JSON đáng tin cậy hơn.
- Dữ liệu đi đến một dịch vụ thông thường, không phải LLM. TOON là định dạng prompt, không dành cho REST API hay cơ sở dữ liệu.
- Bảng phẳng không có lồng nhau. CSV nhỏ gọn hơn 5-6% và không cần SDK.
- Bạn cần xác thực JSON Schema. TOON là cú pháp khác - các trình xác thực hiện tại sẽ không hoạt động.
Hệ sinh thái: Những gì đã hoạt động
| Ngôn ngữ | Gói | Trạng thái |
|---|---|---|
| TypeScript | @toon-format/toon | Tham chiếu chính |
| Python | toon-format / python-toon | Ổn định |
| Go | toon-format/go-toon | Đang phát triển |
| Rust | toon-format/toon-rs | Đang phát triển |
| .NET | toon-format/toon-dotnet | Đang phát triển |
| CLI | npx @toon-format/cli | Hoạt động |
Bắt đầu nhanh:
# TypeScript
npm install @toon-format/toon
# Python
pip install toon-format
# Chuyển đổi tệp qua CLI
npx @toon-format/cli data.json -o data.toon
npx @toon-format/cli data.toon -o data.json # và ngược lại
Thông số kỹ thuật là mã nguồn mở, ngữ pháp ABNF được tài liệu hóa, các bộ test mẫu có sẵn tại: toon-format/spec.
Lời kết
TOON không phải là sự thay thế cho JSON. JSON sẽ vẫn là tiêu chuẩn cho API, cấu hình và lưu trữ. Nhưng nếu bạn đang gửi dữ liệu có cấu trúc đến một LLM - bạn đang thực sự ném tiền qua cửa sổ vì chi phí cú pháp thừa thãi.
Bốn dòng code. Năm phút để tích hợp. Giảm 40-60% token. Giảm $12.000 - $24.000 mỗi năm với tải trung bình.
Hãy thử nó trên một điểm cuối. Đo lường. Tính toán. Ngân sách API của bạn sẽ cảm ơn bạn. Hoặc ít nhất là ngừng khóc thầm mỗi đêm.
Nếu bài viết này hữu ích - tôi viết về frontend, AI và các mẹo lập trình thực tế trên blog và kênh Telegram của tôi. Hãy ghé thăm nhé!
Liên kết:
Bài viết liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
