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
| Palabra | Qué significa |
|---|---|
| Nivel de riesgo | un nivel que dice cuánto cuidado exige la función |
| Decisión automática | un resultado que nadie revisa antes de que actúe |
| Reversible | un resultado erróneo se puede corregir |
| Responsable | la persona con nombre que responde de la función |
| Rendir cuentas | explicar 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ón | Personas | Automática | No reversible | Más de 1000 | Puntos y nivel |
|---|---|---|---|---|---|
| Seguimiento de pedidos | no | sí: 2 | no | no | 2, bajo |
| Filtro de currículos | sí: 2 | sí: 2 | sí: 2 | no | 6, 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
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
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
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
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
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
docker exec -w /home/node/project agent node risk.jsSe 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ínea | Qué muestra |
|---|---|
| Seguimiento de pedidos: puntuación 2, bajo, responsable: nadie | Riesgo bajo, así que no tener responsable es menos urgente |
| Filtro de currículos: puntuación 6, alto, responsable: Lucía Romero | Riesgo alto y un responsable con nombre |
| Ayuda con los deberes: puntuación 3, medio, responsable: nadie | Otro hueco: riesgo medio sin responsable |
| Robot de reembolsos: puntuación 4, medio, responsable: nadie | Un 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.