如何第一時間看到新文章?
收藏本部落格列表頁,並在首頁與工具聚合頁留意指南入口。閱讀文章無需註冊或訂閱電子報。
TOON(Token-Oriented Object Notation)如何壓縮 LLM 上下文、與 JSON/YAML 如何取捨;涵蓋巢狀深度、跨模型穩定性、解析 CPU 與閘道工程。(部分數字為示意,請以自有資料復測。)
從 XML 到 JSON,再到以大模型為核心的互動層,序列化格式一直在「人類可讀」與「模型/執行期成本」之間取捨。TOON(Token-Oriented Object Notation)與 JSON 的比較討論很多;本文從工程與架構角度,聚焦三件事:Token 是否真省、跨模型與巢狀場景是否穩、以及解析與閘道成本是否可接受。
說明:下文百分比、延遲與 token 數為典型樣本的示意量級,用於說明權衡維度;請以自有資料與 tokenizer 復測後再做容量規劃。
TOON 透過減少 JSON 冗餘分隔符,並採用「表頭 + 資料列」的緊湊版面,在同質、列表型資料上常能明顯縮短上下文。它較適合作為 LLM 輸入側的表示層,而非取代對外 REST API 或持久化儲存中的 JSON。
JSON 每層 {}、"、: 都會進入 tokenizer 與上下文視窗。對深度巢狀(如複雜抽取結果、AST 片段)而言,這些符號構成結構化雜訊:佔用 token,也可能增加模型對齊括號與欄位的負擔。
TOON 在「可表頭化」的重複結構上,把欄位名從每列重複中抽離,因此在深而同質的列表場景裡,壓縮收益更明顯;若每層結構都不同,表頭/schema 宣告本身會吃掉收益。
同一字節序列在不同模型 tokenizer 下的 token 數並不相同。實務上常見:
結論:沒有放諸四海皆準的節省比例;要以目標模型與目標資料分布為準。
| 維度 | JSON | YAML | TOON(典型定位) |
|---|---|---|---|
| Token 效率 | 基準 | 中等 | 同質列表場景往往更優 |
| 巢狀與異質 | 表達力強 | 縮排敏感 | 強同質結構較划算 |
| 解析 CPU | 生態成熟、極快 | 中等 | 目前實作常偏慢,需軟體層轉換 |
| 校驗與生態 | JSON Schema 成熟 | 較弱 | 偏 prompt/約定驅動,工具鏈仍在演進 |
| 典型用途 | API、儲存、互操作性 | 設定 | LLM 提示、RAG 片段、Agent 上下文 |
---
| 巢狀深度 | JSON(示意 tokens) | TOON(示意 tokens) | 相對節省 |
|---|---|---|---|
| 1 層(扁平列表) | 520 | 190 | 約 63% |
| 2 層(物件內嵌物件) | 1240 | 710 | 約 43% |
| 3 層(深層異質) | 2100 | 1720 | 約 18% |
結論:若是 AST、動態 schema、欄位頻繁變化的物件列表,JSON 的「囉嗦」未必是首要矛盾,遷移 TOON 的 ROI 要重新算。
| 模型族(示意) | TOON 任務準確率 | JSON 任務準確率 |
|---|---|---|
| GPT-4o | 96% | 94% |
| Claude 3.5 Sonnet | 91% | 93% |
| Gemini 1.5 Pro | 88% | 90% |
| Llama 3(70B) | 78% | 85% |
部署建議:開源/本地模型若對「表頭 + 列」對齊不穩定,優先 JSON;在閉源旗艦模型且成本壓力極大時,再評估 TOON,並固定 schema 與 few-shot 範例。
| 操作 | JSON(標準函式庫) | TOON(示意實作) |
|---|---|---|
| 編碼 | 8 ms | 22 ms |
| 解碼 | 6 ms | 18 ms |
JSON 解析器經多年 SIMD、串流與零拷貝最佳化;TOON 若仍在直譯型遞迴下降 + 大量字串拼接階段,更容易成為閘道瓶頸。高頻線上路徑要嘛快取轉換結果,要嘛把轉換挪到離線或批次。
{
"order_id": "992831",
"items": [
{"sku": "A12-B", "price": 99.0, "qty": 1},
{"sku": "C34-D", "price": 45.5, "qty": 2},
{"sku": "E56-F", "price": 12.0, "qty": 5}
],
"customer": "John Doe"
}order_id: 992831
items[3]{sku, price, qty}:
A12-B, 99.0, 1
C34-D, 45.5, 2
E56-F, 12.0, 5
customer: John Doe解讀:同質 items 陣列是 TOON 的舒適區;瀏覽器端無法原生解析 TOON 時,通常在閘道或 BFF 做 JSON ↔ TOON,並注意快取與錯誤回退。A:在表頭明確、列對齊、schema 穩定時,欄位級表現可與 JSON 接近;極簡無表頭模式只建議用於強約定場景。
Q2:效能開銷主要在哪?A:主要在轉換與解析實作;大 payload 建議在快取層做 TOON 化,或對靜態知識庫離線轉換。
Q3:多型物件列表怎麼辦?A:欄位不一致時 TOON 的壓縮率會迅速下降,此時應回退 JSON 或拆分為多張「同 schema 表」。
在 CI/CD 或資料準備階段對靜態資料集做 JSON → 緊湊表示的轉換,可在 playground 中快速對照 tokenizer 計數;無論採用何種中間格式,線上仍建議保留 JSON 作為事實來源(source of truth),TOON 作為面向模型的衍生視圖。
致力於為開發者提供最佳的 JSON 處理工具
更多文章即將發布...
返回部落格關於跟進更新、選題與互動方式。
收藏本部落格列表頁,並在首頁與工具聚合頁留意指南入口。閱讀文章無需註冊或訂閱電子報。
圍繞 JSON 驗證、格式化、轉換與除錯流程,以及 JSON Work 工具更新,與站內工具的本地能力互相呼應。
可以。請透過關於頁的聯絡方式或 GitHub 回饋;我們會優先安排貼近真實開發情境的教學。