¿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 hacer accesibles las funciones de IA

Después de esta lección: Puedo hacer que una función de IA la pueda usar gente con necesidades distintas.

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

Correcta, pero inútil

La accesibilidad es que una función la pueda usar gente con necesidades distintas. Importa porque una respuesta correcta que nadie puede usar sigue siendo un fallo.

El chat de un banco da una respuesta correcta en un párrafo largo de palabras difíciles. Un cliente lee despacio. Otra usa un lector de pantalla. Un tercero tiene mala cobertura y espera diez segundos.

Al final de esta lección

Nota

Puedo hacer que una función de IA la pueda usar gente con necesidades distintas.

Palabras clave

PalabraQué significaEjemplo
Lector de pantallaun programa que lee una página en voz alta
Lenguaje clarofrases cortas y palabras de cada día
Jergauna palabra difícil que solo conocen los expertosposteriormente
Tiempo de lecturalo que tarda en leerse una respuesta
Alternativaotra manera de hacer el mismo trabajo

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

El lenguaje claro se puede medir con reglas

El lenguaje claro no es una sensación. Puedes fijar reglas. Ninguna frase de más de 12 palabras. Ninguna palabra de una lista corta de jerga. Ninguna respuesta de más de 40 palabras.

Una regla se puede pasar por cada respuesta grabada. Las que la incumplen son las que hay que reescribir.

El tiempo, la espera y otras vías

Calcula el tiempo de lectura: palabras por 60, entre palabras por minuto. Una respuesta de 40 palabras a 120 por minuto tarda 20 segundos. Quien lee despacio necesita más.

Muestra una espera visible cuando la respuesta tarda, y deja que la persona la detenga. Ofrece una alternativa al chat: un botón, un formulario o un teléfono.

Un error frecuente

Advertencia

Mucha gente cree que la accesibilidad solo trata de la discapacidad, así que puede esperar. Trata de todos: una persona cansada, quien empieza a leer, una mala cobertura. Aplica las reglas a cada respuesta y ofrece otra vía, no solo un cuadro de chat.

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 revisor de lenguaje claro, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const RULES = { maxSentence: 12, maxWords: 40, jargon: [\"utilizar\", \"posteriormente\", \"parámetro\"], wpm: 120 };' 'const REPLIES = [' '  { id: \"r1\", text: \"Pulsa el botón verde. Luego elige una fecha.\" },' '  { id: \"r2\", text: \"Debe posteriormente utilizar el parámetro del menú para cambiar la fecha antes de confirmar.\" },' '  { id: \"r3\", text: \"Tu pedido va de camino. Debería llegar el viernes. Si no llega, dínoslo y lo revisaremos.\" },' '];' > access.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 revisor de lenguaje claro, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function words(text) {' '  return text.split(\" \").filter(function (w) { return w.length > 0; });' '}' 'function sentences(text) {' '  return text.split(\".\").map(function (s) { return s.trim(); }).filter(function (s) { return s.length > 0; });' '}' >> access.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 revisor de lenguaje claro, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function problems(text) {' '  const out = [];' '  const longest = Math.max.apply(null, sentences(text).map(function (s) { return words(s).length; }));' '  if (longest > RULES.maxSentence) out.push(\"frase larga\");' '  if (words(text).length > RULES.maxWords) out.push(\"demasiado largo\");' '  const hard = words(text.toLowerCase()).filter(function (w) { return RULES.jargon.includes(w); });' '  if (hard.length > 0) out.push(\"palabras difíciles\");' '  return out;' '}' >> access.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 revisor de lenguaje claro, parte 4

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  for (const r of REPLIES) {' '    const secs = Math.ceil((words(r.text).length * 60) / RULES.wpm);' '    console.log(r.id + \" \" + words(r.text).length + \" palabras, \" + secs + \" s, \" + JSON.stringify(problems(r.text)));' '  }' '  const msg = \"Reescribe con palabras sencillas: Debe posteriormente utilizar el parámetro del menú para cambiar la fecha.\";' '  const reply = await ask([{ role: \"user\", content: msg }], \"Después, usa el menú para cambiar la fecha.\", 30);' '  console.log(\"sencillo: \" + reply.text);' '}' 'main();' >> access.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 revisor de lenguaje claro

Comando
docker exec -w /home/node/project agent node access.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
r1 8 palabras, 4 s, []Corta y sencilla, sin problemas
r2 14 palabras, 7 s, ["frase larga","palabras difíciles"]Una frase larga con dos palabras difíciles
r3 16 palabras, 8 s, []Por debajo de cada límite, así que pasa

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.