O que são tokens?
Os tokens são os elementos básicos do texto processado pelos modelos da OpenAI. Podem ser tão curtos como um único caráter ou tão longos como uma palavra inteira, consoante o idioma e o contexto. Os espaços, a pontuação e as partes de palavras contribuem para a contagem de tokens. É desta forma que a API segmenta internamente o seu texto antes de gerar uma resposta.
Regras gerais úteis para inglês:
1 token ≈ 4 carateres
1 token ≈ ¾ de uma palavra
100 tokens ≈ 75 palavras
1–2 frases ≈ 30 tokens
1 parágrafo ≈ 100 tokens
~1500 palavras ≈ 2048 tokens
A tokenização varia consoante o modelo e a codificação. Utilize a ferramenta Tokenizer ou tiktoken.encoding_for_model(model) para obter a contagem exata do modelo pretendido.
Exemplos
Seguem-se algumas amostras de textos reais com as respetivas contagens aproximadas de tokens:
A citação de Wayne Gretzky «Falha 100% dos remates que não faz» = 11 tokens
A Carta da OpenAI = 476 tokens
A Declaração de Independência dos EUA = 1695 tokens
Como são calculadas as contagens de tokens
Quando envia texto para a API:
O texto é dividido em tokens.
O modelo processa estes tokens.
A resposta é gerada como uma sequência de tokens e depois novamente convertida em texto.
A utilização de tokens é registada em várias categorias:
Tokens de entrada – tokens do seu pedido.
Tokens de saída – tokens gerados na resposta.
Tokens em cache – tokens reutilizados no histórico da conversa (muitas vezes faturados a uma tarifa reduzida).
Tokens de raciocínio – em alguns modelos avançados, são incluídas internamente «etapas de raciocínio» adicionais antes de ser produzida a resposta final.
Estas contagens aparecem nos metadados da resposta da API e são utilizadas para faturação e acompanhamento da utilização.
Para explorar melhor a tokenização, pode utilizar a nossa ferramenta Tokenizer interativa, que lhe permite calcular o número de tokens e ver como o texto é dividido em tokens.
Em alternativa, se pretender tokenizar texto através de código, utilize o Tiktoken, um tokenizador BPE rápido usado especificamente nos modelos da OpenAI.
Limites de tokens
Cada modelo tem um limite máximo combinado de tokens (entrada + saída). Os atuais modelos de elevada capacidade suportam até centenas de milhares de tokens em contexto, embora os limites práticos possam variar consoante a versão do modelo e o seu nível de utilização.
Se exceder o limite, pode:
Encurtar ou reformular os prompts.
Dividir textos extensos em partes mais pequenas.
Resumir ou pré-processar as entradas antes de as enviar.
Preços dos tokens
A utilização da API é cobrada por token, variando consoante o modelo e o tipo de token: de entrada, de saída ou em cache. Consulte a página de preços da OpenAI para conhecer as tarifas atuais. Alguns modelos de raciocínio podem utilizar internamente mais tokens, mas procuram melhorar a eficiência reduzindo o número de tokens necessários por tarefa concluída.
Os tokens não estão normalizados entre modelos ou fornecedores de IA. Modelos diferentes podem processar ou gerar o mesmo texto utilizando números diferentes de tokens. Por isso, um preço anunciado mais baixo por milhão de tokens não implica necessariamente um custo total inferior.
A extensão visível da resposta também não conta toda a história. Alguns modelos utilizam internamente tokens de raciocínio antes de produzirem uma resposta. Por isso, uma resposta visível mais longa não significa necessariamente que o modelo utilizou mais tokens no total.
Ao comparar modelos, considere o número total de tokens necessários e o custo por resultado bem-sucedido. Os testes de referência podem ser um ponto de partida útil, mas testar os modelos nos seus próprios casos de utilização é a melhor forma de compreender o custo e o desempenho reais.
Explorar os tokens
A API trata as palavras de acordo com o respetivo contexto nos dados do corpus. Os modelos recebem o prompt, convertem a entrada numa lista de tokens, processam o prompt e voltam a converter os tokens previstos nas palavras que vemos na resposta.
Duas palavras que nos parecem idênticas podem ser convertidas em tokens diferentes, consoante a forma como estão estruturadas no texto. Veja como a API gera valores de tokens para a palavra «red» com base no respetivo contexto no texto:
No primeiro exemplo acima, o token «2266» para « red» inclui um espaço no final (nota: estes são IDs de tokens de exemplo, apenas para fins de demonstração).
O token «2296» para « Red» (com um espaço inicial e começando por maiúscula) é diferente do token «2266» para « red», com minúscula.
Quando «Red» é utilizado no início de uma frase, o token gerado não inclui um espaço inicial. O token «7738» é diferente dos dois exemplos anteriores da palavra.
Observações:
Quanto mais provável ou frequente for um token, menor será o número que lhe é atribuído:
O token gerado para o ponto final é o mesmo («13») nas três frases. Isto acontece porque, em termos contextuais, o ponto final é utilizado de forma bastante semelhante em todos os dados do corpus.
O token gerado para «red» varia consoante a sua posição na frase:
Minúscula a meio de uma frase: « red» — (token: «2266»)
Maiúscula a meio de uma frase: « Red» — (token: «2297»)
Maiúscula no início de uma frase: «Red» — (token: «7738»)
