¿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

Cuándo basta con un prompt

Después de esta lección: Puedo comprobar si un prompt basta antes de pensar en entrenar.

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

Prueba un prompt antes de entrenar

Una tienda online de bicicletas recibe mensajes de clientes y un modelo los reparte en montones: factura, envío, devolución. Falla con algunos, y el equipo piensa en entrenarlo.

Adaptar un modelo es cambiar el modelo con tus propios ejemplos. Cuesta tiempo, datos y cuidado. Muchos problemas que lo parecen se arreglan con un prompt mejor.

Al final de esta lección

Nota

Puedo comprobar si un prompt basta antes de pensar en entrenar.

Palabras clave

PalabraQué significa
Baselos resultados antes de cambiar nada
Casouna entrada con respuesta correcta conocida
Porcentaje de aciertoel porcentaje de casos bien resueltos
Adaptarcambiar un modelo con tus propios ejemplos
Objetivoel porcentaje con el que quedas conforme

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

Empieza por una base

Primero anota un conjunto de casos. Un caso es una entrada con la respuesta que quieres. Pasa tu prompt actual por todos los casos y cuenta los aciertos.

Esa cuenta es la base. Sin ella no puedes decir que un cambio ayudó. Mantén los casos fijos, para que cada prueba posterior sea justa.

Ejemplo resuelto: el clasificador de la tienda

Tipo de mensajeCasosAciertos de la baseAciertos con el prompt mejor
factura222
envío212
devolución202
tono200
todos83 (37 %)6 (75 %)

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

Qué arregla un prompt y qué no

Un prompt arregla una instrucción que faltaba, un ejemplo que faltaba o una forma de salida equivocada. Es barato y se deshace en un segundo.

Le cuesta cuando el modelo debe seguir un estilo que nunca vio, o conocer datos que la ventana no cabe. Ahí puede compensar adaptar. Antes lee el módulo 68, que enseña a medir.

Un error frecuente

Advertencia

Mucha gente cree que una respuesta mala significa que el modelo necesita entrenamiento. Muchas veces el prompt nunca dijo lo que se quería. Revisa primero el prompt y unos ejemplos, y entrena solo si una prueba justa no muestra mejora real.

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 informe de la base, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' '// Resultados grabados: 1 es que el clasificador acertó el montón del mensaje.' 'const kinds = [\"factura\", \"factura\", \"envio\", \"envio\", \"devolucion\", \"devolucion\", \"tono\", \"tono\"];' 'const baseline = [1, 1, 1, 0, 0, 0, 0, 0];' 'const prompted = [1, 1, 1, 1, 1, 1, 0, 0];' > adapt1.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 informe de la base, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function rate(list) {' '  let ok = 0;' '  for (const r of list) ok = ok + r;' '  return Math.floor((ok * 100) / list.length);' '}' 'function failing(list) {' '  const out = [];' '  list.forEach(function (r, i) {' '    if (r === 0 && out.includes(kinds[i]) === false) out.push(kinds[i]);' '  });' '  return out;' '}' >> adapt1.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 informe de la base, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"resultados grabados, 8 casos\");' '  console.log(\"base \" + rate(baseline) + \" %, siguen fallando: \" + failing(baseline).join(\", \"));' '  console.log(\"prompt mejor \" + rate(prompted) + \" %, siguen fallando: \" + failing(prompted).join(\", \"));' '  const q = \"En una frase, ¿puede un prompt enseñar a un modelo el estilo de escritura de una casa que nunca ha visto?\";' '  const sample = \"Un prompt puede mostrar unos ejemplos del estilo, pero no cambia lo que el modelo hace por defecto.\";' '  const reply = await ask([{ role: \"user\", content: q }], sample, 40);' '  console.log(\"el modelo dijo: \" + reply.text);' '}' 'main();' >> adapt1.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 informe de la base

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

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

Los resultados están grabados, no son en vivo

Las dos listas de resultados están grabadas y escritas en el script. No las hace un modelo, así que todos los estudiantes ven los mismos números. Solo la última línea llama al modelo del laboratorio, y sin modelo imprime una Muestra grabada.

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.