¿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

Patrones de prompts que funcionan

Después de esta lección: Puedo usar a propósito un pequeño conjunto de patrones de prompts.

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

Los patrones son formas de prompt reutilizables

Un patrón de prompt es una forma de prompt que usas a propósito porque arregla un problema conocido. Personaje, plantilla, crítica y reescritura, y reglas primero son cuatro de ellos.

Ponerles nombre permite a un equipo hablar de los prompts y probarlos. «Este usa reglas primero» es una frase sobre la que se puede actuar.

Al final de esta lección

Nota

Puedo usar a propósito un pequeño conjunto de patrones de prompts.

Palabras clave

PalabraQué significaEjemplo
Patrónuna forma de prompt con un uso conocido
Personajeun papel que se pide al modelo
Plantillaun prompt con huecos que rellenar
Marcadorun hueco de una plantilla{{nombre}}
Críticauna lista de lo que está mal
Reglauna norma que la respuesta debe cumplir

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

¿Qué hace cada uno de los cuatro patrones?

Un personaje fija un papel y una voz. Una plantilla tiene huecos que rellena el código, y así todos los prompts tienen la misma forma. Crítica y reescritura pide primero los fallos y luego la corrección. Reglas primero pone las normas antes de la tarea para que no se olviden.

Los patrones se combinan. Una plantilla puede empezar con reglas.

Cuatro patrones y lo que arregla cada uno

PatrónSeñal en el promptQué arregla
PersonajeEmpieza por «Eres» o «Actúa como»Una voz que se desvía
PlantillaHuecos como {{nombre}}Prompts todos distintos
Crítica y reescrituraPide las dos cosasUn borrador que se deja tal cual
Reglas primeroEmpieza por «Reglas:» o «Límites:»Normas perdidas al final

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

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 buscador de patrones, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const prompts = [' '  \"Eres un tutor de matemáticas paciente. Explica las fracciones.\",' '  \"Reglas: menos de 20 palabras. Sin jerga.\nTarea: explica las mareas.\",' '  \"Escribe una nota a {{nombre}} sobre {{tema}}.\",' '  \"Critica este párrafo y después reescribe el texto.\",' '  \"Explica las mareas.\",' '];' > pat4.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 buscador de patrones, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function patternOf(p) {' '  const low = p.toLowerCase();' '  if (low.includes(\"critica\") && low.includes(\"reescribe\")) return \"crítica y reescritura\";' '  if (p.startsWith(\"Reglas:\") || p.startsWith(\"Límites:\") || p.startsWith(\"Restricciones:\")) return \"reglas primero\";' '  if (p.includes(\"{{\") && p.includes(\"}}\")) return \"plantilla\";' '  if (p.startsWith(\"Eres \") || p.startsWith(\"Actúa como \")) return \"personaje\";' '  return \"simple\";' '}' 'function fill(t, values) {' '  let out = t;' '  for (const key of Object.keys(values)) out = out.split(\"{{\" + key + \"}}\").join(values[key]);' '  return out;' '}' >> pat4.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 buscador de patrones, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  prompts.forEach(function (p, i) { console.log((i + 1) + \": \" + patternOf(p)); });' '  const filled = fill(prompts[2], { nombre: \"Mina\", tema: \"la excursión del instituto\" });' '  console.log(\"relleno: \" + filled);' '  const reply = await ask([{ role: \"user\", content: filled }], \"Hola, Mina: la excursión del instituto sale a las nueve.\", 50);' '  console.log(\"modelo: \" + reply.text);' '}' 'main();' >> pat4.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 y nombra los patrones

Comando
docker exec -w /home/node/project agent node pat4.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

Cinco líneas nombran el patrón de cada prompt: personaje, reglas primero, plantilla, crítica y reescritura, simple. Las comprobaciones siguen un orden fijo, así que un prompt con dos señales recibe el primer patrón que encaja.

Después rellena la plantilla y la envía. La última línea es una respuesta corta. Sin modelo, antes imprime una Muestra grabada.

Un error frecuente

Advertencia

Mucha gente cree que un personaje hace al modelo más preciso. Un papel fija la voz y el nivel de detalle. No añade datos que el modelo no tiene. Usa un personaje para el tono, y límites y ejemplos para acertar.

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.