Few-Shot Prompting: Cómo guiar a la IA con ejemplos estructurados
Few-shot prompting consiste en darle al modelo ejemplos dentro del prompt para establecer el formato, el tono y el patrón de respuesta sin necesidad de fine-tuning.
// 6 min de lectura · ● updated 2026-06
// antes de leer
Few-shot prompting es la técnica de incluir entre 1 y 10 ejemplos dentro del prompt para mostrarle al modelo exactamente qué formato, tono y tipo de respuesta esperas. En lugar de describir lo que quieres, se lo muestras. Esto funciona porque los LLMs son máquinas de reconocimiento de patrones: si ven 3 ejemplos de un mismo patrón, lo replican en la respuesta. No necesitas fine-tuning, no necesitas datasets enormes — solo ejemplos bien escritos en el prompt.
Tip Pro: Few-shot es el puente entre el prompting más básico (zero-shot) y el fine-tuning. Si zero-shot no funciona y no puedes hacer fine-tuning, few-shot es tu siguiente paso.
¿Qué es?
El término "few-shot" viene de la literatura de meta-learning (aprendizaje con pocos ejemplos) y fue popularizado por GPT-3 en 2020. La idea es que el modelo, dado un puñado de ejemplos de entrada-salida, infiere la tarea y la generaliza a nuevos casos sin actualizar sus pesos.
Hay tres variantes según cuántos ejemplos das:
| Variante | Ejemplos | Cuándo usarla |
|---|---|---|
| Zero-shot | 0 | Tareas simples donde el modelo ya entiende la instrucción |
| One-shot | 1 | Mostrar un único ejemplo del formato esperado |
| Few-shot | 2-10 | Tareas complejas donde el patrón no es obvio |
El rango efectivo suele ser de 2 a 10 ejemplos. Más de 10 puede saturar el contexto y dar rendimientos decrecientes.
Nota: Few-shot no entrena al modelo. Los ejemplos se incluyen en el prompt y se descartan después de la respuesta. No hay persistencia ni actualización de pesos.
Modelo mental
Imagina que le das instrucciones a un pasante nuevo. Podrías describirle el formato ("escribe un email formal, con asunto, saludo, cuerpo y despedida") o podrías mostrarle 3 ejemplos de correos bien escritos. El pasante entenderá mucho mejor viendo los ejemplos.
Few-shot prompting es exactamente eso: en lugar de decirle al modelo "clasifica este texto como positivo, negativo o neutral", le muestras:
Texto: "Me encantó el producto, llegó rápido y funciona perfecto"
Clasificación: Positivo
Texto: "La atención al cliente fue terrible, nunca respondieron"
Clasificación: Negativo
Texto: "El producto está bien, nada del otro mundo"
Clasificación: Neutral
Texto: "La entrega tardó un poco pero el producto es bueno"
Clasificación: [modelo completa]¿Cómo se usa?
Few-shot básico: clasificación de sentimiento
prompt = """
Clasifica cada texto como Positivo, Negativo o Neutral.
Texto: "Excelente calidad, superó mis expectativas"
Clasificación: Positivo
Texto: "No funciona como esperaba, muy decepcionado"
Clasificación: Negativo
Texto: "Es un producto normal, cumple su función"
Clasificación: Neutral
Texto: "La batería dura mucho pero la app es lenta"
Clasificación:"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
temperature=0
)
print(response.choices[0].message.content)
# → Neutral (porque combina un aspecto positivo y uno negativo)Advertencia: El orden de los ejemplos importa. Los modelos tienden a dar más peso a los ejemplos que están al final del prompt (recency bias). Pon el ejemplo más representativo al final.
Few-shot para formatear salida estructurada
prompt = """
Extrae los datos del paciente en formato JSON.
Paciente: Juan Pérez, 34 años, diagnóstico: diabetes tipo 2
{"nombre": "Juan Pérez", "edad": 34, "diagnostico": "diabetes tipo 2"}
Paciente: María García, 28 años, diagnóstico: hipertensión
{"nombre": "María García", "edad": 28, "diagnostico": "hipertensión"}
Paciente: Carlos López, 45 años, diagnóstico: asma bronquial
"""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"}
)
print(response.choices[0].message.content)
# → {"nombre": "Carlos López", "edad": 45, "diagnostico": "asma bronquial"}Few-shot dinámico (Dynamic Few-Shot)
En lugar de usar los mismos ejemplos siempre, seleccionas los más relevantes para cada consulta. Esto se hace típicamente con búsqueda por similitud usando embeddings:
import numpy as np
from openai import OpenAI
client = OpenAI()
# Base de ejemplos con su embedding
ejemplos = [
{"texto": "Me encantó la atención", "label": "Positivo", "embedding": None},
{"texto": "Pésimo servicio al cliente", "label": "Negativo", "embedding": None},
{"texto": "El producto llegó a tiempo", "label": "Positivo", "embedding": None},
# ... más ejemplos
]
# Generar embeddings para cada ejemplo
for e in ejemplos:
resp = client.embeddings.create(
model="text-embedding-3-small",
input=e["texto"]
)
e["embedding"] = resp.data[0].embedding
# Dada una consulta nueva, encontrar los ejemplos más similares
def buscar_ejemplos(consulta, k=3):
resp = client.embeddings.create(
model="text-embedding-3-small",
input=consulta
)
query_emb = np.array(resp.data[0].embedding)
similitudes = []
for e in ejemplos:
sim = np.dot(query_emb, e["embedding"])
similitudes.append((sim, e))
similitudes.sort(reverse=True)
return [e for _, e in similitudes[:k]]
# Construir prompt dinámico
consulta = "El envío fue muy rápido, lo recomiendo"
mejores = buscar_ejemplos(consulta, k=3)
prompt = "Clasifica cada texto como Positivo, Negativo o Neutral.\n\n"
for e in mejores:
prompt += f'Texto: "{e["texto"]}"\nClasificación: {e["label"]}\n\n'
prompt += f'Texto: "{consulta}"\nClasificación:'Tip Pro: Dynamic few-shot es la técnica más usada en producción para clasificación y extracción. Mejora la precisión entre 5-15% respecto a few-shot estático porque cada consulta recibe ejemplos relevantes a su contexto.
Few-shot para traducción especializada
prompt = """
Traduce los siguientes términos de marketing del inglés al español,
manteniendo el tono persuasivo y adaptándolos culturalmente.
EN: "Unlock your potential"
ES: "Descubre tu verdadero potencial"
EN: "Limited time offer"
ES: "Oferta por tiempo limitado"
EN: "Join thousands of satisfied customers"
ES: "Únete a miles de clientes satisfechos"
EN: "Take your career to the next level"
ES:"""¿Cuándo usarlo / cuándo no?
| ✅ Úsalo cuando | ❌ NO lo uses cuando |
|---|---|
| Necesitas un formato de salida muy específico | El modelo ya acierta con zero-shot |
| La tarea tiene matices que son difíciles de describir | El prompt se vuelve demasiado largo (pierdes contexto útil) |
| Quieres establecer un tono o estilo consistente | Necesitas cientos de ejemplos (ahí ya toca fine-tuning) |
| No puedes hacer fine-tuning (costos, tiempo, datos) | Los ejemplos confunden más de lo que guían |
| Haces clasificación o extracción de datos | La tarea cambia frecuentemente (mantener ejemplos actualizados es costoso) |
Tip Pro: Si usas few-shot, mide primero con zero-shot. A veces zero-shot + una instrucción clara supera a few-shot con ejemplos mal elegidos. Los ejemplos incorrectos o ambiguos empeoran el rendimiento.
Historia y evolución
Ver historia
El concepto de few-shot learning existía en machine learning tradicional antes de los LLMs, pero fue GPT-3 (2020) quien lo popularizó en el contexto del prompting. El paper "Language Models are Few-Shot Learners" (Brown et al., 2020) demostró que un modelo de 175B parámetros podía realizar tareas nuevas con solo unos pocos ejemplos en el prompt, sin fine-tuning.
A partir de ahí, la comunidad exploró variantes: dynamic few-shot (selección de ejemplos por similitud), few-shot con etiquetas invertidas (para probar si el modelo realmente entiende la tarea), y few-shot chain-of-thought (ejemplos con razonamiento paso a paso incluido).
Hoy few-shot es una técnica estándar en el toolkit de cualquier ingeniero de prompting, y su efectividad ha sido superada en algunos casos por instrucciones zero-shot mejor escritas (gracias a modelos más capaces), pero sigue siendo indispensable para tareas con formatos muy específicos o dominios con jerga especializada.
// relacionados