¿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

Cómo mostrar la incertidumbre de una IA

Después de esta lección: Puedo mostrar cuánta seguridad tiene una respuesta sin falsa precisión.

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

¿Seguro, o solo con mucha voz?

Mostrar la incertidumbre es enseñar cuánta seguridad tiene una respuesta, con palabras y números que coincidan con lo que de verdad se sabe. Importa porque un número falsamente exacto engaña.

Una aplicación del tiempo dice «73,4 % de probabilidad de lluvia». Otra dice «probablemente lloverá». Si el pronóstico solo es fiable a la decena, la segunda es más honesta.

Al final de esta lección

Nota

Puedo mostrar cuánta seguridad tiene una respuesta sin falsa precisión.

Palabras clave

PalabraQué significaEjemplo
Puntuaciónun número de cuánta seguridad tiene una respuesta64
Etiquetauna palabra elegida a partir de una puntuaciónmedia
Punto de cortela puntuación donde cambia la etiqueta
Falsa precisiónun número con más cifras de las que sabes
Fuenteel texto del que salió una respuesta

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

Una palabra se usa mejor que un 64

Una puntuación como 64 dice poco a casi todo el mundo. Una palabra como «media» le dice qué hacer: comprobarlo.

Elige los puntos de corte una vez, anótalos y úsalos en todas partes. Así «alta» significa lo mismo en cada pantalla.

No muestres cifras que no tienes

Una puntuación de 64 sacada de una comprobación aproximada no es de verdad 64 ni 63. Muestra «cerca de 60», o solo la etiqueta.

Muestra también de dónde salió la respuesta. Una fuente permite comprobarla. Cuando la puntuación es muy baja, el diseño honesto rechaza y explica por qué.

Un error frecuente

Advertencia

Mucha gente cree que la confianza que da el propio modelo es una probabilidad real. No siempre lo es. Trata una puntuación como una guía aproximada y compara las etiquetas con casos conocidos. Mantén estables los cortes: una puntuación mayor nunca debe dar una etiqueta peor.

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 generador de etiquetas, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const CUTS = [[80, \"alta\"], [50, \"media\"]];' 'const ANSWERS = [' '  { id: \"q1\", score: 95 },' '  { id: \"q2\", score: 80 },' '  { id: \"q3\", score: 67 },' '  { id: \"q4\", score: 49 },' '  { id: \"q5\", score: 15 },' '];' > showing.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 generador de etiquetas, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function label(score) {' '  for (const c of CUTS) {' '    if (score >= c[0]) return c[1];' '  }' '  return \"baja\";' '}' 'function blurred(score) {' '  return Math.floor((score + 5) / 10) * 10;' '}' >> showing.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 generador de etiquetas, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const counts = { alta: 0, media: 0, baja: 0 };' '  for (const a of ANSWERS) {' '    counts[label(a.score)]++;' '    console.log(a.id + \" puntuación \" + a.score + \" se muestra cerca de \" + blurred(a.score) + \" etiqueta \" + label(a.score));' '  }' '  console.log(\"cuentas \" + JSON.stringify(counts));' '  const msg = \"Escribe una frase corta que diga a una alumna que no estás seguro y que compruebe la fuente.\";' '  const reply = await ask([{ role: \"user\", content: msg }], \"No estoy seguro de esto. Comprueba la fuente, por favor.\", 30);' '  console.log(\"frase de rechazo: \" + reply.text);' '}' 'main();' >> showing.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 generador de etiquetas

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

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

Qué imprime el Run

LíneaQué muestra
q1 puntuación 95 se muestra cerca de 100 etiqueta altaAlta, y el número va redondeado
q2 puntuación 80 se muestra cerca de 80 etiqueta altaEl 80 está en el corte, así que es alta
q4 puntuación 49 se muestra cerca de 50 etiqueta bajaEl redondeo dice 50 y la etiqueta dice baja
cuentas {"alta":2,"media":1,"baja":2}Dos en cada extremo y una en medio

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.