Saltar al contenido principal
Volver al blogCopiar Markdown
·Actualizado ·7 min de lectura
·aiprompt-engineeringbest practices

One-shot prompting: un buen ejemplo gana a las instrucciones

One-shot prompting es darle al modelo un único ejemplo de calidad. Clasificación, refactorización y JSON, y cómo validar la salida antes de usarla. →

Óscar Gallego

Ingeniero de software · Málaga

Ilustración de una persona dando instrucciones a un modelo de lenguaje
En este artículo

Cuando la IA me devuelve una respuesta vaga, reviso primero qué le he pedido y qué contexto le he dado.

Dos técnicas que puedes probar son el one-shot prompting (darle al modelo un único buen ejemplo) y la colocación del contexto (poner las instrucciones críticas al principio o al final). No requieren frameworks ni fine-tuning; el resultado depende del modelo y de la tarea.

Un buen ejemplo vale más que un párrafo de instrucciones

One-shot prompting significa exactamente lo que parece: incluyes un solo ejemplo de calidad en el prompt y dejas que el modelo generalice a partir de él.

Piensa en pair programming con un compañero. No le pasas una especificación de “cómo formateamos aquí”. Le dices: mira cómo hicimos esto la última vez, ahora haz lo nuevo igual.

Un ejemplo le da al modelo un patrón concreto de formato, tono o transformación. Puede aclarar lo que una descripción deja ambiguo, pero no sustituye los casos de prueba: comprueba también las entradas que se alejan del ejemplo.

Análisis de sentimiento: enseña el formato una vez

Supón que quieres clasificar reseñas de clientes como positivas, negativas o neutras. El ejemplo muestra cómo tratar una reseña con opiniones mezcladas.

Prompt:

Eres un experto en análisis de sentimiento. Clasifica la siguiente reseña de cliente en una de tres categorías: “Positiva”, “Negativa” o “Neutra”.

Ejemplo: Reseña: “El producto llegó rápidamente, pero el embalaje estaba dañado. El artículo en sí funciona perfectamente.” Sentimiento: “Neutra”

Ahora, clasifica el sentimiento de esta reseña:

Reseña a Clasificar: “¡Esta actualización de software es terrible! Rompió la mitad de mis funciones y ahora es increíblemente lenta.”

El ejemplo hace el trabajo pesado, así que elígelo bien

  • Elígelo con cuidado: marca el patrón de todo lo que viene después.
  • Que sea representativo. Un caso extremo como único ejemplo le enseña al modelo el caso extremo.
  • Incluye todos los elementos que quieres en la salida.
  • Añade instrucciones explícitas donde el ejemplo solo se quede ambiguo.
  • No lo compliques. El modelo generaliza el patrón.

Refactorización de código: el patrón es el prompt

Aquí tienes un prompt one-shot que refactoriza JavaScript de cadenas de promesas a async/await.

Prompt:

Eres un desarrollador experto en JavaScript. Refactoriza la siguiente función para usar la sintaxis async/await manteniendo la lógica idéntica.

Ejemplo: Código Original:

function fetchData(url) {
  return fetch(url)
    .then((response) => {
      if (!response.ok) {
        throw new Error("La respuesta de la red no fue correcta");
      }
      return response.json();
    })
    .then((data) => {
      console.log("Datos recibidos:", data);
      return data;
    })
    .catch((error) => {
      console.error("Error en fetch:", error);
      throw error;
    });
}

Código Refactorizado:

async function fetchData(url) {
  try {
    const response = await fetch(url);
    if (!response.ok) {
      throw new Error("La respuesta de la red no fue correcta");
    }
    const data = await response.json();
    console.log("Datos recibidos:", data);
    return data;
  } catch (error) {
    console.error("Error en fetch:", error);
    throw error;
  }
}

Ahora, refactoriza esta función:

Función a Refactorizar:

function getUser(id) {
  return database.findUser(id).then((user) => {
    return getPermissions(user.role).then((permissions) => {
      user.permissions = permissions;
      return user;
    });
  });
}

Extracción de datos: un ejemplo para fijar la estructura

Aquí es donde el one-shot se gana el sueldo. Enséñale al modelo el texto de entrada y el JSON exacto que quieres de vuelta, y conviertes texto sin estructura en algo que tu código puede parsear sin ceremonia.

