Pular para o conteúdo
Categoria: Inteligência Artificial13 min de leitura

O que são tokens em IA? Tokenização explicada

Por Schematize Blog ·

Entenda como o texto vira tokens, por que isso define custo e limite de contexto nos modelos de IA, e como o algoritmo BPE faz essa quebra acontecer.

Quando você envia uma frase para um modelo de linguagem, ele não enxerga letras nem palavras da forma que você escreveu. Ele enxerga tokens: pequenos pedaços de texto convertidos em números. Entender o que é um token muda completamente a forma como você raciocina sobre custo, limite de contexto e até por que a IA às vezes erra ao contar letras.

O que é um token, afinal

Um token é a menor unidade de texto que o modelo processa de uma vez. Pode ser uma palavra inteira, um pedaço de palavra, um sinal de pontuação ou até um espaço. A regra prática para o inglês é que 1 token ≈ 4 caracteres ou cerca de 0,75 palavra. Em português, a proporção costuma ser um pouco menos eficiente, porque muitos tokenizadores foram otimizados primariamente para o inglês.

Veja como uma frase simples poderia ser fatiada:

Texto:  "Tokenização é fascinante!"
Tokens: ["Token", "ização", " é", " fasc", "inante", "!"]

Repare que "Tokenização" não virou um único token. Ela foi quebrada em pedaços menores, e o espaço antes de "é" ficou grudado no token seguinte. Isso não é um detalhe aleatório: é resultado direto do algoritmo que aprende quais pedaços de texto valem a pena agrupar.

Token não é palavra (e essa diferença importa)

A maior fonte de confusão é tratar token como sinônimo de palavra. Não é. Uma palavra comum em inglês costuma ser um token; uma palavra rara, um nome próprio ou um termo técnico pode virar três, quatro ou mais tokens. Em português, com nossa riqueza de conjugações, plurais e acentos, a fragmentação tende a ser maior. Quando você lê "modelo de 128 mil tokens de contexto", isso não significa 128 mil palavras — significa algo em torno de 90 a 100 mil palavras em inglês, e menos em português. Internalizar essa diferença evita estimativas erradas de custo e de quanto texto cabe em uma chamada.

Por que não usar palavras ou letras direto

