← IA en producción · nivel avanzado

S1 · Tokens, contexto y coste

Al terminar esta sesión sabes cuánto cuesta una ejecución completa de tu sistema, qué paso se lleva más dinero y por qué el mismo texto no cuesta lo mismo en todos los idiomas.

Antes de empezar: apunta tu estimación

Sin calcular nada: ¿cuánto crees que cuesta una ejecución de tu sistema? ¿Y cien? Apúntalo en un papel. Al final de la sesión lo comparas con la cifra real.

Lo esencial

  • Token. El modelo no lee letras ni palabras: lee trozos de texto de un vocabulario fijo. Muchas palabras en español se parten en varios tokens; el chino depende de los caracteres. El precio va por token.
  • Ventana de contexto. Todo lo que el modelo ve en una llamada (instrucciones, historial, documentos y respuesta) cabe en un máximo de tokens. En un sistema de agentes, cada paso vuelve a pagar todo lo que lee.
  • Tres precios. Entrada (lo que lee), salida (lo que escribe, varias veces más cara) y caché (leer un principio de prompt repetido cuesta una fracción de la entrada).
  • Razonamiento. Los modelos actuales piensan antes de responder. Ese razonamiento no siempre se ve, pero se cobra como salida.

De dónde sale la cifra

Cada respuesta de la API trae su consumo en «usage». Con eso y la tabla de precios, el coste es una cuenta:

comun/coste.ts
const M = 1_000_000;

// precio en dólares por millón de tokens; uso = response.usage
function costeDeUso(uso: Uso, precio: Precio): number {
  const entrada = (uso.input_tokens / M) * precio.entrada;
  const salida = (uso.output_tokens / M) * precio.salida; // incluye el razonamiento
  const cacheEscritura = ((uso.cache_creation_input_tokens ?? 0) / M) * precio.cacheEscritura;
  const cacheLectura = ((uso.cache_read_input_tokens ?? 0) / M) * precio.cacheLectura;
  return entrada + salida + cacheEscritura + cacheLectura;
}

Los precios cambian: el repositorio los guarda en comun/precios.ts con su fecha de revisión. Compruébalos en la web del proveedor antes de usar una cifra en un informe o en una propuesta.

Práctica guiada

Trabajas con el código de partida del curso (el repositorio ia-en-produccion: te damos acceso al matricularte). Necesitas Node 20 o superior. Sin clave de API también funciona: los scripts tienen un modo ensayo con datos de ejemplo, marcados como tales.

Bash
npm install
cp .env.example .env    # y pon tu clave (Claude o z.ai), si la tienes
npm run m1:tokens       # el mismo texto en español, inglés y chino
npm run m1:coste        # coste de la sesión de ejemplo, paso a paso

Esto es lo que imprime m1:coste con la sesión de ejemplo: diez agentes en cadena que producen una muestra de corpus. Las cifras de tokens son inventadas para el ejercicio; el cálculo, no.

salida de npm run m1:coste
paso                    modelo             entrada  salida  razon.      coste    peso
Tokio · planifica       claude-sonnet-5-5     3200     900     400   0,0154 $   2,7 %
Denver · documenta      claude-sonnet-5-5     5400    1500     600   0,0258 $   4,5 %
Estocolmo · registro    claude-sonnet-5-5     6100     700     300   0,0192 $   3,4 %
Río · redacta           claude-opus-5-5       7800    4200    2600   0,1152 $  20,1 %
Berlín · anota          claude-sonnet-5-5    11200    2800    1200   0,0504 $   8,8 %
Lisboa · anota léxico   claude-sonnet-5-5    13400    2400    1000   0,0508 $   8,9 %
Nairobi · revisa        claude-sonnet-5-5    14900    1100     500   0,0408 $   7,1 %
Palermo · juzga         claude-opus-5-5      16300    2200    1500   0,1092 $  19,1 %
Helsinki · registra     claude-sonnet-5-5    15800     800     200   0,0396 $   6,9 %
Profesor · informe      claude-opus-5-5      17100    1900     900   0,1064 $  18,6 %

Total de la ejecución: 0,5728 $   ·   100 ejecuciones: 57,28 $
La salida supone el 46,8 % del coste; el razonamiento, 9200 de 18500 tokens de salida.
Con caché, si el 60 % de la entrada de cada paso es su prompt fijo: 0,4033 $ por ejecución.

Responde con la tabla delante:

  1. ¿Qué paso es el más caro y por qué: por el modelo, por lo que lee o por lo que escribe?
  2. La entrada crece de un paso a otro. ¿Qué significa eso en un sistema en cadena?
  3. ¿Cuánto del coste es salida? ¿Y cuánto de la salida es razonamiento?
  4. ¿Qué ahorraría la caché? ¿Qué parte de cada paso podría ir en caché de verdad?
Solución de referencia

El paso más caro es Río (20 %): escribe mucho y con el modelo caro. La entrada se multiplica por más de cinco del primer paso al último, porque cada agente recibe todo lo anterior; ahí hay coste que no aporta nada si el agente no lo necesita. Casi la mitad del coste es salida, y la mitad de la salida es razonamiento. La caché solo ahorra en la parte de cada prompt que se repite igual en todas las ejecuciones.

Práctica libre: mide tu sistema

Copia comun/registro.ts en tu sistema y llama a anotarUso después de cada llamada a la API. Solo guarda cifras: ni el prompt ni la respuesta, así que no hay datos personales en el registro.

tu-sistema.ts
import { anotarUso } from "./registro";

const r = await client.messages.create({ model, max_tokens: 4000, messages });
anotarUso("Redactor", r.model, r.usage); // una línea en salidas/usos.jsonl

Haz una ejecución completa y después:

Bash
npm run m1:coste -- salidas/usos.jsonl
npm run m1:tokens -- un-texto-real-de-tu-sistema.txt

Variante con andamiaje: si hoy no puedes instrumentar tu sistema, copia datos/sesion-ejemplo.json, cambia los modelos y las cifras por las de tu caso (aproximadas) y razona con ellas.

Comprueba lo que has aprendido

S1 · Tokens, contexto y coste

Seis preguntas para comprobar que sabes de dónde sale el coste de una llamada.

1. ¿Cómo se cobra el razonamiento interno de un modelo (lo que «piensa» antes de responder)?
2. El mismo texto gasta los mismos tokens en español, en inglés y en chino.
3. En una cadena de agentes, la entrada crece de un paso al siguiente. ¿Por qué?
4. Un modelo cobra 4 $ por millón de tokens de entrada y 20 $ por millón de salida. Una llamada lee 10.000 tokens y escribe 1.000. ¿Cuánto cuesta?
5. ¿Qué parte de una llamada abarata la caché de prompts?
6. Todo lo que el modelo ve en una llamada tiene que caber en su ventana de ___.

Entrega

📝 Coste por ejecución de tu sistema

10 pts
Envía la sección 2 del informe del módulo (la plantilla está en modulo-1/plantilla-informe.md del repositorio): coste por ejecución, paso más caro y su peso, parte del coste que es salida y razonamiento, ahorro estimado con caché y coste de 100 y 1.000 ejecuciones. Termina con una frase: «Una ejecución de mi sistema cuesta X; el paso más caro es Y porque Z», y compárala con la estimación que apuntaste al empezar.

Matricúlate en el curso para poder entregar esta tarea.