curso
Prompting de pocos disparos: Ejemplos, teoría, casos prácticos
Los grandes modelos lingüísticos pueden comprender y escribir textos que suenan muy parecidos a los humanos. Pero cuando se trata de conseguir que estos modelos lo hagan de la forma exacta que queremos, no es tan fácil. Hay que elegir las técnicas adecuadas para obtener una respuesta satisfactoria.
Una de estas técnicas es laprovocación de pocos disparos. Es un método inteligente que ayuda a conectar lo que el modelo ya sabe con lo que necesitamos que haga para un trabajo concreto: le das al modelo unos cuantos ejemplos rápidos para mostrarle lo que quieres, facilitándole la comprensión y la realización correcta de la tarea.
En este tutorial aprenderás
- Qué es la incitación de pocos disparos y por qué es importante.
- Cómo funcionan los avisos de pocos disparos, incluidas las demostraciones y el aprendizaje mediante el ejemplo.
- Las ventajas de los avisos de pocos disparos, como la mejora del rendimiento y la reducción de los requisitos de datos.
- Diversas aplicaciones de los avisos de pocos disparos, incluidas tareas de razonamiento complejo, escritura creativa y generación de código.
- Desafíos y mejores prácticas en la incitación de pocos disparos, incluyendo la selección de ejemplos eficaces y el diseño de incitaciones.
Este tutorial forma parte de mi "Ingeniería Prompt: Serie de entradas de blog "De cero a héroe":
¿Qué es el estímulo de pocos disparos?
La incitación de pocos ejemplos es una técnica que consiste en proporcionar a un modelo lingüístico un pequeño número de ejemplos para guiar su respuesta a una tarea específica. Este método se sitúa entre el aprendizaje cero (en el que no se dan ejemplos) y el ajuste fino totalmente supervisado (que requiere grandes cantidades de datos etiquetados).
En otras palabras, la incitación de pocos disparos es el proceso de dar a un modelo lingüístico un puñado de demostraciones o ejemplos dentro de la propia incitación. Estos ejemplos actúan como guía, mostrando al modelo cómo abordar y responder a un tipo concreto de tarea o pregunta. Cuando proporcionas estos ejemplos, esencialmente le estás diciendo al modelo: "Así es como debes responder en situaciones similares".
Veamos un ejemplo.
Imagina que queremos que el modelo clasifique el sentimiento de las críticas de películas. Un aviso de pocos disparos podría tener este aspecto:
Prompt:
Classify the sentiment of the third movie review. Use the information from the first two examples:
Review: "This movie was a waste of time."
Sentiment: Negative
Review: "I couldn't stop laughing throughout the film!"
Sentiment: Positive
Review: "The special effects were amazing, but the plot was confusing."
Sentiment:
```markdown
If we input this prompt to the LLM, and if it understands the task correctly, it will output:
```markdown
Sentiment: Mixed
En este ejemplo, el LLM utiliza los ejemplos del aviso para entender cómo clasificar el sentimiento de la tercera reseña y genera la salida en consecuencia.
Los avisos de pocos disparos son importantes porque hacen que los LLM sean más útiles y accesibles. En primer lugar, ahorra tiempo y esfuerzo, ya que no necesitas volver a entrenar completamente el modelo ni reunir enormes cantidades de datos.
En segundo lugar, es muy flexible: puedes adaptar rápidamente el modelo a diferentes tareas con sólo cambiar los ejemplos que le das. En tercer lugar, suele ayudar al LLM a realizar mejor tareas específicas o complejas en comparación con pedirle que haga algo sin ninguna orientación. Este método también pone las potentes herramientas de IA al alcance de más personas, no sólo de expertos en tecnología con muchos recursos.
Cómo funciona el estímulo de pocos disparos
El núcleo de la incitación de pocos disparos reside en proporcionar al LLM un pequeño conjunto de ejemplos o demostraciones relevantes dentro de la propia incitación. Estos ejemplos guían el modelo, ilustrando cómo abordar y responder a un tipo concreto de tarea o pregunta. Las demostraciones suelen estructurarse del siguiente modo:
- Pares de entrada-salida: Cada demostración suele constar de una entrada (por ejemplo, una pregunta o un texto) y su correspondiente salida (la respuesta o solución deseada).
- Coherencia del formato: Las demostraciones mantienen un formato coherente, que ayuda al modelo a reconocer el patrón que debe seguir.
- Relevancia de la tarea: Los ejemplos proporcionados están directamente relacionados con la tarea en cuestión, mostrando la habilidad o los conocimientos específicos requeridos.
Por ejemplo, si quisiéramos que el modelo generara coplas rimadas, una indicación de pocas palabras podría tener este aspecto:
Generate a rhyming couplet about a tree:
Input: "cat"
Output: The curious cat, so sleek and fat,
Curled up cozy on the welcome mat.
Input: "sky"
Output: Look up high into the endless sky,
Where birds and clouds go drifting by.
Input: "tree"
Output:
Cuando se le presentan estas demostraciones, el modelo lingüístico emprende un proceso que suele denominarse "aprendizaje en contexto" o "aprendizaje mediante el ejemplo". Funciona así:
- Reconocimiento de patrones: El modelo analiza los ejemplos proporcionados, identificando patrones en la forma en que las entradas se transforman en salidas.
- Inferencia de tareas: A partir de estos patrones, el modelo infiere la naturaleza de la tarea que se le pide que realice.
- Generalización: A continuación, el modelo intenta generalizar a partir de los ejemplos dados a entradas nuevas no vistas.
- Aplicación: Por último, el modelo aplica este patrón aprendido a la nueva entrada proporcionada al final de la petición.
Este proceso permite al modelo adaptar sus conocimientos y capacidades a una tarea concreta sin necesidad de modificar sus parámetros subyacentes.
Es importante tener en cuenta que la eficacia de los avisos de pocos disparos puede variar en función de factores como la complejidad de la tarea, la calidad y relevancia de los ejemplos proporcionados y las capacidades del modelo lingüístico subyacente. Sin embargo, cuando se utilizan eficazmente, las indicaciones de pocos disparos pueden hacer que los modelos lingüísticos realicen un montón de tareas diferentes con una precisión y una flexibilidad impresionantes.
Ventajas de la indicación de pocos disparos
La provocación de pocos disparos tiene algunas ventajas. Veamos por qué este método es tan útil.
Rendimiento mejorado
Una de las ventajas más notables de la incitación de pocos disparos es la mejora sustancial del rendimiento en comparación con los enfoques de cero disparos.
- Mayor precisión: Unas pocas indicaciones ayudan al modelo a comprender mejor la tarea específica, lo que da lugar a resultados más precisos, al proporcionar ejemplos relevantes.
- Mayor relevancia: Los ejemplos guían al modelo para producir respuestas más ajustadas al resultado deseado.
- Adaptación a tareas específicas: Las indicaciones de pocos pasos ayudan al LLM a utilizar lo que ya sabe para comprender y realizar tareas nuevas y específicas.
Por ejemplo, considera un escenario en el que queremos que el modelo genere descripciones de productos con un tono y un formato específicos.
Generate product descriptions:
Product: Wireless Earbuds
Description: Immerse yourself in crystal-clear audio with our sleek wireless earbuds. Featuring noise-cancellation technology and a comfortable fit, these earbuds are perfect for music lovers on the go.
Product: Smart Watch
Description: Stay connected and track your fitness with our advanced smart watch. With heart rate monitoring, GPS, and a vibrant touch screen, it's your perfect companion for an active lifestyle.
Product: Ergonomic Office Chair
Description:
Con estos ejemplos, es más probable que el modelo genere una descripción pertinente y con el estilo adecuado para la silla de oficina, en comparación con un enfoque de cero disparos, en el que podría producir una descripción más genérica o menos centrada.
Una posible salida podría ser```markdown
Descripción: Transforma tu espacio de trabajo con nuestra silla de oficina ergonómica de última generación. Diseñada para ofrecer la máxima comodidad y apoyo, esta silla cuenta con apoyo lumbar ajustable, respaldo de malla transpirable y reposabrazos personalizables. Tanto si trabajas desde casa como en un entorno corporativo, esta silla es la mezcla perfecta de estilo y funcionalidad para el profesional moderno.
Faster adaptationFew-shot prompting helps the LLM to quickly learn new tasks or topics, making it fast and easy to switch between different jobs.
Quick task learning: Models can quickly grasp new tasks with just a handful of examples, allowing for rapid prototyping and testing of new applications.Domain adaptation: It's easy to shift the model's focus to different domains or styles by simply changing the examples in the prompt.Iterative refinement: Users can quickly iterate and refine their prompts based on initial results, leading to a more agile development process.For example, if we wanted to adapt the model to generate different types of poetry, we could quickly switch between haikus, limericks, or sonnets just by changing the examples in our prompt:
```markdown
Generate poetry based on the given theme and format.
Theme: Spring
Haiku:
Cherry blossoms bloom
Soft petals dance in the breeze
Nature awakens
Theme: Summer
Haiku:
Theme: A funny cat
Limerick:
There once was a cat named Lou
Who always knew just what to do
He'd climb up a tree
Then meow with glee
And slide down as if on a chute
Theme: A clumsy dog
Limerick:
Un resultado potencial sería:
Haiku:
Scorching sun above
Cicadas sing endlessly
Beach waves cool bare feet
Limerick:
There once was a dog quite unsteady
His paws were not quite ready
He'd trip on his tail
Knock over the mail
But his smile kept his owner steady
Reducción de las necesidades de datos
Los avisos de pocos disparos reducen significativamente la necesidad de grandes cantidades de datos etiquetados, lo que supone una gran ventaja sobre los enfoques tradicionales de ajuste fino.
- Se necesita un número mínimo de ejemplos: A menudo, basta con 2-5 ejemplos para guiar eficazmente el modelo en muchas tareas.
- No es necesario afinar: A diferencia de los enfoques tradicionales de aprendizaje automático, el estímulo de pocos disparos no requiere actualizar los parámetros del modelo, lo que ahorra recursos informáticos y tiempo.
- Accesibilidad: Este enfoque hace que las capacidades avanzadas de PNL sean más accesibles para los usuarios que no tengan acceso a grandes conjuntos de datos o a los recursos necesarios para un entrenamiento exhaustivo de los modelos.
Aplicaciones del estímulo de pocos disparos
Los avisos de pocos disparos pueden aplicarse a muchos ámbitos. Su flexibilidad y eficacia lo hacen especialmente útil para tareas que requieren conocimientos especializados o producción creativa. Exploremos algunas aplicaciones clave:
Tareas de razonamiento complejas
Las indicaciones de pocos pasos pueden mejorar significativamente la capacidad de un LLM para realizar tareas que impliquen razonamiento de varios pasos, deducción lógica o conocimientos específicos del dominio.
Veamos cómo podríamos utilizar la petición de pocos disparos para una tarea de diagnóstico médico:
Provide a possible diagnosis and explain your reasoning:
Symptoms: Fever, cough, fatigue
Diagnosis: Common cold
Explanation: The combination of fever, cough, and fatigue is typical of a common cold. No severe symptoms are present, suggesting a mild viral infection.
Symptoms: Chest pain, shortness of breath, dizziness
Diagnosis: Possible heart attack
Explanation: The combination of chest pain, shortness of breath, and dizziness are warning signs of a possible heart attack. Immediate medical attention is required.
Symptoms: Headache, sensitivity to light, nausea
Diagnosis:
Explanation:
Esta indicación guía al modelo no sólo para que proporcione un diagnóstico, sino también para que explique el razonamiento que lo sustenta, demostrando un razonamiento médico complejo.
La salida del LLM sería:```markdown
Diagnóstico: Migraña
Explicación: Estos síntomas juntos son típicos de una migraña. El dolor de cabeza combinado con la sensibilidad a la luz (fotofobia) es un fuerte indicador de migraña, y las náuseas suelen acompañar a esta afección. Aunque son posibles otras causas, esta combinación sugiere claramente una migraña.
Creative writingFew-shot prompting is particularly effective in guiding LLMs to generate text in specific styles, formats, or genres.
Let’s see how to generate movie synopsis in different genres using few-shot prompting:
```markdown
Generate movie synopsis:
Genre: Sci-Fi
Synopsis: In a world where dreams can be shared, a skilled "dream thief" is tasked with the impossible: planting an idea in someone's mind. As he delves deeper into the target's subconscious, the lines between reality and dreams blur, threatening to trap him forever.
Genre: Romance
Synopsis: A chance encounter on a rainy day in Paris leads two strangers on a whirlwind 24-hour adventure. As they explore the city and each other's hearts, they must decide if their connection is strong enough to overcome the ocean that will separate them come morning.
Genre: Horror
Synopsis:
Esta indicación guía al modelo en la generación de una sinopsis que capte los elementos clave y el tono del género especificado.
Salida:
Synopsis: A remote mountain town is plagued by a series of mysterious disappearances. As a skeptical detective investigates, she uncovers an ancient cult that awakens every hundred years to feed on the town's inhabitants. With time running out and the cult's power growing, she must confront her own dark past to save the remaining townspeople and herself from a terrifying fate.
Generación de código
Unas pocas indicaciones pueden ser increíblemente útiles para ayudar a los LLM a generar código que se adhiera a convenciones específicas, siga las mejores prácticas o cumpla requisitos concretos. Los ejemplos pueden demostrar la sintaxis y estructura correctas de un lenguaje de programación concreto.
Vamos a ver cómo utilizar las indicaciones de pocos disparos para generar funciones Python con docstrings e indicaciones de tipo:
def calculate_area(length: float, width: float) -> float:
"""
Calculate the area of a rectangle.
Args:
length (float): The length of the rectangle.
width (float): The width of the rectangle.
Returns:
float: The area of the rectangle.
"""
return length * width
def celsius_to_fahrenheit(celsius: float) -> float:
"""
Convert temperature from Celsius to Fahrenheit.
Args:
celsius (float): Temperature in Celsius.
Returns:
float: Temperature in Fahrenheit.
"""
return (celsius * 9/5) + 32
def calculate_bmi(weight: float, height: float) -> float:
"""
[Generate a docstring for this function]
"""
# [Generate the function body]
Este indicador guía al modelo para que genere una función con las indicaciones de tipo adecuadas y un docstring detallado, siguiendo el patrón establecido.
La salida sería:
def calculate_bmi(weight: float, height: float) -> float:
"""
Calculate the Body Mass Index (BMI) of a person.
Args:
weight (float): The weight of the person in kilograms.
height (float): The height of the person in meters.
Returns:
float: The calculated BMI value.
Note:
BMI is calculated as weight (kg) divided by height squared (m^2).
This function assumes weight is in kilograms and height is in meters.
"""
return weight / (height ** 2)
Prompting de pocos disparos: Retos y buenas prácticas
Aunque la incitación de pocos disparos funciona bien en muchos casos, conlleva sus propios retos. Comprender estos retos y seguir las mejores prácticas puede ayudarnos a maximizar la eficacia de nuestros avisos y a obtener mejores resultados.
Seleccionar ejemplos eficaces
La calidad y la pertinencia de los ejemplos que elijas son cruciales para el éxito de la provocación de pocos disparos. Aquí tienes algunos consejos:
- Asegúrate de que los ejemplos están directamente relacionados con la tarea que quieres que realice el modelo. Los ejemplos irrelevantes pueden confundir al modelo y provocar un rendimiento deficiente.
- Utiliza un conjunto variado de ejemplos que cubran distintos aspectos de la tarea. Esto ayuda a que el modelo se generalice mejor a nuevas entradas.
- Los ejemplos deben ser claros e inequívocos. Evita ejemplos complejos o enrevesados que puedan confundir al modelo.
Diseño rápido
Crear estímulos eficaces es un arte que requiere una cuidadosa consideración de cómo se presentan los ejemplos y cómo se enmarca la tarea. Aquí tienes algunas estrategias que puedes seguir:
- Mantén un formato coherente para todos los ejemplos. Esto ayuda al modelo a reconocer el patrón que debe seguir.
- Proporciona suficiente contexto en la indicación para que la tarea quede clara. A veces, una breve instrucción o descripción puede ayudar a preparar el terreno para los ejemplos.
- Haz que el aviso sea lo más sencillo posible sin dejar de proporcionar la información necesaria. Las indicaciones demasiado complejas pueden llevar a confusión.
Evitar el sobreajuste
Uno de los riesgos de las indicaciones de pocos disparos es que el modelo se ajuste en exceso a los ejemplos proporcionados, dando lugar a resultados demasiado parecidos a los ejemplos o que no se generalicen bien a nuevas entradas. Para evitarlo:
- Utiliza una variedad de ejemplos que cubran diferentes escenarios y casos extremos. Esto ayuda al modelo a aprender a generalizar en lugar de limitarse a imitar los ejemplos.
- Evita utilizar demasiados ejemplos, ya que esto puede llevar a un sobreajuste. Unos pocos ejemplos bien elegidos suelen ser más eficaces que un gran número de ejemplos similares.
- Prueba el rendimiento del modelo con una serie de nuevas entradas para asegurarte de que se generaliza bien. Ajusta los ejemplos y la indicación según sea necesario basándote en estas pruebas.
Seguir estas buenas prácticas te ayudará a crear indicaciones de pocos disparos más eficaces que guíen al modelo en la realización de la tarea deseada con precisión y eficacia.
Conclusión
La incitación de pocos puntos es una técnica que ayuda a los LLM a aplicar sus conocimientos a tareas específicas.
Permite una rápida adaptación a nuevas tareas sin necesidad de un amplio reciclaje. Aumenta la precisión en tareas complejas proporcionando ejemplos relevantes. Es útil en varios ámbitos, desde el razonamiento a la escritura creativa y la codificación, y hace que los modelos lingüísticos avanzados sean más accesibles y adaptables.
Sin embargo, su eficacia depende de una cuidadosa selección de ejemplos y de un diseño rápido. La calidad y la relevancia de los ejemplos son cruciales para un rendimiento óptimo.
De cara al futuro, estoy entusiasmado por saber adónde puede llegar esto. Imagina sistemas que puedan elegir los ejemplos perfectos automáticamente o adaptarse sobre la marcha en función de cómo lo estén haciendo.
Así que, ¡ahí lo tienes! En pocas palabras, la provocación de pocos disparos. Sigue experimentando, sigue aprendiendo, ¡y nos vemos en la próxima!
Preguntas frecuentes
¿Existe alguna forma de medir o cuantificar la mejora en el rendimiento de la tarea cuando se utilizan avisos de pocos disparos en comparación con los enfoques de cero disparos?
Sí, las mejoras pueden medirse utilizando métricas estándar de aprendizaje automático, dependiendo de la tarea. Para las tareas de clasificación, se pueden utilizar la exactitud, la precisión, el recuerdo y la puntuación F1. Para las tareas de generación se pueden utilizar métricas como BLEU, ROUGE o la evaluación humana.
¿Existen industrias o sectores concretos en los que se hayan aplicado con especial éxito los avisos de pocos disparos?
Los avisos de pocos disparos han tenido éxito en varios sectores, como la atención al cliente (para generar respuestas), la creación de contenidos (para ayudar a escribir) y el desarrollo de software (para generar códigos). También está demostrando su valor en la sanidad, para tareas como el resumen de historiales médicos, y en las finanzas, para el análisis de mercado y la generación de informes.
¿Cómo puede influir el hecho de que se tomen pocas fotografías en el futuro mercado laboral de los científicos de datos y los ingenieros de aprendizaje automático?
Los avisos de pocos disparos podrían democratizar potencialmente el desarrollo de aplicaciones de IA, permitiendo a los no expertos crear fácilmente soluciones de IA especializadas. Esto podría cambiar el enfoque de los científicos de datos y de los ingenieros de ML hacia tareas más complejas, ingeniería rápida y desarrollo de sistemas de IA más avanzados. También podría crear nuevas funciones centradas en la elaboración de indicaciones y ejemplos eficaces para diversas aplicaciones.
¿Cuáles son las limitaciones de los avisos de pocos disparos cuando se trata de ámbitos muy especializados o técnicos?
En ámbitos muy especializados, el estímulo de pocos disparos puede resultar difícil si el modelo carece de conocimientos básicos en esa área. También puede resultar difícil captar reglas o procedimientos complejos específicos de un dominio con sólo unos pocos ejemplos. En tales casos, podría ser necesario un ajuste más exhaustivo o un entrenamiento específico del dominio.
¿Existe algún problema ético o un posible uso indebido de los avisos de pocos disparos que los usuarios deban conocer?
Sí, hay problemas éticos. Si los ejemplos no se eligen con cuidado, podrían utilizarse para guiar a los modelos de IA en la generación de contenidos sesgados o perjudiciales. También existe el riesgo de fuga de datos involuntaria si se incluye información sensible en los avisos.
Aprende IA con estos cursos
curso
Comprender la ingeniería Prompt
programa
Fundamentos empresariales de la IA
blog
Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)
blog
¿Qué es la Inteligencia artificial limitada (Artificial Narrow Intelligence, ANI)?
blog
¿Qué es un modelo generativo?
blog
¿Qué es la IA simbólica?
DataCamp Team
4 min
tutorial
Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas
tutorial