toon-format/toon
🎒 Token-Oriented Object Notation (TOON) – compact, human-readable serialization of JSON data for LLM prompts. TypeScript SDK, CLI, benchmarks.
해결하는 문제
TOON (Token-Oriented Object Notation)은 검색 정확도를 희생하지 않고 LLM에 구조화된 데이터를 제공하는 데 드는 토큰 비용을 줄여줍니다. 이는 모델의 컨텍스트 윈도우 내에서 대규모 데이터 세트를 다룰 때 비용이 많이 들고 비효율적일 수 있는 표준 JSON 및 YAML의 장황함을 해결합니다.
작동 방식
TOON은 JSON을 위한 무손실 변환 레이어 역할을 합니다. 인덴트 기반 구조(YAML와 유사)와 표 형식(CSV와 유사)을 결합하여 데이터를 더 컴팩트하게 표현합니다. 데이터의 형태에 따라 가장 효율적인 형식을 자동으로 선택합니다:
- Inline Form: 기본 배열을 단일 행으로 표현합니다.
- Tabular Form: 헤더에 필드 목록을 한 번 선언하고, 균일한 객체 배열에 대해 행별 값을 스트림으로 출력합니다.
- Keyed Tabular: 각 행이 자체 키를 갖는 균일한 객체를 포함하는 객체(예: config maps)에 사용됩니다.
- List Form: 비균일 또는 혼합 유형 데이터에 대한 폴백입니다.
또한 명시적인 길이 마커 [N] 및 필드 목록 {fields}를 포함하여 LLM에 명확한 구조적 가드레일을 제공합니다.
대상
프롬프트에 대량의 구조화된 데이터(레코드, 로그 또는 구성 등)를 전달해야 하는 LLM 애플리케이션을 구축하는 개발자, 특히 높은 모델 성능을 유지하면서 API 비용과 토큰 사용량을 줄이고자 하는 분들을 위한 것입니다.
주요 특징
- 토큰 효율성: 벤치마크 결과에 따르면 검색 정확도를 유지하거나 향상시키면서 표준 JSON보다 토큰을 최대 42.6% 적게 사용할 수 있습니다.
- 무손실 왕복: JSON과 동일한 데이터 모델의 결정론적 인코딩.
- LLM 친화적 가드레일: 명시적인 길이와 필드 목록은 모델이 데이터를 더 안정적으로 파싱하고 검증하는 데 도움을 줍니다.
- 다국어 지원: TypeScript, Python, Go, Rust 및.NET에서 사양 기반 구현을 사용할 수 있습니다.