Existem dois extremos ingênuos para representar texto, e os dois têm problemas sérios.

    A solução que venceu fica no meio do caminho: a tokenização por subpalavras (subword tokenization). Palavras comuns viram um token só; palavras raras são quebradas em pedaços reutilizáveis. Assim o vocabulário fica controlado (tipicamente de 30 mil a 100 mil tokens) e nenhuma palavra é genuinamente "desconhecida" — no pior caso ela é montada caractere a caractere.

    Essa decisão tem uma elegância de engenharia: ela equilibra dois recursos escassos ao mesmo tempo. O vocabulário não pode ser grande demais (cada token extra custa memória e parâmetros no modelo), mas as sequências também não podem ser longas demais (o custo de processamento cresce com o número de tokens). A tokenização por subpalavras encontra o ponto ótimo entre os dois.

    BPE: o algoritmo por trás da maioria dos tokenizadores

    O método mais influente para criar esses subtokens é o Byte Pair Encoding (BPE). Ele foi adaptado para tradução automática neural por Sennrich, Haddow e Birch (2016) justamente para lidar com palavras raras, e hoje é a base dos tokenizadores de boa parte dos LLMs modernos.

    A intuição é simples e quase mecânica:

      Na prática, pares comuníssimos como e + r viram cedo um token er, e depois er + a pode virar era. Pedaços que aparecem muito acabam sendo aprendidos como unidades; pedaços raros permanecem fragmentados. É por isso que "ização" virou um token só no exemplo anterior: esse sufixo aparece em tantas palavras que o BPE achou econômico tratá-lo como uma peça única.

      # Pseudocódigo simplificado do treino de BPE
      vocab = set(todos_os_caracteres(corpus))
      for _ in range(numero_de_fusoes):
          pares = contar_pares_adjacentes(corpus)
          melhor = max(pares, key=pares.get)   # par mais frequente
          corpus = fundir(corpus, melhor)      # trata o par como 1 símbolo
          vocab.add(melhor)

      Modelos mais recentes usam uma variante chamada byte-level BPE, que opera sobre os bytes do texto em vez dos caracteres. A vantagem é cobrir qualquer caractere Unicode — emojis, ideogramas, acentos — sem nunca cair em um token "desconhecido".

      Treino versus uso: dois momentos distintos

      Vale separar duas coisas que costumam ser confundidas. O processo descrito acima — contar pares e fundir os mais frequentes — acontece uma única vez, durante a criação do tokenizador, sobre um corpus gigantesco. O resultado é uma tabela fixa de fusões (o vocabulário). Quando você usa o modelo no dia a dia, o tokenizador apenas aplica essas regras já aprendidas para fatiar o seu texto, de forma determinística e rápida. Ou seja: o vocabulário é congelado no treino; o uso é só consulta. Por isso o mesmo texto sempre gera exatamente os mesmos tokens para um dado modelo.

      Outros algoritmos que você vai encontrar

      O BPE domina, mas não é o único. Vale conhecer os nomes:

        Para o uso prático, o que importa é entender o princípio compartilhado: subpalavras frequentes viram tokens; o raro é fragmentado.

        Tokens, custo e a fatura no fim do mês

        Aqui está a parte que dói no bolso: você paga por token, não por palavra ou requisição. Os provedores cobram pela soma dos tokens de entrada (seu prompt) e de saída (a resposta gerada), geralmente com preços diferentes para cada um. Se você está dando os primeiros passos com chamadas de API, vale ler API da OpenAI na prática: primeiros passos para devs, onde o consumo de tokens aparece direto na resposta de cada chamada.

        Algumas consequências práticas dessa contagem:

          Estimar tokens antes de enviar evita surpresas. Bibliotecas oficiais de tokenização (como a tiktoken) permitem contar exatamente quantos tokens um texto vai gerar para um modelo específico.

          # Contando tokens antes de enviar, com tiktoken
          import tiktoken
          
          enc = tiktoken.get_encoding("cl100k_base")
          texto = "Quantos tokens isto gera em português?"
          tokens = enc.encode(texto)
          print(len(tokens))          # quantidade de tokens
          print(tokens[:5])           # os primeiros IDs numéricos

          O efeito do cache de prompt

          Um ponto que muda a conta na prática: vários provedores oferecem cache de prompt. Se você reenvia um trecho longo e idêntico no começo de cada chamada — instruções de sistema, documentação, exemplos — esse prefixo pode ser cacheado e cobrado a uma fração do preço nas chamadas seguintes. Estruturar o prompt para colocar a parte estável no início e a parte variável no fim é, portanto, uma otimização de custo real, não só de organização. Pensar em tokens é também pensar em onde eles aparecem.

          A relação direta com a janela de contexto

          Todo modelo tem um teto de quantos tokens consegue considerar de uma vez — entrada mais saída somadas. Esse teto é a janela de contexto, e ela é medida em tokens, nunca em palavras ou páginas.

          Isso significa que tokenização e contexto são dois lados da mesma moeda. Um documento que "cabe" depende inteiramente de quantos tokens ele gera. Um PDF cheio de tabelas e números pode consumir muito mais tokens do que sua contagem de palavras sugere, porque dígitos e símbolos costumam fragmentar bastante. Foi a capacidade de aprender a partir de janelas grandes que tornou possível o aprendizado "in-context" descrito por Brown, Mann, Ryder, Subbiah, Kaplan et al. (2020), em que o modelo resolve tarefas só vendo exemplos no próprio prompt.

          Na prática, isso tem uma implicação direta para quem constrói sistemas: quando você monta um prompt com documentos recuperados (RAG), precisa orçar tokens. Cada documento injetado come parte da janela, e o espaço que sobra para a resposta diminui. Estourar a janela não dá um erro "elegante" — ou a chamada falha, ou o conteúdo mais antigo é truncado silenciosamente, o que pode degradar a qualidade sem aviso.

          Onde a tokenização se encaixa na arquitetura

          Tokenizar é o primeiro passo de todo o pipeline. Depois que o texto vira uma lista de IDs de tokens, cada ID é convertido em um vetor — um embedding — que carrega o significado daquele token em forma numérica. Só então esses vetores entram nas camadas de atenção da arquitetura Transformer, o desenho que tornou os modelos atuais viáveis.

          O fluxo completo, de forma resumida:

          "Olá mundo"  →  [tokenizador]  →  [3923, 1991]  →  [embeddings]  →  [Transformer]  →  saída
             texto          fatiamento        IDs numéricos    vetores          atenção          tokens

          Vale lembrar que a tokenização é também a última etapa: o modelo gera um token por vez, e o tokenizador é usado de novo, em sentido inverso, para transformar IDs de volta em texto legível. Tudo isso acontece dentro de um LLM (Large Language Model), que orquestra essas etapas para você.

          Por que o modelo gera um token por vez

          Esse detalhe explica várias características práticas dos LLMs. Como a geração é autorregressiva — cada novo token depende de todos os anteriores — a resposta é produzida sequencialmente, o que é o motivo de você ver o texto aparecer em fluxo (streaming), palavra por palavra. Também é por isso que respostas mais longas levam proporcionalmente mais tempo e custam mais: cada token de saída é uma passada completa pelo modelo. Entender que a saída nasce token a token ajuda a calibrar expectativas de latência e a decidir quando vale a pena pedir respostas mais curtas.

          Por que a IA erra ao contar letras

          Uma curiosidade reveladora: peça a um modelo para contar quantas vezes a letra "r" aparece em "morredouro" e ele pode tropeçar. O motivo é tokenização. O modelo não vê letras individuais — ele vê tokens como mor, red, ouro. Contar caracteres exige "desmontar" algo que, para o modelo, já chegou empacotado. Não é falta de inteligência; é uma consequência direta de como o texto foi fatiado na entrada.

          O mesmo raciocínio explica por que modelos às vezes erram aritmética com números grandes: "1234567" pode virar dois ou três tokens, e a fronteira entre eles nem sempre respeita as casas decimais. Quando o número é fatiado em pedaços que não correspondem a casas, o modelo perde a estrutura posicional que a aritmética exige. É também por isso que pedir o raciocínio "passo a passo" ajuda: ao escrever os dígitos separadamente, o modelo recria uma representação mais favorável à conta.

          Boas práticas para devs

          Sabendo como tokens funcionam, dá para escrever sistemas mais baratos e previsíveis:

            Perguntas frequentes

            Quantas palavras cabem em uma janela de 128 mil tokens? Em inglês, algo em torno de 90 a 100 mil palavras. Em português, menos, porque a fragmentação é maior. Sempre estime com folga.

            O mesmo texto gera o mesmo número de tokens em modelos diferentes? Não necessariamente. Cada família de modelos pode usar um tokenizador distinto, com vocabulário próprio. Conte os tokens com o tokenizador específico do modelo que você vai usar.

            Por que minha conta de API subiu sem eu mudar o prompt? Em chats, o histórico é reenviado a cada turno. Conforme a conversa cresce, cada nova mensagem carrega todo o passado, e os tokens de entrada acumulam.

            Espaços e pontuação contam como token? Sim. Espaços costumam grudar no token seguinte, e cada sinal de pontuação geralmente é um token. Formatação verbosa consome tokens reais.

            Como reduzir custo sem perder qualidade? Enxugue instruções redundantes, use cache de prefixo, limite o tamanho da saída e, quando possível, escolha um modelo menor para tarefas simples. Medir antes de enviar é o hábito mais valioso.

            Conclusão

            Tokens são a moeda real dos modelos de linguagem: a unidade que define custo, que preenche a janela de contexto e que explica peculiaridades como erros de contagem de letras. O algoritmo BPE encontrou um equilíbrio elegante entre vocabulários pequenos e a capacidade de representar qualquer palavra, fragmentando o raro e agrupando o frequente. Para quem constrói com IA, pensar em tokens deixa de ser um detalhe técnico e vira uma ferramenta concreta de engenharia: controlar tokens é controlar custo, latência e o quanto de informação o modelo realmente consegue enxergar.

            Referências

              Leituras relacionadas

              Nenhum comentário ainda

              Seja o primeiro a comentar.

              Deixe seu comentário

              Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

              Entrar com Canverly