ai-hub
[es]en
[concepto][cambiante]

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:

VarianteEjemplosCuándo usarla
Zero-shot0Tareas simples donde el modelo ya entiende la instrucción
One-shot1Mostrar un único ejemplo del formato esperado
Few-shot2-10Tareas 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íficoEl modelo ya acierta con zero-shot
La tarea tiene matices que son difíciles de describirEl prompt se vuelve demasiado largo (pierdes contexto útil)
Quieres establecer un tono o estilo consistenteNecesitas 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 datosLa 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