Programa
Tokenización es una tarea fundamental cuando se trabaja en tareas de PNL. Consiste en descomponer el texto en unidades más pequeñas, conocidas como tokens, que pueden ser palabras, subpalabras o caracteres.
La tokenización eficiente es crucial para el rendimiento de los modelos lingüísticos, por lo que es un paso esencial en diversas tareas de PNL, como la generación de textos, la traducción y el resumen.
Tiktoken es una biblioteca de tokenización rápida y eficiente desarrollada por OpenAI. Proporciona una solución robusta para convertir texto en tokens y viceversa. Su velocidad y eficacia lo convierten en una opción excelente para desarrolladores y científicos de datos que trabajan con grandes conjuntos de datos y modelos complejos.
Esta guía está pensada para desarrolladores, científicos de datos y cualquiera que esté planeando utilizar Tiktoken y necesite una guía práctica con ejemplos.
Primeros pasos con Tiktoken
Para empezar a utilizar Tiktoken, necesitamos instalarlo en nuestro entorno Python (Tiktoken también está disponible para otros lenguajes de programación). Esto se puede hacer con el siguiente comando:
pip install tiktoken
Puedes consultar el código de la versión Python de código abierto de Tiktoken en el siguiente repositorio de GitHub.
Para importar la biblioteca, ejecutamos
import tiktoken
Modelos de codificación
Los modelos de codificación en Tiktoken determinan las reglas para descomponer el texto en tokens. Estos modelos son cruciales, ya que definen cómo se divide y codifica el texto, lo que influye en la eficacia y precisión de las tareas de procesamiento lingüístico. Los distintos modelos de OpenAI utilizan codificaciones diferentes.
Tiktoken proporciona tres modelos de codificación optimizados para diferentes casos de uso:
- o200k_base: Codificación para el nuevo modelo GPT-4o-Mini.
- cl100k_base: Modelo de codificación para los modelos más recientes de OpenAI, como GPT-4 y GPT-3.5-Turbo.
- p50k_base: Codificación para modelos Codex, estos modelos se utilizan para aplicaciones de código.
- r50k_base: Codificación antigua para diferentes versiones de GPT-3.
Todos estos modelos están disponibles con API de OpenAI. Observa que la API da acceso a muchos más modelos de los que he enumerado aquí. Afortunadamente, la biblioteca Tiktoken proporciona una forma sencilla de comprobar qué codificación debe utilizarse con cada modelo.
Por ejemplo, si necesito saber qué modelo de codificación tiene el texto-incrustado-3-pequeño puedo ejecutar el siguiente comando y obtener la respuesta:
print(tiktoken.encoding_for_model('text-embedding-3-small'))
Obtenemos <Encoding 'cl100k_base'> como salida. Antes de que empecemos a trabajar directamente con Tiktoken, quiero mencionar que OpenAI tiene una aplicación web de tokenización en la que puedes ver cómo se tokenizan diferentes cadenas; puedes acceder a ella aquí. También existe un tokenizador online de terceros, Tiktokenizerque admite modelos que no son de OpenAI.
Codificar texto en tokens
Para codificar texto en tokens utilizando Tiktoken, primero necesitas obtener un objeto de codificación. Hay dos formas de inicializarlo. Primero, puedes hacerlo con el nombre del tokenizador:
encoding = tiktoken.get_encoding("[name of the tokenizer]")
O puedes ejecutar la función encoding_for_model mencionada anteriormente para obtener el codificador de un modelo concreto:
encoding = tiktoken.encoding_for_model("[name of the model]")
Ahora, podemos ejecutar el método encode de nuestro objeto encoding para codificar una cadena. Por ejemplo, podemos codificar la cadena "Me encanta DataCamp" de la siguiente manera: aquí utilizo el codificador cl100k_base:
print(encoding.encode("I love DataCamp"))
Obtenemos [40, 3021, 2956, 34955] como salida.
Decodificar fichas en texto
Para descodificar los tokens de nuevo en texto, podemos utilizar el método .decode() en el objeto encoding.
Descodifiquemos las siguientes fichas [40, 4048, 264, 2763, 505, 2956, 34955]:
print(encoding.decode([40, 4048, 264, 2763, 505, 2956, 34955]))
Los tokens se decodifican en "Aprendo mucho en el DataCamp".
Casos prácticos y consejos
Aparte de la codificación y descodificación, se me ocurren otros dos casos de uso.
Estimación y gestión de costes
Conocer el recuento de tokens antes de enviar una solicitud a la API de OpenAI puede ayudarte a gestionar los costes con eficacia. Dado que la facturación de OpenAI se basa en el número de tokens procesados, pretokenizar tu texto te permite estimar el coste de tu uso de la API. He aquí cómo puedes contar los tokens de tu texto utilizando Tiktoken:
tokens = encoding.encode(text)
print(len(tokens))
Simplemente vemos cuántas fichas tenemos comprobando la longitud de la matriz. Conociendo de antemano el número de fichas, puedes decidir si acortar el texto o ajustar su uso para mantenerte dentro del presupuesto.
Puedes leer más sobre este enfoque en este tutorial sobre Estimar el coste de GPT utilizando la biblioteca tiktoken en Python.
Validación de la longitud de la entrada
Cuando utilizas modelos de OpenAI desde la API, estás limitado por el número máximo de tokens para entradas y salidas. Superar estos límites puede provocar errores o salidas truncadas. Utilizando Tiktoken, puedes validar la longitud de la entrada y asegurarte de que cumple los límites del token.
Conclusión
Tiktoken es una biblioteca de tokenización de código abierto que ofrece velocidad y eficacia adaptadas a los modelos lingüísticos de OpenAI.
Comprender cómo codificar y descodificar texto utilizando Tiktoken, junto con sus diversos modelos de codificación, puede mejorar enormemente tu trabajo con grandes modelos lingüísticos.

