¿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

Diseñar una función de IA en una página

Después de esta lección: Puedo escribir un diseño de una página para una función respaldada por un modelo.

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

Cómo escribir un diseño de una página

Un diseño de una página dice cómo va a funcionar y a fallar una función respaldada por un modelo, antes de que nadie la construya. Nombra la pasarela, la cola, las evaluaciones, el presupuesto, el plan de respaldo y las reglas de seguridad en un solo sitio. Importa porque cada una de estas decisiones es barata sobre el papel y cara de añadir después.

Dos ingenieros recuerdan cada uno un límite de ritmo distinto. La página de diseño lo resuelve, y un script puede comprobar la página.

Al final de esta lección

Nota

Puedo escribir un diseño de una página para una función respaldada por un modelo.

Palabras clave

PalabraQué significa
Página de diseñouna página que dice cómo funciona una función
Requisitouna afirmación que el diseño debe cumplir
Plan de respaldolo que pasa cuando falla una llamada al modelo
Presupuestolo máximo que puede gastar una función
Evaluaciónuna prueba de calidad sobre casos fijos

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

Seis secciones cubren una función

Escribe una sección corta por cada asunto. Pasarela: claves, límites, elección de modelo. Cola: qué llamadas son tareas y cómo se limitan los reintentos. Evaluaciones: los casos y la nota de aprobado. Presupuesto: el límite y qué pasa al llegar a él. Respaldo: lo que ve el usuario cuando falla una llamada. Seguridad: qué puede llevar el prompt y qué se registra.

Una página obliga a elegir. Bastan dos frases por sección.

Ejemplo resuelto: qué debe decir cada sección

SecciónUn requisito que cumpleExpresión que buscar
PasarelaQuien llama nunca tiene la clave del proveedorclave de cliente
ColaEl trabajo lento no bloquea una peticióntarea, reintento
EvaluacionesUn cambio se juzga con casos fijoscasos, tasa de acierto
PresupuestoEl gasto tiene un techotope diario
RespaldoEl usuario siempre recibe algorespuesta simple
SeguridadSe minimizan los datos personales y los registros son segurosdatos personales, registro

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

Un script puede comprobar una página de diseño

Convierte cada requisito en una sección y unas pocas expresiones que deben aparecer. Un script corto lee la página y lista lo que falta. No puede juzgar si el diseño es bueno. Solo prueba que la página respondió a cada pregunta.

Ejecútalo en la revisión y mantén la página corta: un límite de palabras también es un requisito.

Un error frecuente

Advertencia

Mucha gente cree que un diseño que pasa el script es un buen diseño. El script comprueba que se menciona un tema, no que la decisión sea acertada. Pasar es el comienzo de la revisión, nunca su final.

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\";' '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 || 200 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"estado \" + res.status);' '    return (await res.json()).choices[0].message.content;' > 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' '  } catch (error) {' '    console.log(\"Muestra grabada: ningún modelo respondió (\" + error.message + \").\");' '    const list = [].concat(sample);' '    const turn = messages.filter(function (m) { return m.role === \"assistant\"; }).length;' '    return list[Math.min(turn, list.length - 1)];' '  }' '}' '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 comprobación del diseño, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Un diseño de una página para una función que resume tickets, inventado para la lección.' 'const design = {' '  gateway: \"Quien llama usa una clave de cliente. La pasarela aplica un límite de ritmo de 60 por minuto y elige el modelo.\",' '  queue: \"Un resumen es una tarea. Un trabajador la ejecuta y un reintento tiene tope de tres intentos.\",' '  evals: \"Cuarenta casos con respuestas conocidas. Comparamos la tasa de acierto de cada versión del prompt.\",' '  budget: \"Un tope diario por equipo. Al pasarlo, la función lo dice y se detiene.\",' '  fallback: \"Si el modelo falla, probamos un segundo modelo y luego mostramos las primeras líneas del ticket.\",' '  security: \"Los tickets pueden tener datos personales, así que el prompt recibe solo lo necesario.\",' '};' > design.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 comprobación del diseño, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const reqs = [' '  { id: \"R1\", section: \"gateway\", words: [\"clave de cliente\", \"límite de ritmo\"] },' '  { id: \"R2\", section: \"queue\", words: [\"tarea\", \"reintento\"] },' '  { id: \"R3\", section: \"evals\", words: [\"casos\", \"tasa de acierto\"] },' '  { id: \"R4\", section: \"budget\", words: [\"tope diario\"] },' '  { id: \"R5\", section: \"fallback\", words: [\"respuesta simple\"] },' '  { id: \"R6\", section: \"security\", words: [\"datos personales\", \"registro\"] },' '];' >> design.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 comprobación del diseño, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function check(d, rs, maxWords) {' '  const out = [];' '  rs.forEach(function (r) {' '    const text = (d[r.section] || \"\").toLowerCase();' '    if (text.trim() === \"\") { out.push(r.id + \": no hay sección \" + r.section); return; }' '    r.words.forEach(function (w) { if (text.indexOf(w) < 0) out.push(r.id + \": falta \" + w); });' '  });' '  let n = 0;' '  for (const k in d) n += d[k].split(\" \").length;' '  if (n > maxWords) out.push(\"demasiado largo: \" + n + \" palabras\");' '  return out;' '}' 'const problems = check(design, reqs, 120);' 'problems.forEach(function (p) { console.log(\"Problema:\", p); });' 'console.log(\"Requisitos cumplidos:\", reqs.length - problems.length, \"de\", reqs.length);' >> design.js"

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

Comprueba la página de diseño

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

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

Este Run no necesita modelo

La comprobación es código simple sobre texto, así que no hace ninguna llamada. El ayudante se escribe para los ejercicios siguientes, y un Run que llama a un modelo imprime una Muestra grabada con etiqueta cuando ninguno responde.

El diseño es inventado. Un diseño real nombra tus propios servicios y tus propios números.

Una salida posible

LíneaQué muestra
Problema: R5: falta respuesta simpleEl respaldo nunca dice qué ve el usuario al final
Problema: R6: falta registroLa sección de seguridad no dice nada de los registros
Requisitos cumplidos: 4 de 6Cuatro secciones respondieron a cada pregunta

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.