Programa
Tokenização é uma tarefa fundamental quando você trabalha em tarefas de NLP. Ela envolve a divisão do texto em unidades menores, conhecidas como tokens, que podem ser palavras, subpalavras ou caracteres.
A tokenização eficiente é fundamental para o desempenho dos modelos de linguagem, tornando-a uma etapa essencial em várias tarefas de PLN, como geração de texto, tradução e resumo.
O Tiktoken é uma biblioteca de tokenização rápida e eficiente desenvolvida pela OpenAI. Ele oferece uma solução robusta para a conversão de texto em tokens e vice-versa. Sua velocidade e eficiência fazem dele uma excelente opção para desenvolvedores e cientistas de dados que trabalham com grandes conjuntos de dados e modelos complexos.
Este guia foi criado para desenvolvedores, cientistas de dados e qualquer pessoa que planeje usar o Tiktoken e precise de um guia prático com exemplos.
Como começar a usar o Tiktoken
Para começar a usar o Tiktoken, precisamos instalá-lo em nosso ambiente Python (o Tiktoken também está disponível para outras linguagens de programação). Isso pode ser feito com o seguinte comando:
pip install tiktoken
Você pode conferir o código da versão Python de código aberto do Tiktoken no seguinte repositório do GitHub.
Para importar a biblioteca, executamos:
import tiktoken
Modelos de codificação
Os modelos de codificação no Tiktoken determinam as regras para dividir o texto em tokens. Esses modelos são essenciais, pois definem como o texto é dividido e codificado, afetando a eficiência e a precisão das tarefas de processamento de linguagem. Diferentes modelos de OpenAI usam codificações diferentes.
O Tiktoken oferece três modelos de codificação otimizados para diferentes casos de uso:
- o200k_base: Codificação para o mais novo modelo GPT-4o-Mini.
- cl100k_base: Modelo de codificação para modelos OpenAI mais recentes, como GPT-4 e GPT-3.5-Turbo.
- p50k_base: Codificação para modelos Codex, esses modelos são usados para aplicativos de código.
- r50k_base: Codificação mais antiga para diferentes versões do GPT-3.
Todos esses modelos estão disponíveis com a API da OpenAI. Observe que a API dá acesso a muito mais modelos do que os listados aqui. Felizmente, a biblioteca Tiktoken oferece uma maneira fácil de verificar qual codificação deve ser usada com qual modelo.
Por exemplo, se eu precisar saber qual modelo de codificação o text-embedding-3-small posso executar o seguinte comando e obter a resposta como saída:
print(tiktoken.encoding_for_model('text-embedding-3-small'))
Você recebe <Encoding 'cl100k_base'> como saída. Antes de começarmos a trabalhar diretamente com o Tiktoken, quero mencionar que a OpenAI tem um aplicativo da Web de tokenização no qual você pode ver como diferentes cadeias de caracteres são tokenizadas - você pode acessá-lo aqui. Há também um tokenizador on-line de terceiros, Tiktokenizerque oferece suporte a modelos que não são da OpenAI.
Codificação de texto em tokens
Para codificar texto em tokens usando o Tiktoken, primeiro você precisa obter um objeto de codificação. Há duas maneiras de inicializá-la. Primeiro, você pode fazer isso com o nome do tokenizador:
encoding = tiktoken.get_encoding("[name of the tokenizer]")
Ou você pode executar a função encoding_for_model mencionada anteriormente para obter o codificador de um modelo específico:
encoding = tiktoken.encoding_for_model("[name of the model]")
Agora, podemos executar o método encode do nosso objeto encoding para codificar uma string. Por exemplo, podemos codificar a string "I love DataCamp" da seguinte forma - aqui eu uso o codificador cl100k_base:
print(encoding.encode("I love DataCamp"))
Você recebe [40, 3021, 2956, 34955] como saída.
Decodificação de tokens para texto
Para decodificar os tokens de volta para o texto, podemos usar o método .decode() no objeto encoding.
Vamos decodificar os seguintes tokens [40, 4048, 264, 2763, 505, 2956, 34955]:
print(encoding.decode([40, 4048, 264, 2763, 505, 2956, 34955]))
Os tokens decodificam para "Eu aprendo muito com a DataCamp".
Dicas e casos de uso práticos
Além da codificação e da decodificação, há dois outros casos de uso que posso imaginar.
Estimativa e gerenciamento de custos
Saber a contagem de tokens antes de enviar uma solicitação à API da OpenAI pode ajudar você a gerenciar os custos com eficiência. Como o faturamento da OpenAI é baseado no número de tokens processados, a pré-tokenização do texto permite que você estime o custo do uso da API. Veja como você pode contar os tokens em seu texto usando o Tiktoken:
tokens = encoding.encode(text)
print(len(tokens))
Simplesmente vemos quantos tokens obtivemos verificando o comprimento da matriz. Ao saber o número de tokens com antecedência, você pode decidir se deve encurtar o texto ou ajustar o uso para ficar dentro do orçamento.
Você pode ler mais sobre essa abordagem neste tutorial sobre Estimando o custo da GPT usando a biblioteca tiktoken em Python.
Validação do comprimento da entrada
Ao usar modelos OpenAI da API, você está limitado pelo número máximo de tokens para entradas e saídas. Exceder esses limites pode resultar em erros ou saídas truncadas. Usando o Tiktoken, você pode validar o tamanho da entrada e garantir que ela esteja em conformidade com os limites do token.
Conclusão
O Tiktoken é uma biblioteca de tokenização de código aberto que oferece velocidade e eficiência adaptadas aos modelos de linguagem da OpenAI.
Entender como codificar e decodificar texto usando o Tiktoken, juntamente com seus vários modelos de codificação, pode melhorar muito o trabalho que você faz com grandes modelos de linguagem.
