Menu

Prompting few-shot: ejemplos y cuándo usarlo

El prompting few-shot pone en el prompt unos cuantos ejemplos resueltos, cada uno una entrada con la respuesta que quieres, para que el modelo copie el patrón. Es la forma más rápida de enseñar un formato, un conjunto de etiquetas o un estilo propio que el modelo no adivinaría.

Puedes editar cada prompt de esta página y abrirlo después en ChatGPT, Claude u otra app de IA.

El prompting few-shot consiste en mostrarle al modelo unos cuantos ejemplos resueltos de una tarea, cada uno una entrada junto con la respuesta que quieres, antes de darle la entrada real. El modelo lee el patrón y lo continúa. Los ejemplos son la forma más rápida de fijar cosas difíciles de decir con palabras: dónde está la frontera entre dos categorías, la forma exacta de la salida o el tono con el que escribe tu equipo.

Cómo funciona el prompting few-shot

Brown et al. 2020, "Language Models are Few-Shot Learners", demostraron que GPT-3 podía aprender una tarea nueva a partir de un puñado de demostraciones colocadas en el prompt, sin reentrenamiento. Esto se llama aprendizaje en contexto (in-context learning): nada del modelo cambia, y los ejemplos solo afectan a la respuesta a ese prompt. La próxima vez, los ejemplos tienen que volver a estar ahí.

El nombre sigue el número de ejemplos. Un prompt zero-shot no tiene ninguno, un prompt one-shot tiene uno y un prompt few-shot tiene varios, normalmente entre dos y unos pocos.

Zero-shot frente a few-shot, lado a lado

Las dos pestañas de abajo piden lo mismo con la misma instrucción. La única diferencia es que la segunda añade cuatro ejemplos etiquetados antes del ticket real.

Clasifica el ticket de soporte como bug, billing, account o feature_request. Ticket: Restablecí mi contraseña pero la nueva no funciona, sigue diciendo credenciales no válidas.
Try it
Example replyReplies vary between models and runs.

Categoría: bug

El usuario restableció su contraseña, pero la nueva se rechaza al iniciar sesión. Eso apunta a un problema en el flujo de restablecimiento de contraseña, así que lo más probable es que sea un bug en el sistema de autenticación.

Los ejemplos cambiaron dos cosas. La primera es el formato: la respuesta zero-shot añadió un encabezado en negrita y una explicación, mientras que la few-shot imitó los ejemplos y dio una sola palabra, que un script puede leer directamente. La segunda es la decisión. "Bug" es una lectura razonable del ticket, y la mayoría de la gente la elegiría. Pero este equipo archiva los problemas de inicio de sesión como account, y el tercer ejemplo lo dice sin una sola palabra de explicación. Ninguna instrucción mencionaba esa regla; la llevaban los ejemplos.

Cuántos ejemplos usar

Empieza con dos a cinco. Es suficiente para la mayoría de las tareas de formato y clasificación, y mantiene el prompt corto.

  • Un ejemplo muestra un formato, pero el modelo tiende a copiarlo demasiado. Si el único ejemplo es un resumen de 30 palabras sobre un cambio de precios, el siguiente resumen puede salir de 30 palabras y extrañamente centrado en el dinero.
  • Dos o tres ejemplos distintos dejan que el modelo vea lo que comparten (el patrón) y lo que varía (los detalles).
  • Para clasificar, incluye al menos un ejemplo por cada etiqueta y luego añade los casos dudosos que salieron mal sin ejemplos.
  • Más allá de unos pocos, las mejoras suelen reducirse mientras cada petición se alarga, lo que cuesta tokens y tiempo. Si necesitas decenas de ejemplos para acertar, quizá la tarea necesite una instrucción más clara o un enfoque totalmente distinto.

Elegir buenos ejemplos

El modelo aprende de todo lo que tus ejemplos tienen en común, no solo de lo que querías enseñar.

  • Cubre los casos difíciles. Los ejemplos fáciles enseñan poco. Los más útiles están en la frontera, como el ticket de inicio de sesión de arriba.
  • Varía la superficie. Mezcla entradas cortas y largas, temas distintos y redacciones distintas. Si todas las reseñas positivas de tus ejemplos son cortas, el modelo puede tomar la extensión como señal.
  • Equilibra las etiquetas y mezcla el orden. Los modelos tienden a inclinarse hacia la etiqueta que aparece más veces en los ejemplos y hacia la que aparece en último lugar.
  • Revisa cada ejemplo. Un error en un ejemplo es una instrucción para cometer ese error.
  • Usa entradas reales. Los ejemplos sacados de tus datos reales se parecen mucho más a lo que verá el modelo que los inventados.

