BrunoP.Blog

Por que a IA cobra por 'pedaço de palavra': construí um tokenizador no navegador pra você ver

Abri a fatura da API de IA, levei um susto e percebi que quase ninguém entende o que é um 'token' — a unidade que você paga. Cola um texto qualquer e veja, ao vivo, o modelo picar suas palavras em pedaços coloridos.

Esses dias eu abri a fatura mensal da API de IA que uso em alguns projetos e levei um susto honesto. Não era um valor absurdo, mas tinha crescido bem mais do que eu esperava — e a conta vinha discriminada numa unidade que, sejamos sinceros, quase ninguém entende de verdade: tokens. “Você usou 4,2 milhões de tokens de entrada e 1,1 milhão de saída.” Tá. E o que é um token, afinal?

Fui atrás de explicar isso pra um cliente numa reunião e percebi que faltava a parte visual. A gente fala “token é um pedaço de palavra” e todo mundo balança a cabeça, mas ninguém acontecer. Então fiz o que eu sempre faço quando uma ideia não sai da cabeça: abri o editor e construí a coisa. Tem um tokenizador rodando logo aqui embaixo, no seu navegador, sem servidor nenhum. Cola um texto e veja, ao vivo, o modelo picar suas palavras em pedacinhos coloridos. Mas antes deixa eu te contar por que isso importa pro seu bolso.

O modelo não lê letras. Nem palavras. Lê tokens.

Quando você manda “Bom dia, tudo bem?” pra uma IA, o modelo não enxerga aquilo como letras nem como palavras inteiras. Antes de qualquer coisa, um programinha chamado tokenizador pica o texto numa sequência de pedaços — os tokens — e cada pedaço vira um número. O modelo só conversa com números.

A regra de bolso que vale a pena guardar: em inglês, 1 token ≈ 4 caracteres ≈ ~¾ de uma palavra. Palavras comuns (“the”, “dog”, “casa”) costumam ser um único token. Palavras raras, nomes próprios e termos técnicos são quebrados em vários pedaços. E é exatamente nessa quebra que mora a parte que mexe com a sua fatura.

Por que “coração” custa mais que “heart”

Aqui está a sacada que pega muita gente de surpresa: o português, e principalmente os acentos, custam mais caro. Os tokenizadores dos grandes modelos foram treinados majoritariamente em inglês, então o inglês “cabe” melhor: cada token aproveita mais letras. Quando você escreve com acentos, cedilha e til, o modelo frequentemente precisa de mais tokens pra representar a mesma ideia.

  • Acentos. Uma letra como “ç” ou “ã” pode, internamente, virar mais de um pedaço — porque o texto é processado em bytes UTF-8, e esses caracteres ocupam mais de um byte.
  • Emojis. Aquele 🚀 fofo que você colou no e-mail pode valer 2, 3 tokens sozinho. Emoji é caro.
  • Código e URLs. Cheios de símbolos, indentação e nomes esquisitos, costumam fragmentar bastante — o que explica por que pedir pra IA “ler” um arquivo grande de código pesa tanto.
  • Idioma. O mesmo texto traduzido pode ter contagens bem diferentes. Português e espanhol quase sempre gastam mais tokens que o inglês equivalente.

Ou seja: a sua conta de IA tem um leve “imposto de idioma” embutido. Não dá pra fugir totalmente dele, mas dá pra enxergar — e quando você enxerga, começa a tomar decisões melhores sobre prompts, contexto e o que vale ou não mandar pro modelo.

Token não é palavra, não é letra, não é sílaba. É um pedaço estatístico que o modelo aprendeu a reconhecer porque ele aparece muito junto. “ção” vira um pedaço porque o português está cheio dele. “ing” vira um pedaço em inglês pelo mesmo motivo.

Como a máquina decide onde cortar: BPE

A técnica mais comum se chama BPE (Byte Pair Encoding), e a ideia é deliciosamente simples. Você começa tratando cada caractere como um pedaço separado. Depois olha qual par de pedaços vizinhos aparece com mais frequência em todo o texto de treino e funde os dois num pedaço só. Repete isso milhares de vezes.

No fim, os pedaços que aparecem muito (“ção”, “mente”, “the”) viram tokens únicos, e os raros continuam fragmentados em letras. É por isso que palavra comum custa 1 token e palavra rara custa vários: o vocabulário do modelo “decorou” os pedaços frequentes e improvisa o resto letra por letra.

O tokenizador que montei aqui embaixo é uma versão simplificada e didática desse processo: ele tem um dicionário pequeno de fusões comuns do português e do inglês embutido, e quando não reconhece um pedaço, ele cai pra quebra por caractere. Não é o tokenizador exato da OpenAI ou da Anthropic — cada modelo tem o seu — mas a intuição que ele te dá é a mesma: você vê na hora onde os cortes acontecem e por que acento e emoji custam caro.

Minha visão honesta

Depois daquela fatura, mudei algumas coisas em como construo features de IA pros clientes. Comecei a medir tokens antes de mandar pra produção, a cortar contexto que não agregava nada, e a explicar pro cliente, com número na mão, por que “mandar o PDF inteiro toda vez” sai caro. Não é sobre economizar centavos — é sobre entender a unidade econômica do produto que você está construindo. Quem trata token como detalhe técnico um dia toma um susto na fatura. Quem trata como decisão de produto dorme tranquilo.

Chega de teoria. Cola um texto aí embaixo — um e-mail seu, um trecho de código, uma frase cheia de acento — e veja a mágica (e o custo) acontecer 👇

tokenizer.js

Tokenizador didático em JS puro, 100% no seu navegador — nenhum texto sai daqui. As contagens são aproximadas (cada modelo real usa o seu próprio tokenizador).

Brincou com os exemplos? Reparou como o emoji estoura a contagem e como o trecho de código fragmenta tudo? É mais ou menos assim que eu trabalho: pego uma dúvida real — nesse caso, “por que minha conta de IA subiu?” — e transformo numa coisinha que você pode tocar e entender em trinta segundos. Se você tem um produto com IA na jogada, ou só quer entender quanto aquela ideia genial vai custar pra rodar de verdade, eu adoraria trocar uma ideia.

Vamos conversar sobre seu projeto de IA