Os modelos de linguagem leem e escrevem tokens, e você é cobrado por ambos. Otimizar tokens significa gastá-los onde melhoram a resposta e em nenhum outro lugar. Bem feito, reduz custo e latência e muitas vezes melhora a qualidade, porque um prompt focado é mais fácil de seguir.
O que é um token
Um token é um pedaço de texto do vocabulário do modelo: uma palavra, parte de uma palavra, um sinal de pontuação ou um espaço mais uma palavra. Para prosa em inglês, uma regra aproximada é quatro caracteres, ou três quartos de palavra, por token. A regra falha com frequência:
- Código, JSON e identificadores incomuns usam mais tokens que prosa.
- Idiomas diferentes do inglês costumam usar mais tokens por palavra.
- Cada provedor tem seu próprio tokenizador, então o mesmo texto tem contagens diferentes em cada modelo.
Conte com o tokenizador real
Estimativas servem para um primeiro palpite e erram para um orçamento. A OpenAI publica seus tokenizadores, então as contagens podem ser exatas offline. Anthropic e Google oferecem endpoints de contagem de tokens; sem eles, a contagem é uma aproximação.
O PromptFlowEngine segue essa distinção: as contagens dos modelos da OpenAI são calculadas com o tokenizador deles e rotuladas como exatas, enquanto as de outros provedores são rotuladas como aproximadas. Você pode verificar um prompt no espaço de trabalho ou pela API HTTP:
curl -s https://promptflowengine.com/api/v1/tokens \
-H 'content-type: application/json' \
-d '{"prompt":"Summarize the notes below in 5 bullets.","model":"gpt-4.1"}'
De onde vem o custo
O custo por chamada é tokens de entrada vezes o preço de entrada, mais tokens de saída vezes o preço de saída. Três fatos moldam toda otimização:
- Tokens de saída geralmente custam várias vezes mais que os de entrada. Limitar o tamanho da resposta costuma economizar mais que enxugar o prompt.
- A parte fixa de um prompt é paga a cada chamada. Cinquenta tokens desperdiçados em um prompt de sistema executado um milhão de vezes são cinquenta milhões de tokens.
- Em uma conversa ou em um laço de agente, o histórico é reenviado a cada turno. O custo cresce mais rápido que o número de turnos.
Compressão de prompts: o que remover
Trabalhe do corte mais seguro ao mais arriscado.
Enchimento e cortesias. “Olá”, “por favor”, “eu gostaria que você”, “é importante observar que”. Não trazem nenhuma instrução.
Before: Hello! I would like you to please summarize the notes below.
Please make sure to keep it brief.
After: Summarize the notes below in 3 sentences.
Repetição. A mesma instrução dita duas vezes, muitas vezes em seções diferentes após meses de edições.
Construções prolixas. “A fim de” vira “para”. “Devido ao fato de que” vira “porque”.
Contexto não usado. Informação de fundo da qual nenhum caso de teste depende. Remova e rode seus testes de novo.
Exemplos em excesso. Tente três exemplos em vez de oito e meça.
Formatos verbosos. JSON indentado com chaves longas custa mais que JSON compacto com chaves curtas. Para dados inseridos em um prompt, um formato compacto economiza tokens a cada chamada.
Os três primeiros são mecânicos. O otimizador de prompts do PromptFlowEngine os aplica e verifica que cada frase, requisito, bloco de código e variável do original continua presente, que é a parte tediosa de conferir à mão.
O que não remover
- Requisitos e restrições. Um prompt mais curto que perde uma regra é outro prompt.
- O formato de saída. Removê-lo economiza dez tokens e custa um analisador.
- Delimitadores em volta da entrada. São baratos e evitam injeção.
- Estrutura. Títulos de seção custam alguns tokens e podem melhorar a aderência. Texto excessivamente comprimido, sem artigos e conectivos, fica ambíguo para o modelo e ilegível para a próxima pessoa que o editar.
Otimização da janela de contexto
A janela de contexto é o número máximo de tokens que um modelo consegue considerar de uma vez, entrada e saída juntas. As janelas ficaram enormes, o que mudou o problema de “cabe?” para “deveria estar aí?”.
Mais contexto não é de graça. Além de custo e latência, a qualidade pode cair conforme a entrada cresce: uma passagem relevante cercada por milhares de tokens irrelevantes é mais difícil de usar para o modelo. Envie o que a tarefa precisa.
Recupere em vez de incluir tudo. Busque as passagens relevantes para a pergunta e insira só elas. Veja o prompting para RAG.
A ordem importa em prompts longos. Muitos modelos dão mais atenção ao início e ao fim de uma entrada longa. Ponha os documentos longos primeiro e a pergunta ou as instruções depois, ou repita a instrução principal no final.
Gerencie o histórico da conversa. Resuma turnos antigos, descarte resultados de ferramentas que não são mais necessários e comece uma nova conversa quando o assunto mudar.
Reserve espaço para a resposta. Se a entrada preenche a janela, a saída é cortada. Deixe espaço para a resposta mais longa que você espera.
Divida o trabalho. Uma cadeia de prompts dá a cada etapa só o contexto de que ela precisa.
Use cache
Os principais provedores oferecem cache de prompts: quando o início de um prompt coincide com uma requisição recente, a parte repetida é cobrada a uma tarifa reduzida e processada mais rápido. Para se beneficiar:
- Ponha primeiro o conteúdo estável: prompt de sistema, definições de ferramentas, exemplos, documentos de referência.
- Ponha por último o conteúdo variável: a pergunta do usuário e os dados de cada requisição.
- Evite mudar qualquer coisa na parte estável, como um carimbo de data/hora, entre as chamadas.
O cache torna um prompt longo e fixo muito mais barato. Ele não elimina o custo de qualidade do contexto irrelevante.
Controle o tamanho da saída
- Dê um número: “menos de 100 palavras”, “exatamente 5 itens”.
- Peça só o que precisa: um rótulo, não um rótulo com explicação.
- Defina o máximo de tokens de saída da API como parada rígida.
- Para modelos de raciocínio, reduza o esforço de raciocínio em tarefas simples.
Defina um orçamento e faça-o valer
Decida quantos tokens cada prompt de produção pode usar e verifique isso automaticamente. A barreira de teste de prompts faz um build falhar quando um arquivo de prompt excede seu limite de tokens:
{ "include": ["prompts/**/*.md"], "model": "gpt-4.1", "maxTokens": 1500 }
Isso transforma o crescimento de tokens de algo que você descobre numa fatura em algo que revisa numa pull request. Para o processo mais amplo de melhorar um prompt por medição, veja a otimização de prompts.