Uma contagem exata de tokens precisa de codificação e escopo
Dois contadores podem discordar sem estarem com defeito. Antes de comparar os números, confira a codificação e o que cada um conta.
Identifique primeiro a unidade
Palavras ajudam na leitura; bytes UTF-8 medem uma representação do texto. Tokens dependem de uma codificação: não existe uma proporção fixa para todas as palavras ou todos os caracteres.
O ToolRoof conta texto literal com cl100k_base e informa tokens e bytes. A exatidão vale para essa codificação, não para todos os modelos. Escolher outro modelo no seu aplicativo não muda este contador.
O texto visível não é a requisição inteira
Uma requisição de API pode incluir papéis das mensagens, definições de ferramentas, arquivos e estrutura adicional. Contar corretamente um parágrafo não mede todo esse conjunto.
Perto de um limite, use a medição da requisição ou o relatório de uso adequado do provedor. Uma margem fixa não garante cobrir o que ficou de fora.
Referências: OpenAI — Plain-text counts versus complete request token counts
Preserve exatamente o texto medido
Espaços, quebras de linha e a representação dos caracteres fazem parte da entrada. Guarde a versão medida para repetir a comparação.
O contador não normaliza Unicode nem substitui dígitos. O limite é de 20000 unidades UTF-16, não necessariamente esse número de caracteres visíveis ou tokens. Texto malformado é rejeitado, não corrigido silenciosamente.
Exemplo: aparência semelhante, representação diferente
Em cl100k_base, hello world ocupa 11 bytes UTF-8 e 2 tokens. Tamanho em bytes e contagem de tokens são medidas diferentes.
é como U+00E9 gera 1 token e 2 bytes; e seguida de U+0301 parece semelhante, mas gera 2 tokens e 3 bytes. Isso não classifica idiomas como melhores: mostra por que texto exato e codificação devem acompanhar a medição.