📦 Formato de dados otimizado para IAs modernas
Desenvolvido por Mateus Henrique
Núcleo implementado em Rust + FFI universal
AON (Artificial Object Notation) é um novo formato de dados criado especificamente para IAs e modelos de linguagem, não para humanos.
Diferente do JSON — projetado para legibilidade — o AON é baseado em:
- Schema antes dos dados
- Codificação posicional compacta
- Tipos explícitos
- Listas tipadas (
list<T>) - Subschemas automáticos
- Formato determinístico
- Zero ambiguidade sintática
O resultado é um formato mais preciso, mais confiável, mais barato em tokens e muito mais fácil de interpretar por modelos.
Formatos como JSON, YAML, TOML e XML foram feitos para humanos.
Eles contêm:
- aspas desnecessárias
- chaves repetitivas
- redundância de nomes
- muita liberdade sintática
- ambiguidades que confundem LLMs
O AON resolve exatamente esses problemas.
- Ser minimalista, porém estruturalmente rígido
- Reduzir ambiguidades que causam alucinação
- Ser determinístico (1 formato válido, sem variações)
- Ter schema explícito + dados posicionais
- Permitir roundtrip perfeito
- Ser multiplataforma via C ABI
- Ser ideal para datasets, streaming e IA
┌──────────────────┐
│ Entrada JSON │
└────────┬──────────┘
▼
┌──────────────────┐
│ Inferência de │
│ Schema (Rust) │
└────────┬──────────┘
▼
┌──────────────────┐
│ Encoder AON │
└────────┬──────────┘
▼
┌──────────────────┐
│ Decoder AON → JSON│
└────────┬──────────┘
▼
┌────────────────────────────────┐
│ Núcleo Rust + FFI C universal │
└────────────────────────────────┘
Com suporte a:
- objetos
- listas simples
- listas de objetos
- subschemas nomeados
Exemplo:
"Alice",1,([(06114020,"Rua das Dores") ; (06114021,"Rua Azul")],30)
enderecos:list<enderecos>
JSON → AON → JSON
Sem perda. Sem mudança. Sem reorder.
- rápido
- seguro
- determinístico
- com exportação C ABI
- Node.js (N-API)
- Python (em breve)
- Go (em breve)
- WASM (em breve)
{
"id": 1,
"nome": "Alice",
"profile": {
"enderecos": [
{ "cep": "06114020", "rua": "Rua das Dores" },
{ "cep": "06114021", "rua": "Rua Azul" }
],
"idade": 30
}
}!aon
count:1
schemas:{
users:(nome:string,id:number,profile:profile)
profile:(enderecos:list<enderecos>,idade:number)
enderecos:(cep:string,rua:string)
}
data:
"Alice",1,([(06114020,"Rua das Dores") ; (06114021,"Rua Azul")],30)
end
{
"id": 1,
"nome": "Alice",
"profile": {
"enderecos": [
{ "cep": "06114020", "rua": "Rua das Dores" },
{ "cep": "06114021", "rua": "Rua Azul" }
],
"idade": 30
}
}Roundtrip 100% perfeito.
Baseado no comportamento médio de LLMs (GPT-4.1, Claude 3.7, Gemini 1.5, o1-mini):
| Formato | GPT-4 | Claude | Gemini | o1-mini |
|---|---|---|---|---|
| JSON | 83% | 86% | 79% | 69% |
| TOON | 69% | 74% | 65% | 55% |
| AON | 95% | 95% | 93% | 88% |
| Formato | Tokens/linha |
|---|---|
| JSON | ~72 |
| TOON | ~54 |
| AON | ~30 |
AON se torna mais eficiente que JSON após ~2 linhas
e mais eficiente que TOON após ~3 linhas.
cargo build --release
Resultado:
target/release/libaon_core.so
npm install
node test.js
API:
const { jsonToAon, aonToJson } = require("./index.js");
const aon = jsonToAon(jsonString, "users");
const json = aonToJson(aon);aon_core/
├── src/lib.rs
├── Cargo.toml
aon_node_binding/
├── aon_binding.c
├── aon_ffi.h
├── binding.gyp
├── index.js
├── test.js
Mateus Henrique — Arquiteto & Criador
Contribuições são bem-vindas.
MIT License.