Concepto de tokens en OpenAI

Daniel Avila
3 min readDec 5, 2022

--

En este artículo revisaremos que es un token y como se clasifican los precios de cada modelo en Openai

Tokens

Los tokens son utilizados para pagar el uso de la red neuronal de OpenAI, en este caso el modelo Davinci cuesta 6 centavos por cada 1000 tokens.

¿Cómo se calculan los tokens?

Intentaré explicarlo de la mejor forma… 😣

Aproximadamente 4 caracteres que se ajusten a una palabra en Inglés equivalen a 1 token.

En este ejemplo podemos ver como se separan los caracteres para ir formando tokens. OpenAI no solo cuenta los caracteres, si no que también separa las palabras en su inicio y fin para clasificarlas como un nuevo token.

Te dejo el enlace de la herramienta Tokenizer de OpenAI para revisar el calculo de tokens.

Clasificación de pagos por token

Openai tiene un modelo de negocio de cobro por tokens dependiendo de cada modelo que quieras ocupar.

Modelos de OpenAI Ada, Curie, Babbage y Davinci

Acá puedes encontrar la tabla de precios por tokens que maneja Openai en su api

Tips importante!

Mientras más concepto le entregues a GPT-3 antes de solicitar el texto de salida, mejor va a ser su respuesta.

Esto quiere decir que necesitaremos ocupar muchos tokens en el prompt para poder recibir la respuesta que más se ajuste a lo que estamos solicitando.

En este ejemplo con el bot @JavascriptGuru7 de Twitter se entinde perfectamente como GPT-3 mejora su respuesta mientras más tokens vengan en el prompt.

Solo el texto de entrada:

      //zero shot
const prompt = clean_text;
const completion = await openai.createCompletion({
model: "code-davinci-002",
prompt: prompt,
temperature: 0,
max_tokens: 60,
top_p: 1.0,
frequency_penalty: 0.5,
presence_penalty: 0.0,
stop: ["\n"],
});

Ahora con un prompt que le da una idea de lo que debe responder.

      const one_shot_text = 'Bot: Ask me any question about Javascript. '+
'Me: Can I ask you something about programming? '+
'Bot: Yes, of course. Tell me your question and I will answer it. '+
'Me: '+clean_text+' Bot:';

console.log(one_shot_text);
const completion = await openai.createCompletion({
model: "code-davinci-002",
prompt: one_shot_text,
temperature: 0.4,
max_tokens: 60,
top_p: 1.0,
frequency_penalty: 0.5,
presence_penalty: 0.0,
stop: ["Bot:", "Me:"],
});

Para evitar tener que ocupar muchos tokens en dar el contexto a GPT-3 puedes ocupar Fine Tuning 🤯

Puedes revisar que es Fine Tuning en este artículo:

--

--