Tipos de prompts

Prompting zero-shot, one-shot y few-shot

Explicación del prompting zero-shot, one-shot y few-shot. Cuándo ayudan los ejemplos, cuántos usar, cómo elegirlos y los errores que los hacen contraproducentes.

Traducido del original en inglés. El código, los prompts y la salida de los modelos se mantienen en inglés.

El «shot» de estos términos es un ejemplo. Un prompt zero-shot no tiene ninguno, uno one-shot tiene uno y uno few-shot tiene varios. Elegir entre ellos es un compromiso entre la longitud del prompt y la precisión con que puedes fijar la salida.

Prompting zero-shot

Un prompt zero-shot da instrucciones y la entrada, nada más.

Classify the support ticket as billing, bug, or feature request.
Return only the label.

<ticket>
{{ticket}}
</ticket>

Los modelos actuales resuelven así una amplia gama de tareas. Zero-shot es la opción por defecto correcta porque es la más corta, la más barata y la más fácil de mantener. Recurre a los ejemplos solo cuando unas instrucciones claras no hayan producido lo que quieres.

Prompting one-shot

Un prompt one-shot añade un único ejemplo. Un ejemplo es muy bueno para fijar el formato de la respuesta y débil para enseñar un criterio.

Write a changelog entry for the commit below.

Example:
Commit: "fix: retry webhook delivery on 5xx"
Entry: "Fixed: webhooks are now retried when your server returns a 5xx error."

Commit: "{{commit_message}}"
Entry:

El riesgo es la imitación excesiva. Con un solo ejemplo, el modelo puede copiar su longitud, su palabra inicial o su tema.

Prompting few-shot

Un prompt few-shot ofrece varios ejemplos, normalmente de dos a cinco, para que el modelo infiera el patrón a partir de lo que tienen en común.

Rate the urgency of each message as low, medium, or high.

Message: "The export button is slightly misaligned." -> low
Message: "Checkout fails for all customers since 09:00." -> high
Message: "Can you add dark mode at some point?" -> low
Message: "Invoices for March show the wrong tax rate." -> medium
Message: "{{message}}" ->

El prompting few-shot es más útil cuando:

  • Las categorías tienen límites difusos que son difíciles de describir con reglas.
  • Necesitas una voz, un estilo o un nivel de detalle concretos.
  • La salida tiene un formato propio que el modelo no ha visto con frecuencia.

Cómo elegir buenos ejemplos

Cubre el rango. Incluye cada etiqueta o caso al menos una vez. Si todos los ejemplos son «high», el modelo se inclina hacia «high».

Incluye los casos difíciles. Un ejemplo de un caso evidente enseña poco. Los casos límite, como el mensaje de la tasa de impuestos de arriba, definen dónde está la línea.

Varía la superficie. Usa distintas longitudes, temas y redacciones, de modo que lo único que compartan los ejemplos sea el patrón que te interesa.

Mantén el formato idéntico. Los mismos delimitadores, el mismo orden y el mismo espaciado en cada ejemplo. El formato incoherente es en sí un patrón, y el modelo lo captará.

Usa datos reales. Los ejemplos tomados de entradas reales coinciden con la distribución a la que se enfrentará el prompt.

Cuántos ejemplos

Empieza con dos o tres. Añade más solo si una prueba muestra que la salida mejora. Cada ejemplo cuesta tokens en cada llamada, así que un prompt de diez ejemplos que se ejecuta un millón de veces es una partida real en la factura. Para conjuntos largos de ejemplos que nunca cambian, el almacenamiento en caché de prompts del proveedor reduce ese coste. Consulta la optimización de tokens.

Cuándo los ejemplos son contraproducentes

  • Efectos de orden. Los modelos pueden dar más peso a los últimos ejemplos. Si los resultados se inclinan hacia la última etiqueta, baraja los ejemplos.
  • Desequilibrio de etiquetas. Tres ejemplos positivos y uno negativo sesgan la salida hacia lo positivo.
  • Filtración de contenido. El modelo reutiliza nombres o datos de los ejemplos en su respuesta. Dile que los ejemplos son solo de formato, o usa contenido claramente ficticio.
  • Ejemplos que contradicen las instrucciones. Si las reglas dicen «una frase» y un ejemplo tiene dos, suele ganar el ejemplo.

Zero-shot o few-shot: una regla de decisión

Situación Empieza con
Tarea común, reglas claras Zero-shot
El formato de salida se desvía continuamente One-shot, o un esquema
Las etiquetas dependen del criterio Few-shot
Necesitas un estilo de escritura particular Few-shot
Problema de mucho razonamiento Zero-shot con una técnica de razonamiento

Para formatos estrictos, un esquema es más fiable que los ejemplos. Consulta los prompts de salida estructurada. En las tareas de razonamiento, los ejemplos de la sola respuesta ayudan menos que mostrar el razonamiento, que es la idea del prompting de cadena de pensamiento.

Separar los ejemplos de la entrada

Envuelve los ejemplos y la entrada real en delimitadores distintos para que el modelo no pueda confundirlos y para que el texto del usuario no pueda hacerse pasar por un ejemplo.

<examples>
...
</examples>

<input>
{{message}}
</input>

El analizador de prompts de PromptFlowEngine señala las variables de plantilla sin delimitar, que es el error más común en las plantillas few-shot.