🧠FFVAcademy
🔤

Tokens e Tokenizacao

7 min de leitura·+40 XP
Pré-requisitos (0/1)0%

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.

🗺️ Tokenização na prática — 'Machine learning é incrível!'
TOKENS
Machine (t1)
learning (t2)
e (t3)
incr (t4)
ivel (t5)
! (t6)
6 tokens para 4 palavras
IDs NUMÉRICOS
22137
6975
3772
42618
48391
0
cada token = 1 inteiro
OBSERVAÇÕES
"Machine" = 1 token (inglês eficiente)
" learning" inclui o espaço
"incrível" = 2 tokens (PT fragmentado)
Pontuação = token separado
espaço faz parte do token
💡
O espaco antes de “learning” faz parte do token. Tokenizadores BPE tratam espacos como parte da sequencia — “ learning” (com espaco) e “learning” (sem espaco) sao tokens diferentes.

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:

🗺️ BPE — construção iterativa do vocabulário
🔤Passo 0: caracteres individuaisCorpus "aba abab bab" → vocab {a, b, espaço}
🔍Passo 1: par mais frequente"a"+"b" aparece 5× → funde em novo token "ab"
🔗Passo N: repetir até o tamanho alvoFunde pares frequentes: "ab"+"a" → "aba", etc.
Vocabulário final (modelos reais)GPT-2: 50k · GPT-4: 100k · LLaMA 3: 128k · Claude: ~100k tokens

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:

🗺️ Humano vs modelo — 'Quantos r tem em strawberry?'
O QUE O HUMANO VÊ
s · t · r · a · w · b · e · r · r · y
Conta 3 letras "r" sem esforço
Acesso direto a cada caractere
"morango" → m-o-r-a-n-g-o
O QUE O MODELO VÊ
[str] [aw] [berry] — 3 tokens
"str" é unidade atômica: não sabe que tem "r"
Sem acesso direto a letras individuais
"morango" → [mor][ango] (2 tokens)
⚠️
Essa e uma limitacao fundamental de LLMs baseados em tokens BPE. Tarefas que exigem raciocinio no nivel de caracteres individuais (contar letras, palindromos, anagramas) sao inerentemente dificeis porque a granularidade do modelo e o token, nao a letra.

Impacto do idioma: portugues custa mais

Tokenizadores de LLMs sao treinados em corpus dominado por ingles (~60-70% dos dados). Consequencia:

FraseTokens (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:

ImpactoExplicacao
CustoAPIs cobram por token. Mesmo conteudo em PT custa ~30% mais que em EN.
Context window200k tokens cabem ~150k palavras em EN, mas so ~120k palavras em PT.
VelocidadeMais tokens = mais passos de geracao = resposta mais lenta.

Tokenizer na pratica: tiktoken

python
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 tokens
💡
Instalar: pip 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

ModeloInput (por 1M tokens)Output (por 1M tokens)Context window
Claude Sonnet 4$3$15200k tokens
Claude Opus 4$15$75200k tokens
Claude Haiku 3.5$0.80$4200k tokens
GPT-4o$2.50$10128k tokens
GPT-4o mini$0.15$0.60128k tokens
LLaMA 3.1 405B (self-hosted)Custo de GPUCusto de GPU128k tokens
🗺️ Cálculo de custo real — chatbot de atendimento
COMPOSIÇÃO DO PROMPT
System prompt: 500 tokens (fixo)
Histórico: 2000 tokens (média)
Mensagem do usuário: 200 tokens
Resposta do modelo: 800 tokens
Total input: 2700 · output: 800
Claude Sonnet 4: $0.02/request
50K REQUESTS/DIA
Input: 2700 × $3/1M = $0.0081
Output: 800 × $15/1M = $0.012
Por request: ~$0.02
Por dia: 50k × $0.02 = $1.000
Por mês: ~$30.000
escala rápido
OTIMIZAÇÕES
Prompt caching: -40% input
Resumir histórico: -60% input
Haiku p/ triagem + Sonnet: -70%
Resultado: ~$9.000/mês (−70%)
tokens × preço × volume = custo

Vocabularios especiais

Alem de tokens de texto, tokenizadores incluem tokens especiais que controlam o comportamento do modelo:

Token especialFuncaoExemplo
<|endoftext|>Marca fim de documento no pre-treinoO 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 batchTokens 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?

Porque o modelo aprende que o token “learning” e frequentemente seguido por tokens como “ is”, “ algorithms”, etc. Ele opera no nivel de tokens, nao de letras, mas como tokens correspondem a pedacos de palavras/palavras inteiras, o texto gerado e gramaticalmente correto na maioria das vezes. Onde ele falha: tarefas de nivel sub-token (soletrar, contar letras, rimas exatas).

Por que nao usar caracteres individuais como tokens?

Sequencias ficam muito longas. “Hello world” = 11 tokens (caracteres) vs 2 tokens (BPE). Self-attention e O(n2) — dobrar o comprimento quadruplica o custo. BPE e um compromisso: vocabulario grande o suficiente para que palavras comuns sejam 1 token, mas pequeno o suficiente para que o embedding table caiba na memoria.

Posso trocar o tokenizer de um modelo treinado?

Nao sem retreinar. Os embeddings (vetores que representam cada token) sao aprendidos durante o treino. Trocar o tokenizer muda os IDs → todos os embeddings ficam errados. Por isso cada familia de modelos tem seu proprio tokenizer: GPT-4 usa cl100k_base, LLaMA 3 usa SentencePiece com 128k tokens, etc.
O que voce aprendeu: tokens sao a unidade atomica que LLMs processam. BPE constroi vocabularios fundindo pares frequentes. Portugues usa ~30% mais tokens que ingles para o mesmo conteudo (impacto em custo e context window). Voce sabe usar tiktoken para contar tokens e calcular custo de API. Proximo passo: entender o que o modelo faz com esses tokens — a arquitetura Transformer.
🧩

Quiz rápido

4 perguntas · Acerte tudo e ganhe o badge 🎯 Gabarito

Continue lendo