Tokens e Tokenizacao
- ⬜💬 O que é um LLM?(Fundamentos da IA)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
A IA nao le texto como voce. Ela le tokens — pedacos de texto que podem ser uma palavra, parte de uma palavra, ou um unico caracter. Entender tokenizacao muda como voce escreve prompts, estima custos, e compreende os limites dos modelos. Este artigo mostra o algoritmo BPE passo a passo, o impacto de idiomas no custo, e como contar tokens na pratica.
O que e um token?
Um token e a unidade atomica que o modelo processa. O LLM nao ve letras individuais nem palavras inteiras — ve tokens, que sao pedacos de texto definidos por um algoritmo de tokenizacao.
BPE passo a passo
A maioria dos LLMs usa Byte Pair Encoding (BPE) — um algoritmo elegante que constroi o vocabulario de tokens a partir de um corpus de texto. Veja como funciona:
O resultado: palavras comuns em ingles (“the”, “is”, “function”) viram um unico token. Palavras raras ou de outros idiomas sao quebradas em subtokens.
Por que 'morango' vira 3 tokens?
Uma pergunta famosa: por que LLMs erram ao contar letras em palavras? Porque eles nao veem letras — veem tokens:
Impacto do idioma: portugues custa mais
Tokenizadores de LLMs sao treinados em corpus dominado por ingles (~60-70% dos dados). Consequencia:
| Frase | Tokens (EN) | Tokens (PT) | Diferenca |
|---|---|---|---|
| "Hello, how are you?" | ~6 | — | — |
| "Ola, como voce esta?" | — | ~9 | +50% |
| "The cat sat on the mat" | ~7 | — | — |
| "O gato sentou no tapete" | — | ~9 | +29% |
| Documento de 1000 palavras | ~1300 | ~1700 | +30% |
Isso tem impacto direto em tres coisas:
| Impacto | Explicacao |
|---|---|
| Custo | APIs cobram por token. Mesmo conteudo em PT custa ~30% mais que em EN. |
| Context window | 200k tokens cabem ~150k palavras em EN, mas so ~120k palavras em PT. |
| Velocidade | Mais tokens = mais passos de geracao = resposta mais lenta. |
Tokenizer na pratica: tiktoken
import tiktoken
# Carregar tokenizer do GPT-4
enc = tiktoken.get_encoding("cl100k_base")
# Tokenizar texto
text = "Machine learning e incrivel!"
tokens = enc.encode(text)
print(f"Texto: {text}")
print(f"Tokens: {tokens}")
print(f"Total: {len(tokens)} tokens")
# → Texto: Machine learning e incrivel!
# → Tokens: [22137, 6975, 3772, 42618, 48391, 0]
# → Total: 6 tokens
# Decodificar token por token
for t in tokens:
print(f" {t:>6} → '{enc.decode([t])}'")
# → 22137 → 'Machine'
# → 6975 → ' learning'
# → 3772 → ' e'
# → 42618 → 'incr'
# → 48391 → 'ivel'
# → 0 → '!'
# Comparar idiomas
en = enc.encode("The cat sat on the mat")
pt = enc.encode("O gato sentou no tapete")
print(f"EN: {len(en)} tokens, PT: {len(pt)} tokens")
# → EN: 7 tokens, PT: 9 tokenspip install tiktoken. Para Claude, use o tokenizer do Anthropic ou estime ~1.3 tokens/palavra em EN, ~1.7 em PT.Tokens e custo de API
| Modelo | Input (por 1M tokens) | Output (por 1M tokens) | Context window |
|---|---|---|---|
| Claude Sonnet 4 | $3 | $15 | 200k tokens |
| Claude Opus 4 | $15 | $75 | 200k tokens |
| Claude Haiku 3.5 | $0.80 | $4 | 200k tokens |
| GPT-4o | $2.50 | $10 | 128k tokens |
| GPT-4o mini | $0.15 | $0.60 | 128k tokens |
| LLaMA 3.1 405B (self-hosted) | Custo de GPU | Custo de GPU | 128k tokens |
Vocabularios especiais
Alem de tokens de texto, tokenizadores incluem tokens especiais que controlam o comportamento do modelo:
| Token especial | Funcao | Exemplo |
|---|---|---|
| <|endoftext|> | Marca fim de documento no pre-treino | O modelo aprende que apos esse token comeca conteudo novo |
| <|im_start|> / <|im_end|> | Delimitam mensagens no chat format | <|im_start|>user\n Ola<|im_end|> |
| [PAD] | Padding para igualar comprimento de sequencias em batch | Tokens de padding sao ignorados pela attention mask |
| [UNK] | Token desconhecido (raro em BPE moderno) | BPE com bytes como base nunca produz UNK — tudo e representavel |
Perguntas e respostas
❓ Se o modelo nao ve letras, como ele consegue escrever texto correto?
❓ Por que nao usar caracteres individuais como tokens?
❓ Posso trocar o tokenizer de um modelo treinado?
Quiz rápido
4 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito