Visão geral
Os tokens são as unidades que os modelos da OpenAI utilizam para processar texto. Um token pode representar um caráter, parte de uma palavra, uma palavra inteira ou pontuação. Os espaços também afetam a forma como o texto é dividido em tokens.
Uma contagem de tokens não é igual a uma contagem de palavras. O mesmo texto pode produzir contagens de tokens diferentes consoante o modelo, a respetiva codificação e a língua.
Compreender como o texto se transforma em tokens
Quando envia texto para um modelo:
O texto é dividido em tokens.
O modelo processa esses tokens.
O modelo gera tokens de saída. Estes podem incluir o texto que recebe e, nos modelos de raciocínio, tokens de raciocínio internos que não são apresentados como texto da resposta.
Utilizar estimativas aproximadas para texto em inglês
Estas estimativas podem ajudar a avaliar o tamanho de um texto em inglês:
1 token corresponde aproximadamente a 4 carateres.
1 token corresponde aproximadamente a três quartos de uma palavra.
100 tokens correspondem aproximadamente a 75 palavras.
São estimativas, não contagens exatas. O comprimento das frases e dos parágrafos varia, e outras línguas podem apresentar relações diferentes entre carateres, palavras e tokens.
Ter em conta os espaços e as maiúsculas
Uma palavra pode ser dividida em tokens diferentes consoante a grafia, o uso de maiúsculas e o texto circundante.
Por exemplo, vermelho, Vermelho e vermelho não contêm texto idêntico: o último exemplo inclui um espaço inicial. Uma codificação pode representá-los de formas diferentes.
Os IDs dos tokens também dependem da codificação. Não assuma que um ID de token de exemplo se aplica a todos os modelos.
Distinguir tokens de entrada e de saída
| Categoria | O que descreve |
| Tokens de entrada | Tokens fornecidos ao modelo num pedido. Também são chamados tokens de prompt. |
| Tokens de saída | Tokens gerados pelo modelo. A API Chat Completions chama-lhes tokens de conclusão. |
| Tokens de entrada em cache | Tokens de entrada reutilizados através da cache de prompts. O preço pode ser diferente do aplicado aos tokens de entrada que não estão em cache. |
| Tokens de raciocínio | Tokens que um modelo de raciocínio utiliza internamente antes de produzir a resposta visível. |
Os tokens de raciocínio não são visíveis como texto da resposta, mas contam para a utilização da saída e são faturados como tokens de saída.
Por isso, uma resposta visível curta pode utilizar mais tokens do que o texto apresentado sugere.
Contar tokens antes de enviar um pedido
Contar tokens em texto simples
Utilize o Tokenizador para ver como o texto é dividido em tokens.
Para tokenizar texto simples de forma programática, utilize o tiktoken. Selecione a codificação do modelo pretendido, por exemplo, com tiktoken.encoding_for_model(model).
Uma contagem de tokens de texto simples não inclui necessariamente todos os tokens de um pedido à API. A estrutura das mensagens, as ferramentas, os esquemas, as imagens e os ficheiros podem afetar a contagem total da entrada.
Contar uma entrada completa da API Responses
Para uma entrada completa da API Responses, utilize a API de contagem de tokens de entrada.
Aceita formatos de entrada da API Responses, incluindo mensagens, imagens, ficheiros, ferramentas e conversas. A contagem inclui tokens de formatação utilizados na estrutura do pedido, como funções e limites das mensagens.
Uma contagem de entrada não permite prever quantos tokens de saída o modelo irá gerar.
Verificar a utilização real de tokens
Após um pedido, consulte as respetivas informações de utilização. Os nomes dos campos variam consoante o endpoint:
A API Chat Completions apresenta prompt_tokens, completion_tokens e total_tokens.
A API Responses apresenta input_tokens, output_tokens e total_tokens.
Também pode consultar a atividade ao longo do tempo no painel de utilização. Para obter instruções, incluindo sobre a utilização em streaming, consulte: Consultar a utilização e os custos da API.
Respeitar os limites do modelo
Consulte a documentação do modelo para conhecer a respetiva janela de contexto e o limite máximo de saída. Estes limites podem variar entre modelos.
A janela de contexto limita os tokens que um modelo pode processar num pedido. Os modelos também têm um limite de saída. Nos modelos de raciocínio, reserve espaço tanto para os tokens de raciocínio como para a resposta visível.
Se a entrada for demasiado grande, pode:
Encurtar ou reformular o prompt.
Remover contexto desnecessário ou repetido.
Dividir entradas grandes em partes menores.
Resumir ou pré-processar o texto antes de o enviar.
Utilize a definição de tokens de saída suportada pelo endpoint e pelo modelo. A API Chat Completions utiliza max_completion_tokens; a API Responses utiliza max_output_tokens.
Estes limites de tamanho dos pedidos são distintos dos limites de taxa da API e dos limites mensais de utilização ou despesas. Consulte a documentação dos modelos relativa ao modelo que utiliza.
Compreender os preços dos tokens
Nos preços da API baseados em tokens, a tarifa depende do modelo e da categoria do token. Os tokens de entrada, de entrada em cache e de saída podem ter preços diferentes. Outras capacidades da API podem utilizar unidades de faturação diferentes.
Consulte as tarifas atuais na página de preços da API.
Ao comparar modelos, tenha em conta o total de tokens e o custo necessários para concluir a tarefa. Um preço inferior por milhão de tokens não implica necessariamente um custo total inferior: os modelos podem tokenizar o mesmo texto de forma diferente e gerar quantidades diferentes de saída ou raciocínio.
Teste tarefas representativas em vez de comparar apenas o comprimento da resposta visível.
Ter em conta várias conclusões
Quando um endpoint e um modelo permitem gerar várias conclusões, essas conclusões adicionais também utilizam tokens.
Na API Chat Completions, definir n acima de 1 gera várias opções. São cobrados os tokens gerados em todas essas opções.
Na API Completions antiga, best_of pode gerar candidatos que não são todos devolvidos. Por exemplo, best_of = 3 pode gerar até 3 × max_tokens tokens de conclusão entre os candidatos.
Estes parâmetros são específicos do endpoint. Não assuma que n ou best_of são suportados por outra API ou outro modelo.
