- Token-Oriented Object Notation
- Formato de serialização projetado para reduzir o uso de tokens ao fornecer entrada para LLMs
- Representa dados JSON sem perdas, ao mesmo tempo em que garante eficiência de tokens e legibilidade
- Estrutura otimizada para arrays homogêneos de objetos, removendo chaves repetidas para oferecer redução de 30% a 60% nos tokens
- Formato híbrido que combina a estrutura baseada em indentação do YAML com o formato tabular do CSV
- Para dados com estrutura profundamente aninhada ou não homogênea, o JSON é mais eficiente
- Inclui informações estruturais explícitas, permitindo que LLMs façam parsing e validação de forma estável
- Melhora o reconhecimento da estrutura ao explicitar o tamanho do array (
[N]) e a definição dos campos ({id,name,role})
- Sintaxe concisa com um design mínimo de gramática que remove parênteses, aspas e pontuação desnecessários
- Representação hierárquica baseada em indentação, com suporte a fluxo de dados por linhas semelhante ao CSV
- Suporte a conversão bidirecional entre JSON ↔ TOON por meio de uma ferramenta CLI
- Oferece opções como detecção automática de formato, definição de delimitador (
,, \t, |) e exibição de estatísticas de redução de tokens
- Composição da API
encode() realiza a serialização de JSON, e decode() faz a desserialização
- É possível definir como opção indentação, delimitador e marcador de comprimento (
#)
- Nos resultados de benchmark, apresentou redução média de 21% a 60% nos tokens em comparação com JSON e 73,9% de acurácia em consultas com LLMs
- É ligeiramente maior que CSV, mas melhora a confiabilidade para LLMs com recursos de validação estrutural
- Regras do formato
- Strings são colocadas entre aspas apenas quando necessário, com aspas automáticas quando contêm delimitadores
- Números, booleanos, datas etc. são convertidos para formas amigáveis a LLMs
- Implementações em várias linguagens disponíveis
- Oficiais: Python, Rust (em desenvolvimento)
- Comunidade: Go, Java, Swift, C++, .NET, Ruby etc.
3 comentários
Estou usando
function calling, acho que vou precisar testar uma vez.Em alguns exemplos, dizem que, ao remover os espaços em branco, o formato JSON reduz muito mais a quantidade de tokens.. ainda não entendi bem. Se é realmente um formato que vale a pena usar direito.
Comparação de precisão por modelo
Se formos confiar só nos resultados de benchmark, parece que não há motivo para não usar, já que o uso de tokens diminui sem perda de precisão.