- Token-Oriented Object Notation
- Định dạng tuần tự hóa được thiết kế để giảm mức sử dụng token khi đưa vào LLM
- Biểu diễn dữ liệu JSON không mất mát, đồng thời đảm bảo hiệu quả token và tính dễ đọc
- Cấu trúc được tối ưu cho mảng đối tượng đồng nhất, loại bỏ các khóa lặp lại để mang lại mức tiết kiệm token 30~60%
- Định dạng lai kết hợp cấu trúc thụt lề của YAML và dạng bảng của CSV
- Với dữ liệu có cấu trúc lồng nhau sâu hoặc không đồng nhất, JSON hiệu quả hơn
- Bao gồm thông tin cấu trúc tường minh để LLM có thể phân tích cú pháp và kiểm chứng dữ liệu một cách ổn định
- Cải thiện khả năng nhận biết cấu trúc bằng cách ghi rõ độ dài mảng (
[N]) và định nghĩa trường ({id,name,role})
- Cú pháp ngắn gọn với thiết kế tối giản, loại bỏ ngoặc, dấu ngoặc kép và dấu câu không cần thiết
- Biểu diễn phân cấp dựa trên thụt lề, hỗ trợ luồng dữ liệu theo từng dòng tương tự CSV
- Hỗ trợ chuyển đổi hai chiều giữa JSON ↔ TOON thông qua công cụ CLI
- Cung cấp các tùy chọn như tự động nhận diện định dạng, chỉ định dấu phân cách (
,, \t, |), xuất thống kê mức tiết kiệm token, v.v.
- Cấu hình API
- Thực hiện tuần tự hóa JSON bằng
encode() và giải tuần tự hóa bằng decode()
- Có thể chỉ định thụt lề, dấu phân cách, ký hiệu độ dài (
#) qua tùy chọn
- Kết quả benchmark cho thấy mức tiết kiệm token trung bình 21~60% so với JSON, đạt độ chính xác truy vấn LLM 73.9%
- Dù hơi lớn hơn CSV, tính năng kiểm chứng cấu trúc giúp nâng cao độ tin cậy của LLM
- Quy tắc định dạng
- Chuỗi chỉ được đặt trong dấu ngoặc kép khi cần; nếu chứa dấu phân cách thì sẽ tự động được trích dẫn
- Số, boolean, ngày tháng, v.v. được chuyển đổi sang dạng thân thiện với LLM
- Cung cấp nhiều bản triển khai ngôn ngữ
- Chính thức: Python, Rust (đang phát triển)
- Cộng đồng: Go, Java, Swift, C++, .NET, Ruby, v.v.
3 bình luận
Tôi đang dùng function calling, chắc phải thử một lần mới được.
Xem một vài ví dụ thì có vẻ khi bỏ khoảng trắng, định dạng JSON giảm số lượng token tốt hơn nhiều.. tôi vẫn chưa rõ lắm. Không biết đây có phải là một định dạng đáng để dùng nghiêm túc hay không.
So sánh độ chính xác theo từng mô hình
Nếu chỉ tin vào kết quả benchmark thì có vẻ không có lý do gì để không dùng, vì lượng token giảm mà độ chính xác không bị giảm.