TOON 소개
TOON(Token-Oriented Object Notation) 은 대규모 언어 모델(LLM)에 구조화된 데이터를 전달하기 위해 설계된, 간결하면서도 사람이 읽기 쉬운 데이터 포맷입니다. 특히 LLM의 입력 데이터로 최적화되어 있으며, 기존 JSON 형식보다 훨씬 적은 토큰 수로 동일한 정보를 표현할 수 있습니다.
기존의 JSON은 구조가 명확하지만 불필요한 구분자({}, , "")로 인해 토큰 사용량이 상대적으로 많아져 비용이 커집니다. TOON은 이를 개선하기 위해 YAML의 들여쓰기 기반 구조와 CSV의 표 형태 데이터를 결합했습니다. 그 결과, 여러 객체가 동일한 필드를 갖는 경우와 같이 데이터 일관성이 높은 배열 등을 표현하는데 탁월한 효율성을 보입니다.
예를 들어, 사용자 정보를 나타내는 다음과 같은 JSON이 있다고 하면,
{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}
TOON(Token-Oriented Object Notation)은 같은 데이터를 다음처럼 표현합니다:
users[2]{id,name,role}:
1,Alice,admin
2,Bob,user
위 예시에서 보는 것처럼 불필요한 구문이 제거되어 LLM이 데이터를 읽고 이해하기에 훨씬 경제적입니다. 평균적으로 JSON 대비 30~60%의 토큰 절감 효과가 있으며, 특히 동일한 구조를 가진 대용량 배열 데이터를 다룰 때 큰 장점을 가집니다.
TOON vs. JSON / YAML
TOON은 구조적 표현은 YAML과 비슷하고, 테이블 형태의 데이터 처리에서는 CSV에 가깝습니다. 그러나 JSON/YAML 포맷보다 LLM의 입력 최적화에 집중되어 있습니다.
| 비교 항목 | JSON | YAML | TOON |
|---|---|---|---|
| 문법 복잡도 | 높음 (괄호, 따옴표 필요) | 중간 (들여쓰기 기반) | 낮음 (불필요한 구문 제거) |
| 토큰 효율성 | 낮음 | 중간 | 높음 |
| 사람 가독성 | 보통 | 높음 | 높음 |
| LLM 친화도 | 낮음 | 중간 | 매우 높음 |
| 주 용도 | API, 데이터 교환 | 설정 파일 | LLM 입력 데이터 |
TOON은 특히 “LLM 프롬프트 입력”용으로 설계되었기 때문에, 사람이 읽기 쉽고 모델이 파싱하기 쉬운 구조를 동시에 만족합니다.
TOON의 문법: 형식 규칙과 구조
TOON의 문법은 간결하면서도 일관성을 유지합니다:
- 들여쓰기: 2칸 고정
- 객체: key: value 형태
- 배열: key[N]{fields}: 헤더와 함께 행을 나열
- 빈 배열/객체: items[0]: 또는 config:
- 따옴표 규칙: 필요할 때만 사용 (예: 공백, 구분자 포함 시)
예를 들어, 보유하고 있는 재고를 표시할 때 물품의 재고 관리 단위(Stock Keeping Unit), 수량, 가격을 다음과 같이 표시할 수 있습니다:
items[2]{sku,qty,price}:
A1,2,9.99
B2,1,14.5
TOON의 주요 특징
-
토큰 효율성: JSON 대비 약 30~60% 절감 -
LLM 최적화: 배열 길이와 필드명이 명시되어 모델이 구조를 쉽게 검증 -
간결한 문법: 괄호나 따옴표 대신 들여쓰기를 활용 -
탭 기반 배열: 동일한 필드를 반복 입력할 필요 없이 행만 추가 -
명확한 구문 규칙: 파싱 오류 최소화
벤치마크: TOON의 효율성
⭐ GitHub Repositories ██████████████░░░░░░░░░░░ 8,745 tokens
vs JSON: 15,145 (-42.3%)
vs YAML: 13,129 (-33.4%)
vs XML: 17,095 (-48.8%)
📈 Daily Analytics ██████████░░░░░░░░░░░░░░░ 4,507 tokens
vs JSON: 10,977 (-58.9%)
vs YAML: 8,810 (-48.8%)
vs XML: 13,128 (-65.7%)
🛒 E-Commerce Order ████████████████░░░░░░░░░ 166 tokens
vs JSON: 257 (-35.4%)
vs YAML: 197 (-15.7%)
vs XML: 271 (-38.7%)
─────────────────────────────────────────────────────────────────────
Total █████████████░░░░░░░░░░░░ 13,418 tokens
vs JSON: 26,379 (-49.1%)
vs YAML: 22,136 (-39.4%)
vs XML: 30,494 (-56.0%)
gpt-tokenizer(GPT-5 토크나이저 기준)로 측정한 결과, TOON은 JSON 대비 평균 49%, YAML 대비 39%, XML 대비 **56%**의 토큰 절감을 기록했습니다.
일례로, 상위 100개의 GitHub 저장소 데이터를 JSON과 TOON으로 각각 표현했을 때 다음과 같은 토큰 차이를 보였습니다:
- JSON: 15,145 tokens
- TOON: 8,745 tokens (−42.3%)
또한, 웹 분석 데이터(180일치)를 표현한 경우에는 TOON이 58.9%의 절감 효과를 보였습니다. 이처럼 TOON은 데이터 구조가 일정할수록 효율성이 극대화 됩니다.
TOON 설치 및 사용법
TOON은 TypeScript로 개발되어, npm과 같은 패키지 매니저를 사용하여 설치할 수 있습니다:
# npm을 사용하여 설치
npm install @byjohann/toon
# 또는 다음과 같이 pnpm / yarn으로 설치 가능
pnpm add @byjohann/toon
yarn add @byjohann/toon
TOON 기본 사용 예시
import { encode } from '@byjohann/toon'
const data = {
user: {
id: 123,
name: 'Ada',
tags: ['reading', 'gaming']
}
}
console.log(encode(data))
출력 결과:
user:
id: 123
name: Ada
tags[2]: reading,gaming
CLI 명령어
npx @byjohann/toon <input> [options]
자동으로 파일 확장자를 인식해 JSON → TOON 또는 TOON → JSON 변환을 수행합니다.
예시:
toon input.json -o output.toon
toon data.toon -o output.json
주요 옵션:
| 옵션 | 설명 |
|---|---|
| -o, --output | 출력 파일 지정 |
| -e, --encode | 강제 인코딩 |
| -d, --decode | 강제 디코딩 |
| --delimiter | 배열 구분자 설정(기본 ,) |
| --length-marker | 배열 길이 표시([#3] 형태) |
| --no-strict | 디코딩 시 엄격 검증 비활성화 |
LLM에서의 활용
TOON은 LLM 입력 형식으로 특히 적합합니다. JSON보다 40~60% 적은 토큰으로 동일한 정보를 전달할 수 있으며, 명확한 구조 덕분에 LLM이 데이터를 더 정확하게 해석할 수 있습니다.
예를 들어, 다음과 같이 LLM에 사용할 데이터를 입력할 수 있습니다:
데이터는 다음과 같이 TOON 포맷(공백 2개 들여쓰기, 배열은 길이와 필드 표시)으로 제공됩니다:
\`\`\`toon
users[3]{id,name,role,lastLogin}:
1,Alice,admin,2025-01-15T10:30:00Z
2,Bob,user,2025-01-14T15:22:00Z
3,Charlie,user,2025-01-13T09:45:00Z
\`\`\`
작업: 역할이 "user"인 사용자만 반환하세요. 동일한 헤더 구조를 유지하고 [N] 값을 일치시키세요. 결과만 코드 블럭으로 출력합니다.
이렇게 명시적으로 포맷을 보여주면, 모델이 별도의 설명 없이 구조를 이해할 수 있습니다.
지원 언어 포트
TOON은 다음과 같이 다양한 언어로 포팅되어 있습니다:
- Elixir: toon_ex
- PHP: toon-php
- Python: pytoon
- Ruby: toon-ruby
- Java: JToon
- .NET: toon.NET
- Swift: TOONEncoder
- Go: gotoon
라이선스
TOON 프로젝트는 MIT 라이선스로 배포됩니다. 상업적 사용에 제한이 없습니다.
TOON 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()
