heliofilho.devNewsletter
Cofre/Vídeos
Vídeo · 15 de out. de 2026

Sua indentação custa tokens: o paper, a ferramenta e o prompt

O paper que mediu quanto espaço, quebra de linha e indentação pesam na conta da IA, o prompt exato para a IA devolver código compacto, a ferramenta que comprime e restaura a formatação e quando isso quebra o seu código.

Você comentou TOKEN e aqui está tudo que eu prometi no vídeo: o paper, a ferramenta que comprime o código para a IA e devolve formatado para você, e o prompt pronto para testar. Também tem os números por linguagem, o caso em que o truque quebra o código e um script para você contar os tokens do seu próprio projeto.

Resumo para quem tem pressa

O quePara que serveLink
O paperMediu quanto a formatação pesa em 10 modelos e 4 linguagensarXiv 2508.13666
O promptFaz a IA devolver código sem espaços e quebras de linhalogo abaixo, na seção 2
DeblankComprime o código antes de mandar e restaura a formatação na respostaGitHub
tiktokenConta os tokens do seu código, do jeito que o GPT-4o contaGitHub

1. O paper: o que eles mediram

The Hidden Cost of Readability: How Code Formatting Silently Consumes Your LLM Budget (O custo escondido da legibilidade: como a formatação do código consome o seu orçamento de IA em silêncio). Os autores são Dangfeng Pan, Zhensu Sun, Cenyuan Zhang, David Lo e Xiaoning Du, das universidades Monash (Austrália) e Singapore Management University. Saiu no arXiv em 19/08/2025 e foi aceito no ICSE 2026, a principal conferência acadêmica de engenharia de software.

Pensa num táxi que cobra por letra da mensagem que você manda. Você escreveria o recado com parágrafo, espaço duplo e recuo bonito? A IA funciona assim: ela não lê o seu código como você vê na tela, ela lê uma fila de pedacinhos de texto chamados tokens. E a API cobra por token. Espaço, quebra de linha e indentação também viram token.

O teste: eles pediram para 10 modelos completarem um trecho que faltava no meio de um código (a tarefa se chama fill-in-the-middle), em Java, Python, C++ e C#. Primeiro com o código formatado, depois com o mesmo código sem formatação nenhuma. Os modelos: GPT-3.5-turbo, GPT-4o-mini, GPT-4o, Gemini 1.5 Flash, Claude 3.7, Phi-3.5, Qwen 2.5, MagiCoder, DeepSeek-V3 e DeepSeek-Coder-1.3B.

Este é o Hello World do vídeo, a figura que os próprios autores usam. Formatado, ele dá 60 tokens no tokenizador do GPT-4o. Sem formatação, 47. Repara que cada \n e cada recuo tem cor própria: é token sendo cobrado.

O Hello World em Java: 60 tokens formatado e 47 sem formatação, contados no tokenizador do GPT-4o. Cada cor é um token. Figura do repositório oficial do Deblank.
O Hello World em Java: 60 tokens formatado e 47 sem formatação, contados no tokenizador do GPT-4o. Cada cor é um token. Figura do repositório oficial do Deblank.

O resultado: 24,5% menos tokens na entrada, em média, sem queda que importe no acerto. Por linguagem:

LinguagemTokens a menos na entrada
Java34,9%
C++31,1%
C#25,3%
Python6,5%

Python quase não ganha porque lá a indentação faz parte da sintaxe: tirar o recuo muda o que o código faz. Só dá para tirar espaços sobrando.

A pegadinha: a saída

Mandar o código sem formatação quase não muda o que a IA devolve. Ela continua respondendo com tudo formatado, e a economia na saída ficou em torno de 2,5%. O problema é que a saída é a parte cara: no exemplo de preço que o paper usa, o GPT-4o cobrava US$ 2,50 por milhão de tokens de entrada e US$ 10 por milhão de saída. Quatro vezes mais.

Dica: os modelos testados são de 2024 e 2025. Os números exatos mudam nos modelos novos, mas o motivo não: o tokenizador continua transformando espaço e quebra de linha em token. Antes de mudar o seu fluxo, meça no modelo que você usa (o script está mais abaixo).

2. O prompt pronto para testar

O paper testou dois pedidos para a IA devolver código compacto. O curto quase não funcionou no GPT-4o (de 0,1% a 5,4% de economia). O que funcionou foi este, mais detalhado. Copie no final do seu pedido, em inglês, do jeito que eles testaram:

Please directly output the following code, deleting all spacings, newlines, and indentations, provided that it does not violate any syntax rules:

Em português, se preferir: "Escreva o código diretamente, removendo todos os espaços, quebras de linha e indentações, desde que isso não viole nenhuma regra de sintaxe."

Quanto a saída encolheu com esse prompt:

LinguagemGPT-4oGemini 1.5
Java36,1%38,9%
C++32,6%29,2%
C#25,6%25,1%
Python14,4%9,9%

No texto, os autores resumem o GPT-4o em 27,2% de economia média na saída para Java, C++ e C#, que é o número que eu usei no vídeo. A tabela deles dá um pouco mais.

Quando o prompt quebra o código

No GPT-4o o acerto se manteve. No Gemini 1.5, não: no C++, o acerto caiu de 67,2% para 11,1% com esse mesmo prompt. Ele apagava espaço que não podia apagar. O exemplo do paper é em C#: static bool HasCloseElements virou staticboolHasCloseElements, uma palavra só, e o código parou de compilar.

Dica: se for usar o prompt, rode os testes do seu projeto na resposta antes de aceitar. E prefira pedir o código compacto e formatar depois na sua máquina, com o Prettier, o formatador da sua IDE ou o Deblank. Assim você paga menos tokens e continua lendo código bonito.

