Tokens e tokenização: entender o que consome um LLM
Um LLM não lê palavras nem letras: ele lê tokens, fragmentos de texto resultantes de uma segmentação chamada tokenização. Essa unidade invisível determina tudo — quanto seu modelo pode memorizar, a velocidade com que ele responde e por que o mesmo texto em francês « pesa » mais do que em inglês. Este guia explica de forma concreta o que é um token, como funciona a tokenização de um LLM e o que isso muda quando você executa um modelo localmente.
#Por que falar de tokens
Quando você conversa com um LLM local via Ollama ou LM Studio, você digita frases. O modelo, por sua vez, nunca vê suas frases tal como são. Antes mesmo do primeiro cálculo, seu texto é transformado em uma sequência de números, cada um representando um token. Tudo que o modelo faz — entender, gerar — acontece no nível desses tokens, não das palavras.
Entender os tokens não é um detalhe acadêmico. É o que explica três coisas muito concretas: por que um documento “cabe” ou não na janela de contexto, por que seu modelo gera a determinada velocidade (os famosos tokens por segundo) e por que a cobrança de uma API em nuvem ou um limite de contexto sempre é calculado em tokens, nunca em palavras.
#O que é exatamente um token?
Seu ChatGPT privado e gratuito na sua máquina em 1 hora — LM Studio, Ollama, Open WebUI, seus documentos, sem nuvem.
- Espaço online vitalício
- PDF + arquivos
- Atualizações vitalícias
Um token é um fragmento de texto: às vezes uma palavra inteira, muitas vezes uma parte de uma palavra, às vezes um único caractere ou um sinal de pontuação. Não é uma letra nem uma palavra no sentido estrito — é uma unidade estatística escolhida pelo algoritmo de tokenização para representar o texto da forma mais eficiente possível.
A regra empírica mais útil: em inglês, 1 token ≈ 4 caracteres ≈ 0,75 palavra. Ou seja, 100 tokens correspondem a cerca de 75 palavras em inglês. Para o francês, a proporção é claramente menos favorável, voltaremos a isso mais abaixo.
- "chat"
- Uma palavra frequente e curta: muitas vezes apenas 1 token.
- "anticonstitutionnellement"
- Uma palavra rara e longa: dividida em vários tokens (anti / constitution / nelle / ment…).
- " " (espaço)
- O espaço é geralmente colado no início do token seguinte, não isolado.
- "123456"
- Os números são frequentemente divididos algarismo por algarismo ou em pequenos grupos.
- 😀
- Um emoji pode custar vários tokens sozinho.
As palavras muito comuns recebem um único token porque aparecem por toda parte nos dados de treinamento. Palavras raras, técnicas ou em uma língua pouco representada são reconstruídas a partir de pedaços menores — o que as torna mais “caras” em termos de tokens.
#Como um texto é realmente dividido
A maioria dos LLM modernos utiliza uma família de algoritmos chamada BPE (Byte Pair Encoding) ou suas variantes (WordPiece, Unigram). O princípio: começar com caracteres brutos e depois fundir progressivamente os pares de símbolos mais frequentes do corpus de treinamento até obter um vocabulário de tamanho fixo — tipicamente entre 32.000 e 200.000 tokens, conforme o modelo.
- 01Segmentação inicialO texto é reduzido aos seus octetos ou caracteres básicos. Nada é perdido: toda cadeia pode ser representada.
- 02Fusões aprendidasO tokenizer aplica a lista de fusões aprendidas durante o treinamento (por exemplo, « t » + « ion » → « tion »), na ordem de frequência.
- 03Conversão em identificadoresCada token final é substituído pelo seu número no vocabulário. O modelo trabalha apenas com esses inteiros.
Consequência importante: o vocabulário é definido no treinamento e fica fixo. Um modelo treinado principalmente com inglês terá um vocabulário otimizado para o inglês e dividirá o francês em pedaços menores e mais numerosos. Essa é a origem do custo adicional para quem usa o francês.
#Por que o francês custa mais que o inglês
Para conteúdo equivalente, um texto em francês consome normalmente de 15 a 30% mais tokens do que sua tradução em inglês. Em alguns modelos muito centrados em inglês, a diferença pode ultrapassar 50%. Três razões se acumulam.
- Vocabulário desequilibrado
- Os tokenizers são treinados principalmente com inglês: palavras inglesas comuns têm seu token dedicado, não as francesas.
- Acentos e caracteres especiais
- é, è, à, ç, œ… são mais raros no vocabulário e às vezes são divididos em vários tokens (ou até em bytes).
- Morfologia mais rica
- Conjugações, concordâncias e elisões (l', d', qu') multiplicam as formas de uma mesma palavra, que são menos bem cobertas pelo vocabulário.
Exemplo concreto: a frase em inglês “The cat is on the table” ocupa aproximadamente 6 tokens. Sua versão em francês “Le chat est sur la table” costuma ocupar de 7 a 8 tokens, dependendo do modelo. Em um parágrafo inteiro, a diferença se torna significativa — e tem um custo duplo: em espaço na janela de contexto e em tempo de geração.
#Tokens e janela de contexto
A janela de contexto de um modelo é medida em tokens, não em palavras nem em caracteres. Um modelo anunciado com 32.768 tokens de contexto pode 'ver' em um dado momento o equivalente a cerca de 24.000 palavras em inglês — mas apenas cerca de 18.000 a 20.000 palavras em francês, devido ao custo extra de tokenização.
Essa janela inclui tudo: o prompt de sistema, o histórico da conversa, sua mensagem atual, os documentos colados e a resposta que está sendo gerada. Quando o total ultrapassa o limite, o modelo trunca o conteúdo — geralmente o mais antigo — e “esquece” o início da conversa.
- Prompt de sistema
- Contado em cada chamada. Um prompt de sistema prolixo consome continuamente parte do contexto.
- Histórico
- Cada rodada da conversa se acumula. Uma conversa longa acaba saturando a janela.
- Documentos (RAG, copiar e colar)
- Um PDF de 10 páginas pode facilmente representar vários milhares de tokens.
- Resposta gerada
- A saída também ocupa espaço: é preciso reservar espaço para responder.
#Tokens e velocidade local
A velocidade de um LLM é medida em tokens por segundo (tok/s). É a unidade universal dos benchmarks. Há dois momentos a distinguir, que muitas vezes são confundidos.
- Prompt / prefill
- O tempo para 'ler' seu prompt inteiro. Quanto mais tokens de entrada, mais a primeira resposta demora para começar.
- Geração / decodificação
- A velocidade com que os tokens das respostas são emitidos, um por um. É o tok/s que você observa na tela.
Consequência direta para o francês: como o mesmo conteúdo representa mais tokens, seu modelo necessariamente leva mais tempo para processar um prompt em francês e gerar uma resposta em francês de comprimento equivalente. A sensação de que “é mais lento em francês” não é subjetiva — é uma questão de contagem de tokens.
A velocidade de decodificação depende principalmente do modelo e do hardware (parâmetros ativos por token, largura de banda da memória, quantização). Mas, mantendo o mesmo hardware, reduzir o número de tokens de entrada — prompt de sistema mais curto, histórico enxugado — reduz significativamente o tempo até o primeiro token.
#Contar os tokens de um texto sozinho
O melhor jeito de ganhar intuição é medir. Aqui estão três abordagens, da mais simples à mais precisa.
#Fazer uma estimativa aproximada
Para uma estimativa rápida sem instalar nada: divida o número de caracteres por 4 para o inglês, por 3 a 3,5 para o francês. É uma aproximação grosseira, mas suficiente para saber se um documento cabe em uma janela de contexto.
#Contar em Python com o verdadeiro tokenizer
Para uma contagem exata, use o tokenizer do modelo. A biblioteca tokenizers / transformers da Hugging Face carrega o tokenizer real de um modelo com pesos abertos:
Executar este script em seus próprios textos é o exercício mais convincente: você vê com os próprios olhos quais palavras francesas estão fragmentadas e em que medida o inglês é mais compacto.
#Ler a contagem pela API do Ollama
Ollama já mostra os contadores de tokens nas suas respostas. O daemon escuta por padrão em http://localhost:11434; uma chamada à API retorna prompt_eval_count (tokens do prompt) e eval_count (tokens gerados):
Você também encontra eval_duration: divida eval_count pela duração para obter sua taxa real de geração em tokens por segundo, na sua máquina, com sua quantização.
#Economizar tokens sem perder qualidade
Como cada token consome espaço no contexto e afeta a velocidade, alguns hábitos simples fazem uma diferença real, especialmente em francês.
- Prompt de sistema conciso
- Ele é reenviado a cada chamada. Cada frase desnecessária tem um custo a cada rodada.
- Reduzir o histórico
- Resuma ou corte trocas antigas em vez de manter toda a conversa.
- RAG em vez de colar tudo
- Insira apenas os trechos relevantes de um documento, não o documento inteiro.
- Definir o comprimento da saída
- Pedir uma resposta curta gera menos tokens — portanto, a geração é mais rápida.
#Para se aprofundar
Os tokens são o fio que conecta várias noções básicas. Três guias complementam diretamente esse conteúdo: o primeiro detalha a janela de contexto que os tokens preenchem, o segundo explica como a quantização influencia a velocidade medida em tokens por segundo, o terceiro mostra como o transformador trata esses tokens internamente.
Um comentário, um erro ou uma observação? Avise-nos; isso ajuda a melhorar o guia para todos.