7

Usando CSV em vez de JSON para reduzir consumo de tokens e reduzir o custo de AI apps

Bom dia a todos!

Hoje gostaria de compartilhar uma simples dica que pode ajudar você a reduzir o consumo de tokens e salvar dinheiro.

Se você tem um json como esse:
{"id": 1,"todo": "Do something nice for someone you care about","completed": false,"userId": 152}

Irá utilizar 31 tokens. Site utilizado: https://token-calculator.net/

Se usar um versão em csv:
id,todo,completed,userId
1,"Do something nice for someone you care about",false,152

Irá utilizar 22 tokens. Site utilizado: https://token-calculator.net/

Então você irá salvar 31 - 22 => 9 tokens

Imagine um cenário usando JSON:

1 planilha onde você converte em um JSON com a mesma estrutura do JSON acima, mas a planilha tem 1000 linhas, então 1000 x 31 igual 31000 tokens.

Então se receber 1000 planilhas para processar serão 31000000 tokens.

Custo de inputs por 1 milhão usando Chatgpt 5.5 é 5, 31000000 / 1000000 => 31 x 5 => 155

Custo de outputs por 1 milhão usando Chatgpt 5.5 é 30.00 usando a mesma estrutura, 31000000 / 1000000 => 31 x 30.00 => 930

Total de custo: 155 + 930 => $1085

Imagine um cenário usando CSV:

1 planilha onde você converte em um JSON com a mesma estrutura do JSON acima, mas a planilha tem 1000 linhas, 1000 x 22 igual 22000 tokens.

Então se receber 1000 planilhas para processar serão 22000000 tokens.

Custo de inputs por 1 milhão usando Chatgpt 5.5 é 5, 22000000 / 1000000 => 22 x 5 => 110

Custo de outputs por 1 milhão usando Chatgpt 5.5 é 30.00 usando a mesma estrutura, então 22000000 / 1000000 => 22 x 30 => 660

Total de custo: 110 + 660 => $770

Economizou: 1085 - 770 => $315

Carregando publicação patrocinada...
3

Já ouvi falar de uma estrutura que é otimizado pra ser enviado para LLMs: o TOON.

Tão falando que é bem lento pra ser serializado, mas tem uma economia boa em tokens.

Inclusive esse "TOON" é fortemente baseado em CSV. É uma mistura de CSV com YAML.

2

Pesquisei a respeito do TOON e ele tem essa sessão When Not to Use TOON onde é explicado alguns casos onde não faz sentido usar o TOON e um dos itens da lista é esse:

When Not to Use TOON
Pure tabular data: CSV is smaller than TOON for flat tables. TOON adds minimal overhead (~5–10%) to provide structure (array length declarations, field headers, delimiter scoping) that improves LLM reliability.

Logo o TOON é muito bom para dados mais complexos, porém em grande parte das vezes em que o dado é simples e comportado no formato de uma tabela, como no exemplo do post acima, o CSV vai ser menor que o TOON reduzindo ainda mais o numero de tokens. Mas em estruturas mais complexas o TOON é um pouco melhor que o JSON na relação acurácia/tokens como desmosntrado nessa sessão

Eu não conhecia o formato, obrigado por compatilhar :)

1

Boa, eu também ando medindo os tokens de perto, então concordo com a direção. A entrada encolhe mesmo.

Mas na prática o CSV tropeça quando o valor tem vírgula, aspas ou quebra de linha no meio: a coluna desalinha e o modelo lê o campo errado. Às vezes o que você economizou volta como tempo de conferir a saída.

O que mais me ajudou aqui foi tirar a conversão de JSON pra CSV das mãos do modelo e deixar num script. Aí essa parte sai do custo de token e vira processamento de CPU e memória, que é praticamente de graça e não varia. O modelo recebe só o dado já formatado.

Você faz a conversão no código ou deixa o modelo cuidar disso?

1

A parte da vírgula, pont e vírgula ou qualquer outro carácter separador é um ponto relevante, isto complica o uso do csv, fora que tem de converter de JSON para csv, aí já gastou tempo e recursos que talvez não valham a pena.