E com fine-tuning?

Treinar o modelo com só 50 exemplos de Java sem formatação foi o suficiente para ele passar a responder compacto sozinho: a saída caiu 24,8% no GPT-4o e 35,9% no Gemini 1.5, sem perder acerto. Isso só faz sentido se você já treina um modelo para o seu caso. Para o uso do dia a dia, o prompt resolve.

3. A ferramenta: Deblank

É a ferramenta que eu citei no vídeo, a que "converte nos dois sentidos". Os próprios autores do paper publicaram o código. Ela comprime o código antes de mandar para a IA e restaura a formatação na resposta, num estilo padrão (PEP 8 no Python, Google Style nos outros).

Pensa num zíper: fecha para viajar, abre quando chega. O Deblank garante que o código comprimido é exatamente o mesmo programa. Ele confere a árvore de sintaxe (AST) antes e depois, que é o jeito do compilador "entender" o código, ignorando a aparência.

O que ele faz, segundo o repositório:

  • Suporta Python, Java, C, C++, C#, JavaScript, TypeScript e Go.
  • Funciona tanto com código puro quanto com texto misturado com blocos de código (aquele formato de resposta de chat com três crases).
  • Leva cerca de 76 milissegundos por trecho.
  • O paper ganhou o prêmio Distinguished Paper no ICSE 2026, o selo de melhores trabalhos da conferência.
  • Licença MIT: pode usar até em projeto comercial.

Como começar (precisa do Docker instalado):

  1. Baixe a imagem pronta: docker pull zhangcen456/deblank:latest
  2. Suba o serviço:
    docker run -d -p 5089:5089 -e ENABLE_C_FAMILY=true -e ENABLE_JS_TS=true -e ENABLE_GO=true -e ENABLE_GUESS_LANG=true zhangcen456/deblank:latest
    
  3. Mande o código para comprimir:
    import requests
    
    codigo = """public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("Hello, World!");
        }
    }"""
    
    r = requests.post("http://localhost:5089/unformat_code",
                      json={"input": codigo, "mode": "code", "language": "java"})
    print(r.json()["segments"][0]["content"])
    
    A resposta sai assim: public class HelloWorld{public static void main(String[]args){System.out.println("Hello, World!");}}
  4. Quando a IA responder compacto, mande a resposta para http://localhost:5089/format_code e receba o código formatado de volta.

Quando não vale: se você usa a IA dentro de um editor, como o Cursor ou o Copilot, você não controla o que vai na requisição, então não tem onde encaixar o Deblank. Ele vale para quem chama a API direto: automações, agentes, ferramentas internas, quem manda muito código por dia.

A primeira versão se chama Code Format Transformer. É um script de linha de comando que usa o Uncrustify (C, C++, C#, Java) e o YAPF (Python) por baixo: python format_manager.py MeuCodigo.java MeuCodigo.min.java unformat. Ela não tem arquivo de licença no repositório, então para uso em empresa fique com o Deblank.

Dica: o site do projeto tem uma demo que pede a sua chave da OpenAI. Não cole chave de API em site de terceiros. Rode o Deblank na sua máquina, que dá o mesmo resultado sem expor a chave.

4. Conte você mesmo

Quer saber quanto o seu código pesa? Este script usa o tiktoken, a biblioteca da OpenAI que conta tokens do jeito que os modelos da OpenAI contam. Instale com pip install tiktoken e rode passando o arquivo:

import re
import sys
import tiktoken

enc = tiktoken.encoding_for_model("gpt-4o")
codigo = open(sys.argv[1], encoding="utf-8").read()

# versão grosseira sem formatação: junta linhas e encolhe espaços
compacto = re.sub(r"\s+", " ", codigo)
compacto = re.sub(r"\s*([{}();,=+\-*/<>])\s*", r"\1", compacto)

a, b = len(enc.encode(codigo)), len(enc.encode(compacto))
print(f"formatado: {a} tokens | compacto: {b} tokens | {100 * (a - b) / a:.1f}% a menos")

Esse jeito de compactar serve só para medir. Ele pode quebrar strings com espaço dentro e não serve para Python. Para usar de verdade, use o Deblank, que entende a sintaxe de cada linguagem.

Quando vale e quando não vale

SituaçãoVale?
Você manda muito código Java, C++ ou C# para a APISim, a entrada cai de 25% a 35%
Você programa em PythonPouco, a economia é de uns 6%
Você usa o Gemini e pede código compactoCom cuidado, teste antes: pode quebrar o código
Você só usa IA dentro do editorNão tem onde encaixar
Você paga por assinatura fixa, sem cobrança por tokenGanha espaço na janela de contexto, não dinheiro

Para ir mais fundo

O estudo

As ferramentas

Glossário rápido

TermoEm português claro
TokenPedacinho de texto que a IA lê e cobra. Pode ser uma palavra, parte dela ou um espaço
TokenizadorO programa que corta o texto em tokens antes de a IA ler
Entrada e saídaO que você manda para a IA e o que ela devolve. A saída costuma custar mais caro
Fill-in-the-middlePedir para a IA completar um trecho que falta no meio do código
Pass@1A taxa de acerto de primeira: o código gerado passou nos testes na primeira tentativa
Fine-tuningTreinar um modelo pronto com alguns exemplos seus para ele se comportar de um jeito
ASTA estrutura que o compilador monta do código, ignorando espaços e recuos
PrettierFormatador de código muito usado em JavaScript, aquele que deixa tudo alinhado ao salvar

Tem mais coisa de IA explicada assim no Cofre, e todo dia sai vídeo novo de tecnologia no @heliofilhou.