¿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

Encontrar la causa de un incidente de IA

Después de esta lección: Puedo averiguar qué salió mal a partir de la traza y los registros.

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

Encontrar la causa de un incidente de IA

Un incidente es un momento en que una función cuesta más, o responde peor, de lo que permite el encargo. Encuentras su causa en los registros: un registro de costes para saber cuándo y cuánto, una traza para saber dónde.

El asistente de la biblioteca lleva una semana en marcha. A mediodía salta la alerta de coste. Nadie cambió el modelo, así que la pregunta es qué cambió.

Al final de esta lección

Nota

Puedo averiguar qué salió mal a partir de la traza y los registros.

Palabras clave

PalabraQué significaEjemplo
Incidenteun momento en que la función rompe su encargo
Registro de costesun listado de lo que costó cada hora
Trazalos pasos que recorrió una petición
Tramoun paso de una traza, con su tiempomodel
Intentouna llamada al modelo para una petición

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

Cada registro responde a una pregunta

Empieza preguntando qué registro puede responder a lo que necesitas. No lo leas todo.

El registro de costes dice cuándo y cuánto. Una traza dice adónde fueron el tiempo y las llamadas dentro de una petición. La lista de eventos, como un despliegue, dice qué cambió.

Ejemplo: tres registros

RegistroResponde aNo puede responder
Registro de costesQué horas cuestan másPor qué cuestan más
TrazaQué hizo una peticiónCon qué frecuencia ocurrió
Lista de eventosQué cambió y cuándoSi importó

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

Cuándo, dónde y luego por qué

Primero busca cuándo: las horas que rompen el límite. Luego dónde: la traza de una petición de esas horas. Al final por qué: una causa que explique las dos cosas.

Pon a prueba la causa. Si es cierta, el registro debe mostrar algo más. Una causa que no predice nada es una suposición.

Un error frecuente

Advertencia

Mucha gente cree que un pico de coste significa más usuarios. Mira también las peticiones. Si las peticiones siguen iguales y los intentos suben, cada petición cuesta más. El tráfico no creció.

Escribe el lector de incidentes, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const fs = require(\"fs\");' '// Peticiones e intentos al modelo por hora. Un intento cuesta 5. La alerta salta a 1500 por hora.' 'const HOURS = [[\"08\", 120, 126], [\"09\", 150, 158], [\"10\", 140, 149], [\"11\", 160, 520], [\"12\", 155, 310], [\"13\", 150, 160], [\"14\", 145, 152]];' 'const LIMIT = 1500;' 'const log = HOURS.map(function (h) {' '  return { hour: h[0], requests: h[1], attempts: h[2], cost: h[2] * 5 };' '});' 'fs.writeFileSync(\"cost-log.json\", JSON.stringify(log, null, 1));' > incident.js"

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

Escribe el lector de incidentes, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Una petición, r481, una pregunta sobre multas, vista como tramos.' 'const TRACE = [' '  { span: \"read_sheet\", attempt: 0, ms: 4, length: 0 },' '  { span: \"model\", attempt: 1, ms: 900, length: 52 },' '  { span: \"model\", attempt: 2, ms: 880, length: 51 },' '  { span: \"model\", attempt: 3, ms: 910, length: 55 },' '  { span: \"model\", attempt: 4, ms: 890, length: 53 },' '  { span: \"model\", attempt: 5, ms: 905, length: 54 },' '  { span: \"send_last\", attempt: 5, ms: 1, length: 54 },' '];' 'fs.writeFileSync(\"trace-r481.json\", JSON.stringify(TRACE, null, 1));' >> incident.js"

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

Escribe el lector de incidentes, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'console.log(\"hora peticiones intentos por-petición coste\");' 'for (const h of log) {' '  const ratio = (h.attempts / h.requests).toFixed(2);' '  console.log(h.hour + \":00\", h.requests, h.attempts, ratio, h.cost, h.cost > LIMIT ? \"SUPERADO\" : \"ok\");' '}' >> incident.js"

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

Escribe el lector de incidentes, parte 4

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'for (const t of TRACE) {' '  console.log(t.span, t.attempt, t.ms + \" ms\", \"longitud \" + t.length, t.length > 40 ? \"demasiado largo\" : \"\");' '}' 'const tries = TRACE.filter(function (t) { return t.span === \"model\"; }).length;' 'console.log(\"Intentos al modelo para r481:\", tries);' >> incident.js"

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

Lee el registro y la traza

Comando
docker exec -w /home/node/project agent node incident.js

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

Lo que imprime el Run

ParteQué muestra
08:00 a 10:00Cerca de 1,05 intentos por petición, coste de 630 a 790
11:003,25 intentos por petición, coste 2600, SUPERADO
12:002,00 intentos por petición, coste 1550, SUPERADO
13:00 y 14:00De vuelta a cerca de 1,05, coste bajo 1500
Traza de r481Cinco tramos del modelo, todos de longitud mayor que 40

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

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.