JSON を TOON に変換する方法
- JSON を貼り付けるか、ファイルを開きます。TOON の出力と、削減できるトークン数の推定がすぐに表示されます。
- 区切り文字を選びます:カンマ(デフォルト)、タブ、パイプ。タブにするとさらにトークンが少なくなることがよくあります。
- TOON をプロンプトにコピーします。モデルが TOON で返した回答を読むには、変換方向を TOON → JSON に切り替えます。
TOON と JSON の比較例
同じ 2 人のユーザーを JSON で表すと:
{"users":[{"id":1,"name":"Ada","role":"admin"},{"id":2,"name":"Bob","role":"user"}]}
TOON では次のようになります:
users[2]{id,name,role}:1,Ada,admin2,Bob,user
フィールド名はオブジェクトごとではなくヘッダーに 1 回だけ書かれ、引用符や波括弧、ほとんどの記号がなくなります。データベースの行、ログ、検索結果、商品リストなど、構造がそろったオブジェクトの配列では削減効果が大きく、100 件の顧客レコードを使ったテストでは、TOON のトークン数は整形済み JSON より約 65%、圧縮 JSON より 47% 少なくなりました。[2] という長さの表記により、モデルやデコーダーが行の欠落をチェックすることもできます。
TOON フォーマットの概要
| データ | TOON |
|---|---|
| オブジェクトのフィールド | name: Ada |
| ネストしたオブジェクト | address: の後にインデントしたフィールド |
| 単純な値の配列 | tags[3]: red,green,blue |
| 同じキーを持つオブジェクトの配列 | users[2]{id,name}: の後にオブジェクトごとに 1 行 |
| 混在した配列やネストした配列 | items[2]: の後に - で始まるリスト項目 |
| 文字列 | 引用符なし。ただし区切り文字、コロン、引用符、括弧を含む場合、前後に空白がある場合、数値・true・false・null のように見える場合は引用符で囲む |
JSON のほうが適しているケース
- 深いネストや不規則なデータ:オブジェクトごとにキーが異なったり、ネストしたオブジェクトを含んだりする場合、TOON はインデントしたリスト形式になり、削減効果は小さくなるか、なくなります。ネストした住所とタグのリストを持つ 20 件のレコードでは、TOON は整形済み JSON より 34% 小さかったものの、圧縮 JSON より 12% 大きくなりました。このツールでは、お使いのデータで両方の比較を確認できます。
- 機械向けのインターフェース:API、Function Calling、構造化出力は JSON を前提としています。
- モデルの慣れ:言語モデルは TOON よりはるかに多くの JSON を学習しています。切り替える前に、ご自身のプロンプトで回答の品質を確認してください。
- ごく小さなデータ:値が数個程度なら、違いはごくわずかです。
トークン数は「文字数 ÷ 4」で推定しています。正確な数はモデルのトークナイザーによって異なりますが、相対的な差の目安として役立ちます。
よくある質問
TOON とは何ですか?
TOON(Token-Oriented Object Notation)は、LLM のプロンプト向けに設計された、JSON のデータモデルをコンパクトかつ人が読みやすい形で表す形式です。オブジェクトには YAML のようなインデントを、構造がそろった配列には CSV のような行形式を組み合わせて使います。
TOON は JSON より優れていますか?
表形式のデータや構造がそろったデータを言語モデルに渡す場合は、たいてい TOON が有利です。トークン数が少なく、配列の長さも明示されます。API、データの保存、深くネストしたデータには、引き続き JSON のほうが適しています。
トークン数はどのように推定していますか?
文字数を 4 で割って推定しています。これは英語のテキストやコードでよく使われる目安で、日本語を多く含むデータでは実際のトークン数が多くなる傾向があります。正確な数はモデルのトークナイザーによって異なります。
TOON を JSON に戻せますか?
はい。変換方向を TOON → JSON に切り替えてください。デコーダーは宣言された配列の長さをチェックし、問題があればその行を報告します。