JSON ↔ TOON 변환기 - LLM 토큰 최적화 포맷

JSON 입력
TOON 출력

자주 묻는 질문

TOON(Token-Oriented Object Notation)이란 무엇인가요?

TOON(Token-Oriented Object Notation, 토큰 지향 객체 표기법)은 대규모 언어 모델(LLM) 애플리케이션을 위해 특별히 설계된 컴팩트하고 사람이 읽기 쉬운 데이터 직렬화 형식입니다. ChatGPT, Claude, Gemini 등 AI 모델 사용 시 토큰 소비 비용 증가 문제를 해결하기 위해 만들어졌습니다. TOON은 배열의 각 객체에 대해 속성 이름을 반복하는 기존 JSON과 달리 헤더를 한 번만 정의하고 데이터 행이 컴팩트한 쉼표로 구분된 형식으로 따르는 표 형식을 사용합니다.

왜 LLM 프롬프트에서 JSON 대신 TOON을 사용해야 하나요?

대규모 언어 모델을 사용할 때 JSON 대신 TOON을 선택해야 하는 여러 이유가 있습니다. 첫째, 비용 절감입니다. OpenAI의 GPT-4, Anthropic의 Claude, Google의 Gemini 같은 LLM API는 토큰 사용량에 따라 요금을 부과합니다. TOON은 구조화된 데이터의 토큰 소비를 30-50% 줄여 API 비용을 직접 절감합니다. 둘째, TOON은 컨텍스트 윈도우 제한 내에 더 많은 데이터를 담는 데 도움이 됩니다.

TOON 형식은 어떻게 작동하나요?

TOON은 반복적인 JSON 구조를 더 효율적인 표 형식으로 변환하여 작동합니다. 핵심 통찰은 동일한 속성을 가진 객체 배열이 있을 때 JSON은 모든 객체에 대해 모든 속성 이름을 반복한다는 것입니다. TOON은 헤더 행에서 스키마를 한 번만 선언한 다음 각 객체를 단순한 쉼표로 구분된 값의 행으로 표현하여 이 중복을 제거합니다.

// JSON (89 characters)
[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]

// TOON (42 characters, 53% smaller)
[2](id,name):
  1,Alice
  2,Bob

TOON과 JSON의 주요 차이점은 무엇인가요?

TOON과 JSON은 모두 데이터 직렬화 형식이지만 접근 방식과 사용 사례에 근본적인 차이가 있습니다. JSON은 각 객체가 모든 속성을 명시적으로 명명하는 장황한 키-값 쌍 구문을 사용하여 유사한 객체의 배열에서 매우 중복됩니다. TOON은 스키마 우선 접근 방식을 사용하여 속성 이름은 헤더에서 한 번만 선언되고 이후 행에는 값만 포함됩니다.

TOON으로 얼마나 많은 토큰을 절약할 수 있나요?

TOON을 사용한 토큰 절약은 데이터 구조에 따라 다르지만 반복 스키마가 있는 구조화된 데이터의 경우 일반적으로 30%에서 60%의 절약을 기대할 수 있습니다. 동일한 속성을 공유하는 많은 객체가 있는 배열이 있을 때 절약이 가장 극적입니다. 예를 들어 id, name, email, role과 같은 속성을 가진 100개의 사용자 객체의 JSON 배열은 이 네 개의 속성 이름을 100번 반복합니다. TOON에서는 이러한 이름이 헤더에 한 번만 나타납니다.

TOON 형식의 기본 구문은 무엇인가요?

TOON 구문은 최소화되면서도 표현력이 풍부하도록 설계되었습니다. 기본 구성 요소는: 1) 간단한 키-값 쌍은 YAML과 유사하게 별도의 줄에 'key: value'로 작성됩니다. 2) 객체 배열은 헤더 표기법을 사용합니다: 'arrayName[count](field1,field2,field3):' 다음에 데이터 행이 오고 각 행에는 헤더 필드에 해당하는 쉼표로 구분된 값이 포함됩니다.

// Array with schema header
products[3](id,name,price):
  1,Widget,9.99
  2,Gadget,19.99
  3,Gizmo,29.99

// Nested object
user:
  name: John Doe
  age: 30
  address:{city: New York, zip: 10001}

TOON은 어떤 데이터 유형을 지원하나요?

TOON은 JSON과 동일한 모든 데이터 유형을 지원하여 변환 중 완전한 데이터 충실도를 보장합니다. 문자열은 텍스트로 표현되며 쉼표, 줄 바꿈 또는 선행/후행 공백과 같은 특수 문자가 포함된 경우에만 따옴표가 필요합니다. 숫자에는 정수와 부동 소수점 값이 모두 포함되며 표준 십진 표기법으로 표현됩니다.

ChatGPT, Claude 및 기타 LLM에서 TOON 형식을 어떻게 사용하나요?

LLM에서 TOON을 사용하는 것은 간단하며 '말하지 말고 보여주기' 접근 방식을 따릅니다. 가장 효과적인 방법은 'toon' 언어 식별자를 사용하여 TOON 데이터를 코드 블록으로 감싸는 것입니다. 이렇게 하면 LLM이 형식을 인식하고 올바르게 구문 분석하는 데 도움이 됩니다.

// LLM Prompt Example:
Here is user data in TOON format:

users[3](id,name,email):
  1,Alice,[email protected]
  2,Bob,[email protected]
  3,Charlie,[email protected]

Please analyze this data and respond in the same TOON format.

어떤 프로그래밍 언어가 TOON을 지원하나요?

TOON은 공식 및 커뮤니티 구현이 모두 제공되어 많은 프로그래밍 언어에서 지원이 확대되고 있습니다. 공식 TypeScript/JavaScript 구현(npm의 toon-format/toon)은 참조 구현으로 인코딩, 디코딩 및 스트리밍 API를 제공합니다. Python 개발자는 PyPI의 toon_format 패키지를 사용할 수 있습니다.

언제 TOON을 사용하고 언제 JSON을 고수해야 하나요?

TOON은 특정 시나리오에 이상적이고 JSON은 다른 시나리오에서 더 좋습니다. TOON을 사용하는 경우: 1) LLM에 구조화된 데이터를 보내고 토큰 비용을 줄이고 싶을 때. 2) 일관된 스키마를 가진 객체 배열이 있을 때. 3) 컨텍스트 윈도우 제한에 근접하여 더 많은 데이터를 담아야 할 때. JSON을 고수하는 경우: 1) 사람이 자주 편집하는 구성 파일을 다룰 때. 2) 단일 객체 또는 매우 불규칙한 중첩 구조가 있을 때.

TOON 형식의 한계는 무엇인가요?

TOON은 상당한 이점을 제공하지만 한계를 이해하는 것이 중요합니다. 첫째, TOON은 일관된 스키마를 가진 객체 배열에 최적화되어 있습니다. 단일 객체나 매우 불규칙한 구조의 경우 토큰 절약이 최소화됩니다. 둘째, TOON은 인코딩 및 디코딩 단계가 필요하여 네이티브 JSON 구문 분석에 비해 약간의 처리 오버헤드가 추가됩니다.

LLM에서 TOON을 사용하는 모범 사례는 무엇인가요?

LLM 작업 시 TOON의 이점을 극대화하려면 다음 모범 사례를 따르세요: 1) TOON으로 변환하기 전에 항상 JSON을 검증하여 인코딩 오류를 방지합니다. 2) 'toon' 언어 식별자가 있는 코드 블록을 사용하여 LLM이 형식을 인식하도록 돕습니다. 3) 복잡한 스키마의 경우 시스템 프롬프트에 작은 예제를 제공하여 모델을 준비시킵니다.