¿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

Valorar el riesgo de una función de IA

Después de esta lección: Puedo valorar el riesgo de una función de IA y decir quién responde de ella.

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

Qué función necesita más cuidado

Una valoración del riesgo dice cuánto daño puede causar una función de IA y, por tanto, cuánto cuidado exige antes de salir. Importa porque un planificador de menús y un filtro de currículos pueden usar el mismo modelo y no tener el mismo riesgo.

Esta lección ofrece información general y no asesoramiento jurídico. Comprueba las normas que te afectan y consulta a un jurista cuando una decisión toque a una persona.

Al final de esta lección

Nota

Puedo valorar el riesgo de una función de IA y decir quién responde de ella.

Palabras clave

PalabraQué significa
Nivel de riesgoun nivel que dice cuánto cuidado exige la función
Decisión automáticaun resultado que nadie revisa antes de que actúe
Reversibleun resultado erróneo se puede corregir
Responsablela persona con nombre que responde de la función
Rendir cuentasexplicar lo ocurrido y arreglarlo

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

Cuatro preguntas dan un nivel

Haz cuatro preguntas sobre una función. ¿Actúa sobre personas? ¿Revisa una persona cada resultado antes de que actúe? ¿Se puede deshacer un resultado erróneo? ¿A cuánta gente llega?

Cada respuesta de riesgo suma puntos: actúa sobre personas, nadie revisa el resultado, no se puede deshacer o llega a más de 1000 personas. El total da un nivel. El nivel abre la conversación, no la cierra, y evita que una función arriesgada se trate como un juguete.

Ejemplo resuelto: dos funciones

FunciónPersonasAutomáticaNo reversibleMás de 1000Puntos y nivel
Seguimiento de pedidosnosí: 2nono2, bajo
Filtro de currículossí: 2sí: 2sí: 2no6, alto

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

Toda función tiene un responsable con nombre

Un rol como «el equipo de datos» no es un responsable. Un responsable es una persona a la que se pregunta cuando la función hace daño y que puede apagarla.

Algunos lugares tienen normas sobre decisiones tomadas solo por un sistema sobre personas. A menudo piden que un humano pueda revisarlas. Es un resumen, no asesoramiento jurídico: busca las normas que te afectan.

Un error frecuente

Advertencia

Mucha gente cree que el modelo decide el riesgo, así que un modelo seguro da una función segura. El riesgo viene de lo que hace la función, a quién, y de si se puede deshacer. Valora la función, nunca el modelo.

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 el valorador de riesgo, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '' '// Funciones inventadas. Cada una dice qué hace, a quién, y si se puede deshacer.' 'const features = [' '  { name: \"Seguimiento de pedidos\", people: false, automatic: true, undo: true, users: 500 },' '  { name: \"Filtro de currículos\", people: true, automatic: true, undo: false, users: 300 },' '  { name: \"Ayuda con los deberes\", people: true, automatic: false, undo: true, users: 2000 },' '  { name: \"Robot de reembolsos\", people: true, automatic: true, undo: true, users: 800 },' '];' 'const owners = { \"Filtro de currículos\": \"Lucía Romero\", \"Robot de reembolsos\": \"\" };' > risk.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 valorador de riesgo, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function score(f) {' '  let s = 0;' '  if (f.people) s = s + 2;' '  if (f.automatic) s = s + 2;' '  if (f.undo === false) s = s + 2;' '  if (f.users > 1000) s = s + 1;' '  return s;' '}' 'function level(s) {' '  if (s >= 5) return \"alto\";' '  if (s >= 3) return \"medio\";' '  return \"bajo\";' '}' >> risk.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 valorador de riesgo, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  features.forEach(function (f) {' '    const s = score(f);' '    const who = owners[f.name] || \"nadie\";' '    console.log(f.name + \": puntuación \" + s + \", \" + level(s) + \", responsable: \" + who);' '  });' '  const q = \"En dos frases: un daño que un filtro de currículos puede causar a una persona, y quién debe responder de él.\";' '  const r = await ask([{ role: \"user\", content: q }], \"Puede descartar por error a un buen candidato sin que nadie lo vea. Una persona con nombre en la empresa debe responder de ello.\", 80);' '  console.log(\"Una respuesta posible: \" + r.text);' '}' 'main();' >> risk.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 el valorador de riesgo

Comando
docker exec -w /home/node/project agent node risk.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
Seguimiento de pedidos: puntuación 2, bajo, responsable: nadieRiesgo bajo, así que no tener responsable es menos urgente
Filtro de currículos: puntuación 6, alto, responsable: Lucía RomeroRiesgo alto y un responsable con nombre
Ayuda con los deberes: puntuación 3, medio, responsable: nadieOtro hueco: riesgo medio sin responsable
Robot de reembolsos: puntuación 4, medio, responsable: nadieUn hueco: riesgo medio y nadie responde
Una respuesta 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.