El ejemplo aclara la estructura esperada, pero no garantiza que el modelo devuelva JSON válido ni que los datos sean correctos. Antes de guardarlos, parsea la respuesta y valida los campos con un esquema. Si faltan datos, evita rellenarlos con suposiciones.

Prompt:

Eres un especialista en extracción de datos. Tu tarea es extraer información específica del mensaje de un usuario y formatearla como un objeto JSON.

EJEMPLO: Texto: “Hola, me gustaría reservar un vuelo para dos adultos desde Nueva York (JFK) a Los Ángeles (LAX) el 25 de diciembre de 2025. Preferiría un vuelo por la mañana con Delta.”

Salida JSON:

{
  "intent": "reservar_vuelo",
  "pasajeros": {
    "adultos": 2,
    "niños": 0
  },
  "origen": {
    "ciudad": "Nueva York",
    "codigo_aeropuerto": "JFK"
  },
  "destino": {
    "ciudad": "Los Ángeles",
    "codigo_aeropuerto": "LAX"
  },
  "fecha": "2025-12-25",
  "preferencias": {
    "hora_del_dia": "mañana",
    "aerolinea": "Delta"
  }
}

TU TAREA: Extrae la información relevante del siguiente texto y formatéala como un objeto JSON, siguiendo la estructura del ejemplo.

Texto a Procesar: “Hola, quiero reservar un vuelo para tres adultos desde Austin (AUS) a Nueva York (JFK) el 10 de marzo de 2026. Preferimos salir por la tarde con American Airlines.”

La información en medio de un contexto largo puede perderse

Las ventanas de contexto no paran de crecer, y el marketing sugiere que puedes tirarles cualquier cosa y el modelo se aclarará. La investigación dice otra cosa. “Lost in the Middle: How Language Models Use Long Contexts” encontró que los modelos rinden mejor cuando la información crítica está al principio o al final de la ventana de contexto.

En las tareas y modelos del estudio, el rendimiento podía bajar cuando la información relevante estaba en medio del contexto. Eso no demuestra que todos los modelos actuales ignoren esa parte del prompt: comprueba cómo responde el que usas con tus propios documentos.

Si construyes un pipeline RAG que añade documentos al prompt, prueba distintas posiciones para la información relevante. Una ventana grande permite incluir más texto; no garantiza que el modelo use bien cada fragmento.

Una restricción enterrada a mitad de documento se pierde en silencio

Imagina que tienes que resumir un documento largo con una restricción muy concreta: el resumen debe incluir un dato específico (un código de producto, una fecha clave, el nombre de alguien) que quizá aparece exactamente una vez, en mitad del texto.

Pon la restricción (“Incluir el código de producto XYZ123 en el resumen”) en medio de un documento muy largo y el modelo puede pasarla de largo, entregándote un resumen sin el único detalle que necesitabas.

Para que la respete, colócala al principio o al final del prompt, claramente separada del documento.

Prompt:

RESTRICCIÓN IMPORTANTE: Tu resumen DEBE incluir el código de producto “PROD-789”.

Resume el siguiente documento en 3-4 oraciones, centrándote en las características y beneficios clave.

[Contenido del Documento Largo Aquí, donde “PROD-789” podría mencionarse una vez en el medio]

Alternativamente, podrías colocar la restricción al final:

Resume el siguiente documento en 3-4 oraciones, centrándote en las características y beneficios clave.

[Contenido del Documento Largo Aquí]

RESTRICCIÓN IMPORTANTE: Asegúrate de que el resumen mencione el código de producto “PROD-789”.

Dónde va cada cosa

  • Empieza de cero cuando puedas: un chat nuevo es un contexto enfocado.
  • Pon al principio las instrucciones, datos o preguntas críticas.
  • ¿Llega información nueva e importante? Añádela al final. No la insertes en el medio.
  • El medio es para lo suplementario, lo que el modelo puede permitirse hojear.

Prueba el mismo caso con y sin ejemplo, y mueve la instrucción crítica al principio o al final. Compara las respuestas y valida si cumplen la tarea antes de incorporar el prompt a tu aplicación. Si el prompt alimenta a un agente que además informa de su propio trabajo, mira cómo verifico esas frases con un segundo agente.

Lectura relacionada: cuando tus prompts se porten bien, el siguiente escalón es no escribirlos: deja de promptear a tu agente, escribe loops.


P.D. ¿Tienes un prompt que no obedece lo pongas donde lo pongas? Enséñamelo en LinkedIn.

Última actualización:

Comparte este artículo

Artículos relacionados