¿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

Prompts con ejemplos, few-shot

Después de esta lección: Puedo elegir ejemplos que muestren a un modelo lo que quiero.

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 ejemplos enseñan al modelo lo que quieres

Un prompt con ejemplos, o few-shot, lleva dentro unos pocos casos resueltos. El modelo copia el patrón que ve, así que los ejemplos le enseñan tus etiquetas y tu estilo.

Los ejemplos también pueden engañar. Un prompt con cuatro comentarios buenos y uno malo dice que casi todos son buenos.

Al final de esta lección

Nota

Puedo elegir ejemplos que muestren a un modelo lo que quiero.

Palabras clave

PalabraQué significa
Ejemplouna entrada con la respuesta que quieres
Etiquetala respuesta que lleva un ejemplo
Claseuna de las etiquetas que el modelo puede elegir
Equilibriocada clase aparece más o menos igual
Few-shotun prompt con unos pocos ejemplos
Zero-shotun prompt sin ejemplos

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

¿Cuántos ejemplos necesita un prompt?

Sin ejemplos, un modelo usa su idea general de la tarea. Un ejemplo fija el formato. Dos o tres muestran el abanico. Pasados cinco o seis, cada ejemplo suma tokens y casi nada más.

Elige ejemplos distintos entre sí. Tres casi iguales enseñan lo mismo que uno.

Las mismas etiquetas, con y sin equilibrio

ConjuntobuenomaloQué aprende el modelo
Desequilibrado41Casi todo es bueno, así que dice bueno
Equilibrado22Las dos etiquetas son comunes
Falta una clase30Un comentario malo no existe

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 contador de ejemplos, parte 1

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { ask } = require(\"./model\");' 'const examples = [' '  { text: \"El autobús llegó puntual\", label: \"bueno\" },' '  { text: \"Me dejé la mochila en el asiento\", label: \"malo\" },' '  { text: \"El conductor fue muy amable\", label: \"bueno\" },' '  { text: \"Viaje rápido y limpio\", label: \"bueno\" },' '  { text: \"El asiento estaba un poco mojado\", label: \"bueno\" },' '];' > ex2.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 contador de ejemplos, parte 2

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function counts(list) {' '  const out = {};' '  for (const e of list) out[e.label] = (out[e.label] || 0) + 1;' '  return out;' '}' 'function buildPrompt(list, text) {' '  const blocks = list.map(function (e) { return \"Texto: \" + e.text + \"\nEtiqueta: \" + e.label; });' '  blocks.push(\"Texto: \" + text + \"\nEtiqueta:\");' '  return \"Etiqueta cada comentario del autobús como bueno o malo.\n\n\" + blocks.join(\"\n\n\");' '}' >> ex2.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 contador de ejemplos, parte 3

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  const c = counts(examples);' '  console.log(\"recuento: bueno \" + c.bueno + \", malo \" + c.malo);' '  for (const name of Object.keys(c)) {' '    if (c[name] * 2 > examples.length) console.log(\"aviso: \" + name + \" es más de la mitad de los ejemplos\");' '  }' '  const prompt = buildPrompt(examples, \"El conductor fue grosero\");' '  const reply = await ask([{ role: \"user\", content: prompt }], \"malo\", 5);' '  console.log(\"modelo: \" + reply.text);' '}' 'main();' >> ex2.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 cuenta las etiquetas

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

La primera línea cuenta las etiquetas: bueno 4, malo 1. La segunda avisa de que bueno es más de la mitad de los ejemplos. Esa comprobación detecta un conjunto así antes de que llegue a un modelo.

La última línea es una respuesta corta. Sin modelo, antes imprime una Muestra grabada.

Un error frecuente

Advertencia

Mucha gente cree que el orden de los ejemplos no importa. Los modelos suelen fijarse más en el último. Si es uno malo, la entrada nueva tiene más opciones de salir mala. Mezcla las clases para que ninguna vaya siempre al final.

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.