01-04-01 — Tokens: como texto vira números
TL;DR
LLMs não leem texto — leem sequências de inteiros. Um token é a menor unidade de texto que o modelo processa, geralmente fragmentos de palavra (subword). "Tokenização" vira 3 tokens no GPT-4. Você paga por token, não por palavra — entender isso impacta diretamente o custo das suas APIs.
Por que tokenização existe
Redes neurais só trabalham com números. O pipeline é simples: texto → tokens → IDs inteiros → embeddings → modelo. A tokenização é a primeira etapa: quebrar texto bruto em unidades gerenciáveis e convertê-las em IDs num vocabulário fixo.
O desafio é equilibrar dois extremos:
- Vocabulário muito grande (word-level): cada palavra vira um token. Problema — palavras raras, nomes próprios, neologismos ficam fora. Vocabulário de centenas de milhares de entradas.
- Vocabulário muito pequeno (character-level): cada letra vira um token. Problema — sequências ficam enormes, o modelo precisa aprender mais etapas para entender contexto.
A solução dominante: subword tokenization.
Os três algoritmos principais
BPE — Byte Pair Encoding
Algoritmo guloso que começa com caracteres individuais e iterativamente une os pares mais frequentes. Resultado: palavras comuns ficam inteiras, palavras raras quebram em pedaços.
Usado por: GPT-2, GPT-3, GPT-4, LLaMA.
WordPiece
Similar ao BPE mas usa critério de likelihood (maximiza probabilidade do corpus) em vez de frequência pura. Fragmentos são prefixados com ## quando continuam uma palavra: tokenização → token ##iza ##ção.
Usado por: BERT, DistilBERT, todos os modelos da família BERT da Microsoft.
SentencePiece
Trata o texto como sequência bruta de bytes (sem pre-tokenização por espaços). Funciona bem com idiomas sem espaço explícito (japonês, chinês) e é agnóstico de linguagem. Implementação de referência do Google.
Usado por: T5, mT5, Gemma, muitos modelos multilíngues.
BPE é o mais comum em LLMs generativos. WordPiece domina modelos de entendimento (BERT-like). SentencePiece quando há requisito multilíngue forte.
Token ≠ palavra: exemplos práticos
A ferramenta tiktoken da OpenAI permite inspecionar a tokenização do GPT-4 (cl100k_base, vocabulário de 100k tokens):
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
exemplos = [
"Tokenização",
"Hello, world!",
"ChatGPT é incrível",
"Microsoft Azure OpenAI Service",
"1234567890",
]
for texto in exemplos:
tokens = enc.encode(texto)
print(f"{texto!r:40s} → {len(tokens)} tokens: {tokens}")
Saída aproximada:
'Tokenização' → 4 tokens: [5257, 697, 2296, 75]
'Hello, world!' → 4 tokens: [9906, 11, 1917, 0]
'ChatGPT é incrível' → 6 tokens: [16047, 38, 2898, 374, 17193, 9776]
'Microsoft Azure OpenAI Service' → 5 tokens: [13724, 18780, 5377, 15836, 5475]
'1234567890' → 4 tokens: [4513, 3894, 3080, 1954]
Texto em português gera mais tokens por palavra que inglês — em média 30-40% a mais. Palavras com acentos e cedilhas quebram em mais fragmentos. Isso impacta diretamente o custo das suas chamadas de API.
Regra prática de estimativa
| Idioma | Relação tokens/palavras | Tokens por página A4 |
|---|---|---|
| Inglês | ~0,75 tokens/char → ~1,3 tokens/palavra | ~400–500 |
| Português | ~0,9 tokens/char → ~1,7 tokens/palavra | ~550–700 |
| Código (Python) | ~0,3 tokens/char | ~300–400 |
Custo em tokens — pricing real (OpenAI, abr/2026)
| Modelo | Input ($/1M tokens) | Output ($/1M tokens) |
|---|---|---|
| GPT-4o | $2,50 | $10,00 |
| GPT-4o mini | $0,15 | $0,60 |
| GPT-4.1 | $2,00 | $8,00 |
| GPT-4.1 mini | $0,40 | $1,60 |
No Azure OpenAI Service, o pricing é idêntico ao OpenAI direto para os mesmos modelos, mas você tem controle de rede (VNet), compliance e SLA corporativo. Para projetos da Impar com clientes como Vale ou TIM, usar Azure OpenAI é a rota correta — não a API direta da OpenAI.
O conceito de context window
Cada modelo tem um limite máximo de tokens que consegue processar numa única chamada (input + output somados). Esse limite é a context window:
- GPT-4o: 128k tokens (~100 páginas de texto)
- Claude 3.7: 200k tokens
- Gemini 1.5 Pro: 1M tokens
Ultrapassar o limite resulta em erro. Gerenciar context window é um dos principais desafios de engenharia ao construir aplicações com LLMs.
Tokens são a entrada do modelo, mas o modelo não os processa como inteiros — converte cada ID num vetor denso (embedding). É exatamente isso que o próximo tópico explica.
Como isso se conecta
- 01-04-02 Embeddings — o que acontece depois da tokenização: IDs viram vetores
- 01-02-03 CNNs, RNNs, Transformers — a arquitetura que processa esses vetores
- 01-05-01 Glossário — definição formal de "context window" e "parameters"