TOON: 半分のトークン数でLLMプロンプト向けJSON
TOONの紹介:LLM向けトークン指向オブジェクト記法
大規模言語モデル(LLM)が急速に進化する現代において、効率性は極めて重要です。コンテキストウィンドウが広がり、データ入力が大規模になるにつれて、トークン使用に伴うコストは増大する可能性があります。このような状況でトークン指向オブジェクト記法(TOON)が登場し、構造化データをLLMに渡す際のトークン消費量を大幅に削減する clever なオープンソースソリューションを提供します。
Johann Schopplich 氏によって開発された TOON は、API やストレージのための汎用 JSON 代替ではなく、LLM 入力用に特別に設計された革新的なデータ形式です。その核となる強みは、JSON と同じ情報をトークンを30〜60%削減して伝えられる点にあります。これにより、LLMとのインタラクションがより費用対効果が高く、高速になります。
LLMプロンプトにとってTOONが重要な理由
従来のJSONはデータ交換に広く利用されていますが、特に繰り返しが多いデータ構造の場合、冗長でトークンを多く消費する傾向があります。TOONは、冗長な句読点(中括弧、角括弧、ほとんどの引用符)を削除し、YAMLに似たインデントベースの構造を採用した最小限の構文を活用することで、この問題に対処します。その「スイートスポット」は、オブジェクトの均一な配列、つまり1行に複数のフィールドがあり、項目間で構造が一貫しているデータです。これらのシナリオでは、TOONはトークン効率のために最適化された表形式を利用します。
簡単な例を見てみましょう。
JSON:
{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}
TOON:
tsers[2]{id,name,role}:
1,Alice,admin
2,Bob,user
特に大規模なデータセットでは、トークン数の違いは非常に大きいです。
主な特徴と利点
- トークン効率: JSONと比較して最大60%のトークン削減を達成し、コストとプロンプト長を最適化します。
- LLMフレンドリーなガードレール: 明示的な長さとフィールド宣言により、LLMのデータ解析と検証を簡素化します。
- 最小限の構文: 定型的な句読点を減らし、人間の可読性を高め、トークナイザーの効率を向上させます。
- インデントベースの構造: YAMLユーザーにはお馴染みの、ネストされたオブジェクトに空白を使用する構造です。
- 表形式の配列: キーを一度宣言し、データを行としてストリーム配信します。均一なデータセットに最適です。
- パフォーマンスベンチマーク: TOONは、GitHubリポジトリ、日次分析、EC注文など、様々な実世界データセットで一貫して優れたトークン効率を示し、多くの場合、異なるLLMモデル(gpt-5-nano、claude-haiku、gemini-2.5-flash、grok-4-fast)間で同等かそれ以上の検索精度を実現しています。
TOONの仕組みと使い方
TOONは変換レイヤーとして設計されており、JSONをプログラム的に使用し、LLM入力用にTOONに変換することができます。npmパッケージ(@byjohann/toon)として利用可能で、JSONとTOON形式間の変換を容易にするコマンドラインインターフェース(CLI)が含まれています。
インストールは簡単です。
npm install @byjohann/toon
# または pnpm/yarn を使用
データのエンコード:
import { encode } from '@byjohann/toon'
const data = {
users: [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' }
]
}
console.log(encode(data))
// 上記で示したTOON出力を生成します
delimiter(カンマ、タブ、またはパイプ)やlengthMarkerなどのオプションで出力をカスタマイズすることもでき、特にLLMに特定のフォーマットを伝える際に、トークンの節約と明確さを向上させます。
LLMプロンプトでのTOON
LLMにTOONを送信する際は、説明するだけでなく、フォーマットを示すのがベストプラクティスです。エンコードされたデータをフェンス付きコードブロック(例:``toon)で囲みます。TOON内の明示的な配列の長さとフィールドヘッダーは、モデルが構造を追跡するのに役立ち、パースエラーを大幅に削減します。
LLMを使用してTOONを生成する場合は、プロンプトの指示を明確にしてください。期待されるヘッダー形式とルール(例:2スペースインデント、末尾のスペースなし)を定義します。これにより、LLMは準拠した効率的なTOON出力を生成するようになります。
注意事項と制限事項
TOONはオブジェクトの均一な配列で優れた性能を発揮しますが、深くネストされたデータや非常に不均一なデータでは効率が低下する可能性があり、その場合はJSONの方が適しているかもしれません。トークンの節約度は、使用する特定のLLMとトークナイザーによって異なる場合があることを理解しておくことが重要です(ベンチマークはGPTスタイルのトークナイザーに基づいています)。
しかし、大規模で一貫性のあるデータセットを扱う多くのLLMプロンプトエンジニアリングタスクにおいて、TOONはLLMとのインタラクションを強化し、最適化するための強力なオープンソースツールを提供します。コミュニティのサポートが拡大し、様々な言語での実装が進むにつれて、TOONはAI開発者にとって貴重な資産となりつつあります。
仕様、ベンチマーク、および継続的な開発についてさらに深く掘り下げるには、TOON GitHubリポジトリをご覧ください。