Zero-shot, one-shot y few-shot
Elija el número de ejemplos.
Zero-shot, one-shot y few-shot es una lección gratuita de AI Prompt Engineering en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Prompt Engineering, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Prompt Engineering incluye 4 lecciones en total.
El espectro de ejemplos
Los shots indican el número de demostraciones etiquetadas incluidas en el prompt antes de la consulta real. El zero-shot se basa completamente en los conocimientos previos del modelo; el few-shot condiciona el modelo con una pequeña distribución específica de la tarea durante la inferencia, sin actualizar ningún peso.
Esto es el aprendizaje en contexto (ICL): el transformer trata los ejemplos como parte de la secuencia y realiza implícitamente una especie de regresión aprendida mediante metaaprendizaje sobre ellos. La elección de k (el número de shots) es un hiperparámetro que se ajusta empíricamente, no una práctica recomendada fija.
from dataclasses import dataclass
@dataclass
class ICLConfig:
k: int # number of demonstrations
selection: str # 'static' | 'dynamic'
order: str # 'random' | 'similarity' | 'curriculum'
# Zero-shot is simply k=0
cfg = ICLConfig(k=0, selection='static', order='random')Cuándo conviene el zero-shot
Prefiera el zero-shot cuando la tarea esté bien representada en el preentrenamiento (resumen, traducción y clasificación habitual) y cuando los ejemplos puedan sesgar el formato de salida. En los modelos ajustados para seguir instrucciones, una directiva clara junto con un esquema de salida suele dar mejores resultados que unos ejemplos que anclan sutilmente el estilo.
El zero-shot también minimiza el coste de tokens y la latencia, y evita el sesgo hacia la etiqueta mayoritaria, por el que el modelo predice en exceso la clase que domina las demostraciones.
# Zero-shot with explicit schema beats vague few-shot
PROMPT = (
'Classify sentiment as POSITIVE, NEGATIVE, or NEUTRAL.\n'
'Respond with only the label.\n\n'
'Text: ' + user_text + '\nLabel:'
)One-shot como ancla de formato
El one-shot destaca cuando la tarea es conceptualmente clara, pero el formato de salida es inusual o estricto. Una sola demostración enseña la estructura exacta (claves JSON, delimitadores y uso de mayúsculas y minúsculas) con mucha más fiabilidad que una descripción en prosa.
Utilice one-shot cuando desee restringir la estructura sin gastar tokens ni arriesgarse al sesgo en la distribución de etiquetas que introducen varios ejemplos.
ONE_SHOT = (
'Extract entities as JSON.\n\n'
'Input: Apple released the iPhone in Cupertino.\n'
'Output: {"org": ["Apple"], "product": ["iPhone"], "loc": ["Cupertino"]}\n\n'
'Input: ' + query + '\nOutput:'
)Few-shot y la curva de k
El rendimiento en función de k rara vez es monótono. Normalmente aumenta, alcanza una meseta y después empeora a medida que los ejemplos saturan el contexto, diluyen la atención y alejan la consulta actual del foco de recencia del modelo.
Realice un barrido empírico de k en {1, 2, 4, 8, 16} sobre un conjunto reservado. El valor óptimo de k depende de la complejidad de la tarea, la longitud de los ejemplos y el aprovechamiento efectivo del contexto por parte del modelo, que normalmente es muy inferior a la ventana anunciada.
def sweep_k(eval_set, candidates, ks=(1,2,4,8,16)):
results = {}
for k in ks:
acc = evaluate(build_prompt(candidates[:k]), eval_set)
results[k] = acc
return max(results, key=results.get)Por qué funciona el ICL: inferencia implícita
La investigación describe el ICL como una forma de inferencia bayesiana implícita que realiza el modelo: las demostraciones ayudan a localizar el concepto latente de tarea que el modelo ya aprendió durante el preentrenamiento. Los ejemplos actúan como evidencias que reducen la distribución posterior sobre las tareas, no como conocimiento nuevo.
Esto explica un hallazgo contraintuitivo: incluso las etiquetas incorrectas de las demostraciones pueden conservar gran parte de la precisión, porque la señal dominante es el formato y el espacio de etiquetas, no la correspondencia entre entradas y etiquetas.
# Min, Lyu et al. (2022): label correctness matters less than
# - the input distribution
# - the label space (which classes exist)
# - the format / structure
# Implication: invest in representative inputs + valid label setPresupuesto de tokens y compensaciones de costes
Cada ejemplo consume contexto y dinero. Con demostraciones largas, cuatro ejemplos pueden eclipsar la consulta. Calcule una métrica de coste por punto de precisión: si k=8 aporta un 0,5 % más que k=4 con el doble de tokens, k=4 es la mejor opción en producción.
En las canalizaciones de alto rendimiento, prefiera el almacenamiento en caché del bloque estático de ejemplos para que las demostraciones repetidas se facturen y procesen una sola vez.
def cost_efficiency(acc_by_k, tokens_by_k, price_per_1k):
return {
k: acc_by_k[k] / (tokens_by_k[k] / 1000 * price_per_1k)
for k in acc_by_k
}
# Pick the k maximizing accuracy per dollar, not raw accuracySesgo hacia la etiqueta mayoritaria y de posición
Los prompts few-shot contienen sesgos ocultos. El sesgo hacia la etiqueta mayoritaria hace que el modelo favorezca la clase más frecuente en las demostraciones. El sesgo de recencia da un peso excesivo al último ejemplo. El sesgo hacia los tokens comunes favorece los tokens que aparecen con frecuencia.
Las técnicas de calibración, como la calibración contextual, estiman la distribución previa del modelo con una entrada sin contenido (por ejemplo, el token N/A) y la dividen, lo que estabiliza notablemente los clasificadores few-shot.
# Contextual calibration (Zhao et al. 2021)
p_cf = model_probs(prompt_with_input('N/A')) # content-free prior
W = 1.0 / p_cf # diagonal correction
def calibrated(probs):
return normalize(W * probs)Equilibrar el conjunto de demostraciones
Para contrarrestar el sesgo hacia la etiqueta mayoritaria, equilibre las clases en las demostraciones y varíe su orden. Para una clasificación binaria con k=4, utilice 2 ejemplos positivos y 2 negativos, barajados, en lugar de una proporción de 3:1.
En las tareas de generación, equilibre las dimensiones relevantes (longitud, tono y dificultad) para que el modelo no se limite a un único modo que haya visto con mayor frecuencia.
import random
def balanced_demos(pool, k, label_fn):
by_label = {}
for ex in pool:
by_label.setdefault(label_fn(ex), []).append(ex)
per = k // len(by_label)
picks = [e for lst in by_label.values() for e in random.sample(lst, per)]
random.shuffle(picks)
return picksFew-shot frente a fine-tuning
Few-shot es la herramienta adecuada cuando la tarea cambia con frecuencia, los datos son escasos o no puede alojar un modelo ajustado. El fine-tuning resulta mejor cuando dispone de miles de ejemplos, necesita la menor latencia por llamada o desea incorporar el formato al modelo para mantener los prompts cortos.
Una estrategia habitual en producción es crear un prototipo con few-shot, recopilar las trazas exitosas y destilarlas después en un fine-tuning para eliminar por completo los tokens de los ejemplos.
# Decision heuristic
if num_labeled < 500 or task_volatility == 'high':
strategy = 'few-shot ICL'
elif latency_budget_ms < 200 or prompt_token_cost_dominant:
strategy = 'fine-tune + zero-shot'
else:
strategy = 'few-shot now, distill later'Las tareas de razonamiento necesitan más que ejemplos few-shot
En el razonamiento de varios pasos, los pares de respuestas few-shot sin más contexto pueden perjudicar el rendimiento: el modelo aprende a saltar directamente a una respuesta que no puede justificar. Combine few-shot con demostraciones de chain-of-thought que muestren la traza de razonamiento, no solo la etiqueta final.
El número de ejemplos interactúa con la profundidad del razonamiento; a menudo, 2 ejemplos de CoT de alta calidad superan a 8 ejemplos que solo contienen respuestas en las evaluaciones comparativas de aritmética y lógica.
COT_SHOT = (
'Q: A shop had 23 apples, used 20, bought 6 more. How many now?\n'
'A: Start 23, minus 20 leaves 3, plus 6 is 9. Answer: 9\n\n'
'Q: ' + question + '\nA:'
)Un marco de evaluación para k
Trate la selección de ejemplos como una búsqueda empírica respaldada por un marco de evaluación. Reserve un conjunto de validación, controle el orden de los ejemplos con varias semillas e informe de la media y la varianza, porque la precisión few-shot puede variar varios puntos únicamente por el orden.
Registre el número de tokens y la latencia para cada valor de k, de modo que la decisión final optimice el objetivo completo y no solo la precisión.
def harness(pool, val, ks, seeds=5):
report = {}
for k in ks:
accs = []
for s in range(seeds):
demos = balanced_demos(pool, k, label_fn)
accs.append(evaluate(build_prompt(demos), val))
report[k] = (mean(accs), stdev(accs))
return reportComprobación rápida
Compruebe su comprensión de la selección de ejemplos y de los sesgos del ICL.
Resumen
Conclusiones principales:
kes un hiperparámetro ajustable; realice un barrido y observe la curva de aumento, meseta y deterioro.- El zero-shot es adecuado para tareas conocidas; el one-shot ancla formatos estrictos; el few-shot condiciona la respuesta a una distribución de tareas.
- El ICL funciona localizando una tarea aprendida durante el preentrenamiento, por lo que el formato y el espacio de etiquetas predominan sobre la corrección de las etiquetas.
- Contrarreste los sesgos hacia la etiqueta mayoritaria, de recencia y hacia los tokens comunes mediante equilibrio, barajado y calibración contextual.
- Optimice la precisión por unidad monetaria, combine las tareas de razonamiento con ejemplos de CoT y destile los prompts few-shot estables en modelos ajustados mediante fine-tuning.
Preguntas frecuentes
¿La lección «Zero-shot, one-shot y few-shot» es gratis?
Sí — el texto completo de «Zero-shot, one-shot y few-shot» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Prompt Engineering, actualiza a CoddyKit PRO. El curso de AI Prompt Engineering incluye 4 lecciones en total.
¿Qué aprenderé en «Zero-shot, one-shot y few-shot»?
Elija el número de ejemplos. Practicas AI Prompt Engineering con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Prompt Engineering?
No se requiere experiencia previa. AI Prompt Engineering en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Zero-shot, one-shot y few-shot»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Prompt Engineering?
Sí. Cada lección de AI Prompt Engineering incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Zero-shot, one-shot y few-shot
- Diseño de ejemplos eficaces
- Orden y actualidad de los ejemplos
- Selección dinámica de ejemplos few-shot