¿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

Supervisión humana de decisiones de IA

Después de esta lección: Puedo diseñar una revisión por una persona que sea real y no un hábito.

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

Quien pulsa Aprobar sin leer

La supervisión humana es que una persona revise lo que una función de IA va a hacer y pueda detenerlo. Importa porque una revisión que nadie lee es peor que ninguna: da a todos una falsa sensación de seguridad.

Esta lección trata de hacer real esa revisión. Qué acciones necesitan a una persona, qué debe ver y cómo detectar una aprobación que se ha vuelto un hábito.

Al final de esta lección

Nota

Puedo diseñar una revisión por una persona que sea real y no un hábito.

Palabras clave

PalabraQué significa
Supervisiónuna persona puede revisar y detener una acción
Aprobaciónuna persona que dice sí a una acción
Sello de gomauna aprobación dada sin leer
Escaladopasar un caso a una persona de más rango
Umbralel tamaño a partir del cual decide una persona

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

Elige qué necesita a una persona

Una persona no puede leer cada acción, así que elige. Pide a una persona cuando la acción cuesta más que un umbral o no se puede deshacer. Deja pasar el resto y anótalo en un registro.

A quien se le pregunta por todo deja de leer. Pocas preguntas bien elegidas consiguen atención de verdad.

Ejemplo resuelto: cuatro acciones, límite de 100 euros

AcciónDineroReversibleQuién decide
Correo de agradecimiento0síAdelante
Reembolsar el pedido 11440síAdelante
Reembolsar el pedido 207450síUna persona: pasa del límite
Borrar un expediente0noUna persona: no se puede deshacer

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

Una revisión real muestra lo necesario

Muestra a la persona lo que va a ocurrir, cuánto dinero está en juego y qué no se sabe. No muestres solo la respuesta del modelo. Da una forma de decir no y otra de pasar el caso a alguien superior.

Después mide. Una aprobación que tardó un segundo no se leyó. Si casi todas son rápidas y casi todas dicen sí, la revisión se ha vuelto un hábito.

Un error frecuente

Advertencia

Mucha gente cree que basta con una persona en el bucle. Una persona que aprueba 200 elementos por hora no los revisa. Mide cuánto tarda cada aprobación y cuántas se rechazan, y trata un sí muy rápido y muy frecuente como un fallo.

Escribe el ayudante del modelo, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// Los tokens de una respuesta, o null si no trae ninguno.' 'function count(data, name) {' '  return data.usage && typeof data.usage[name] === \"number\" ? data.usage[name] : null;' '}' > model.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 ayudante del modelo, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function ask(messages, sample, max) {' '  try {' '    const res = await fetch(base + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"estado \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, inTokens: count(d, \"prompt_tokens\"), outTokens: count(d, \"completion_tokens\"), recorded: false };' '  } catch (error) {' '    console.log(\"Muestra grabada: ningún modelo respondió (\" + error.message + \").\");' '    return { text: sample, inTokens: null, outTokens: null, recorded: true };' '  }' '}' 'module.exports = { ask };' >> model.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 la revisión humana, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '' 'const LIMIT = 100; // euros: por encima, decide una persona' 'const MIN_SECS = 5; // una aprobación más rápida no se leyó' 'const actions = [' '  { id: \"a1\", what: \"Enviar un correo de agradecimiento\", money: 0, undo: true },' '  { id: \"a2\", what: \"Reembolsar el pedido 114\", money: 40, undo: true },' '  { id: \"a3\", what: \"Reembolsar el pedido 207\", money: 450, undo: true },' '  { id: \"a4\", what: \"Borrar el expediente de un cliente\", money: 0, undo: false },' '];' 'function needsPerson(a) {' '  return a.money > LIMIT || a.undo === false;' '}' > oversight.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 la revisión humana, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Aprobaciones grabadas: los segundos que tardó cada persona.' 'const seen = [' '  { id: \"r1\", secs: 31 },' '  { id: \"r2\", secs: 1 },' '  { id: \"r3\", secs: 45 },' '  { id: \"r4\", secs: 2 },' '];' >> oversight.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 la revisión humana, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  actions.forEach(function (a) {' '    console.log(a.id + \": \" + (needsPerson(a) ? \"preguntar a una persona\" : \"adelante\"));' '  });' '  seen.forEach(function (r) {' '    console.log(r.id + \": \" + r.secs + \" s \" + (r.secs < MIN_SECS ? \"SIN LEER\" : \"leída\"));' '  });' '  const q = \"Escribe dos líneas cortas para una jefa que debe aprobar: Reembolsar el pedido 207, 450 euros. Di qué, cuánto y qué no se sabe.\";' '  const r = await ask([{ role: \"user\", content: q }], \"Reembolso de 450 euros del pedido 207. El motivo dado no está comprobado y no se muestra el historial del cliente.\", 80);' '  console.log(\"Un resumen posible: \" + r.text);' '}' 'main();' >> oversight.js"

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

Ejecuta la revisión humana

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

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

Una salida posible

LíneaQué muestra
a1: adelante y a2: adelantePequeñas y reversibles
a3: preguntar a una persona y a4: preguntar a una personaPasa del límite, y no se puede deshacer
r2: 1 s SIN LEER y r4: 2 s SIN LEERAprobaciones demasiado rápidas para ser reales
Un resumen posible: ...Tu propia llamada. Cambia en cada ejecución, o dice Muestra grabada

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.