Mantén el formato idéntico

Todos los ejemplos deben usar las mismas etiquetas, separadores y mayúsculas, y la entrada real debe verse exactamente igual que las entradas de ejemplo. En el prompt de tickets, cada ejemplo es "Ticket:" y luego "Etiqueta:", y el prompt termina con una línea "Etiqueta:" abierta, lo que deja una sola cosa natural para escribir a continuación.

Para ejemplos más largos, envuelve cada uno en marcadores claros como las etiquetas <example> para que el modelo sepa dónde termina uno y empieza el siguiente; consulta delimitadores y etiquetas XML. En la API también puedes dar los ejemplos como turnos anteriores de la conversación: un mensaje del usuario con la entrada de ejemplo y luego un mensaje del asistente con la respuesta, repetido para cada ejemplo.

Los prompts few-shot se convierten en buenas plantillas de prompts reutilizables: la instrucción y los ejemplos quedan fijos y solo cambia la entrada. El bloque de abajo reescribe un mensaje de commit con el estilo de un equipo. Escribe tu propio mensaje en el campo y desactiva la parte de ejemplos para ver cuánto del estilo llevan ellos.

Mensajes de commit con el estilo de la casa
Fill in
Parts
Reescribe el mensaje de commit con el estilo de nuestro equipo. Responde solo con el mensaje reescrito.
Antes: agregué lo de exportar csv en la página de informes Después: feat(reports): añade exportación a CSV Antes: subo lodash por el aviso de seguridad Después: chore(deps): actualiza lodash por un aviso de seguridad Antes: ¡¡Arreglado el crash cuando el carrito está vacío!! Después: fix(cart): evita el crash cuando el carrito está vacío Antes: errata en el readme Después: docs(readme): corrige una errata
Antes: hice que el buscador no distinga mayúsculas de minúsculas Después:
Try it
Example replyReplies vary between models and runs.

feat(search): hace que el buscador no distinga mayúsculas de minúsculas

Ninguna de las reglas está escrita: un tipo en minúsculas, un ámbito entre paréntesis, un verbo en presente, sin punto final. Los ejemplos muestran las cuatro, y la respuesta las sigue. Con los ejemplos desactivados, el modelo sigue mejorando el mensaje, pero tiene que adivinar un estilo, y nada hace que su suposición coincida con el tuyo.

Los ejemplos few-shot también pueden mostrar razonamiento, no solo respuestas. Los ejemplos resueltos que muestran sus pasos son la forma en que se presentó por primera vez la cadena de pensamiento. Con los modelos que razonan internamente antes de responder, limita los ejemplos a entradas, respuestas y formato: unos pasos de razonamiento guionizados pueden desviarlos de un camino mejor, y algunos proveedores aconsejan probar primero con zero-shot en esos modelos.

Preguntas frecuentes

¿Qué es el prompting few-shot?

El prompting few-shot consiste en incluir en el prompt unos cuantos ejemplos de una tarea, cada uno una entrada junto con la salida correcta, antes de la entrada real. El modelo continúa el patrón que marcan los ejemplos. Es más útil para categorías propias, formatos poco habituales y estilos de la casa que son más fáciles de mostrar que de describir.

¿Cuántos ejemplos debe tener un prompt few-shot?

De dos a cinco es un buen punto de partida para la mayoría de las tareas. Para clasificar, incluye al menos un ejemplo por etiqueta, más los casos dudosos que el modelo falló sin ejemplos. A partir de unos pocos, cada ejemplo extra suele ayudar menos y hace más larga cada petición.

¿Qué es el prompting one-shot?

El prompting one-shot le da al modelo exactamente un ejemplo. Basta para mostrar un formato, pero el modelo tiende a copiar ese único ejemplo demasiado de cerca, incluida su extensión, su redacción e incluso su tema. Un segundo ejemplo distinto le indica al modelo qué rasgos son el patrón y cuáles son casualidades.

¿El modelo aprende de mis ejemplos?

Solo para la petición actual. Los ejemplos influyen en la respuesta porque están en el contexto; los pesos del modelo no cambian y no se recuerda nada en la siguiente conversación. Esto se llama aprendizaje en contexto (in-context learning), y por eso un prompt few-shot tiene que llevar sus ejemplos cada vez que lo usas.

¿Unos malos ejemplos pueden empeorar la salida?

Sí. El modelo copia todo lo que los ejemplos tienen en común, incluidos los errores, la extensión y el tono que no pretendías. Si la mayoría de los ejemplos comparten una etiqueta, el modelo también tiende a inclinarse hacia ella. Comprueba que tus ejemplos sean correctos, variados y equilibrados.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR