¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Tokens y coste de una llamada

Después de esta lección: Puedo estimar lo que cuesta una llamada antes de hacerla.

Lección de 60 min3 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Las API de modelos cobran por token

La mayoría de las API de modelos cobran por token, no por llamada. Una pregunta corta y un ensayo largo cuestan cantidades muy distintas.

Estimar el coste antes de llamar evita una sorpresa en la factura. Esta lección te enseña cómo.

Al final de esta lección

Nota

Puedo estimar lo que cuesta una llamada antes de hacerla.

Palabras clave

PalabraQué significa
Tokenun trozo pequeño de texto que se cuenta y se cobra
Tokens de entradalos tokens que envías en el prompt
Tokens de salidalos tokens que el modelo escribe de vuelta
Precio por millónlo que cuesta un millón de tokens
Presupuestolo máximo que decides gastar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Se cobran tokens de entrada y de salida

Pagas los tokens de entrada que envías y los tokens de salida que escribe el modelo. La salida suele costar más por token.

Un precio se da por millón de tokens. Los precios de esta lección son inventados. Los precios reales cambian: lee la página del proveedor.

Ejemplo resuelto: una llamada

ParteTokensPrecio por millón, en céntimosCoste, en millonésimas de céntimo
Entrada1000200200 000
Salida500800400 000
Total1500No aplica600 000, es decir, 0,6 céntimos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Estima tokens a partir de los caracteres

Comando
docker exec -w /home/node/project agent node -e "const text='Explica qué es una clave de API en una frase.';console.log('Caracteres: '+text.length);console.log('Tokens estimados: '+Math.ceil(text.length/4))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Puedes calcular los tokens antes de llamar

En un texto, un token son más o menos cuatro caracteres. Así que un texto de 400 caracteres son unos 100 tokens. Es un cálculo aproximado, y los idiomas con acentos o con otros alfabetos suelen necesitar más tokens para el mismo sentido.

Después de una llamada, la respuesta suele informar de los números reales.

Llama a un modelo y lee los tokens

Comando
docker exec -w /home/node/project agent node -e "const u=(process.env.AI_URL||'http://ai:4000')+'/v1/chat/completions';const show=(a,b)=>{console.log('Tokens de entrada: '+a+', tokens de salida: '+b);console.log('Coste con los precios de la lección: '+(a*200+b*800)+' millonésimas de céntimo')};(async()=>{try{const r=await fetch(u,{method:'POST',headers:{'content-type':'application/json',authorization:'Bearer lab'},body:JSON.stringify({model:'lab',messages:[{role:'user',content:'Explica qué es una clave de API en una frase.'}],max_tokens:60})});const j=await r.json();if(r.ok===false)throw new Error(r.status+' '+j.error.message);console.log('Respuesta: '+j.choices[0].message.content);if(j.usage)show(j.usage.prompt_tokens,j.usage.completion_tokens);else console.log('No se informó del número de tokens.')}catch(e){console.log('Sin respuesta ('+e.message+'). Muestra grabada:');console.log('Respuesta: Una clave de API es un secreto que prueba que una petición es tuya.');show(14,16)}})()"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un límite mantiene corta la salida

Controlas la entrada escribiendo prompts cortos. Controlas la salida con max_tokens, que corta la respuesta en ese número de tokens.

En un chat, cada turno nuevo vuelve a enviar los mensajes anteriores. Por eso un chat largo cuesta más en cada turno.

Para cuando se acabe el presupuesto

Comando
docker exec -w /home/node/project agent node -e "const calls=[[1000,500],[2000,800],[1500,1200],[3000,2000],[500,100]];let spent=0;const limit=4000000;for(let i=0;i<calls.length;i++){const c=calls[i][0]*200+calls[i][1]*800;if(spent+c>limit){console.log('La llamada '+(i+1)+' costaría '+c+', así que se para. Gastado '+spent);break}spent+=c;console.log('Llamada '+(i+1)+': coste '+c+', gastado '+spent)}"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que todas las llamadas cuestan lo mismo. El coste crece con los tokens de entrada y de salida, y un chat largo reenvía su historial. Cuenta los tokens, pon un límite y decide el presupuesto antes de que arranque un bucle.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.