¿Qué es la Ingeniería de Prompt y cuáles son sus principales técnicas? Aprende a escribir un buen comando para IA

Dentro del mundo de la Inteligencia Artificial, un campo que está ganando destaque y relevancia es la Ingeniería de Prompt.
Este artículo tiene como objetivo explorar este concepto, desvelando su importancia y cómo está remodelando nuestra forma de comunicar y extraer conocimiento de los sistemas de IA, además de enseñarte cómo puedes empezar a aplicarlo en tu propio uso de la IA. ¿Vamos?
¿Qué es la Ingeniería de Prompt?
La Ingeniería de Prompt se concentra en el diseño estratégico de instrucciones o "prompts" para maximizar la eficacia con la que los modelos de IA, especialmente los de Procesamiento de Lenguaje Natural (PLN), responden a las solicitudes de los usuarios.
En otras palabras, es el arte de crear la solicitud ideal para recibir de la IA la respuesta más cercana posible a la que esperas o deseas.
Si ya has utilizado alguna IA, como el famoso ChatGPT, ya habrás notado que la forma en que formulas una pregunta puede cambiar drásticamente la respuesta.
Es decir, un prompt bien diseñado puede llevar a respuestas más precisas, relevantes y útiles, mientras que un prompt mal formulado puede resultar en respuestas vagas, imprecisas o completamente fuera de tema.
Por lo tanto, la Ingeniería de Prompt implica no solo elegir las palabras correctas, sino también incluir la formulación de preguntas en un contexto adecuado y aplicar técnicas específicas para refinar la respuesta.
Todo esto con la finalidad principal de guiar al modelo de IA en la dirección correcta y obtener la mejor respuesta posible para el caso específico.
Ejemplos de aplicación de la Ingeniería de Prompt
Al interactuar con uno de estos modelos para obtener un resumen de un artículo, un prompt simple como "Resume este artículo" puede resultar en un resumen básico.
Sin embargo, al refinar el prompt para incluir especificaciones como "Resume este artículo en 100 palabras, destacando los principales argumentos y conclusiones", el usuario puede guiar al modelo de IA para producir un resumen con más asertividad y detalles.
Y, como consecuencia, puede extraer información más precisa y de mayor calidad. También vemos frecuentemente estos modelos en chatbots de servicio al cliente.
En estos casos, es imprescindible tener cuidado para definir el tono de las respuestas, ya que un modelo sin un prompt bien controlado podría generar respuestas demasiado informales o incluso ofensivas, lo que podría potencialmente generar pérdidas financieras para la empresa.
Principios para la creación de un prompt
La propia OpenAI, creadora de los modelos GPT, ofrece un libro de recetas sobre cómo obtener mejores resultados usando sus modelos.
Estos son principios generales, pero que probablemente te ayudarán a obtener respuestas más coherentes:
- Tener claridad al dar las instrucciones;
- Dividir tareas complejas en subtareas más pequeñas;
- Pedirle al modelo que explique sus pasos antes de dar la respuesta;
- Pedirle al modelo que dé justificaciones de sus respuestas;
- Generar varias respuestas diferentes y pedirle al modelo que elija la mejor.
Algunos de estos conceptos pueden parecer muy obvios, mientras que otros han sido demostrados en artículos científicos, siendo que la mayor parte de estas pruebas se realizó sobre el modelo GPT-3 o el InstructGPT.
Claridad al dar instrucciones
En el tema de la claridad, puedes imaginar que eres un profesional de nivel Sénior enseñando a un Júnior a hacer alguna tarea.
Es decir, tu explicación probablemente será más clara y detallada de lo que sería al hablar con otro profesional Sénior.
Dividiendo tareas complejas en subtareas más pequeñas
¿Te acuerdas del juego de mesa "Cluedo"? En caso negativo, era un juego en el que, dadas algunas pistas, los participantes tenían que descubrir quién había cometido un asesinato, utilizando qué objeto y en qué lugar.
La respuesta era siempre algo como: "fue el Coronel Mostaza con el candelabro en la sala de estar".
Se realizó una prueba de prompt por el equipo de OpenAI dando 5 pistas y pidiéndole al modelo que respondiera con una de las siguientes opciones:
Usa las siguientes pistas para responder a la siguiente pregunta de opción múltiple, usando el siguiente procedimiento:
Pistas:
- La señorita Scarlett era la única persona en la sala.
- La persona con la pipa estaba en la cocina.
- El Coronel Mostaza era la única persona en el observatorio.
- El Profesor Plum no estaba en la biblioteca ni en la sala de billar.
- La persona con el candelabro estaba en el observatorio.
Pregunta: ¿El Coronel Mostaza estaba en el observatorio con el candelabro?
(a) Sí; el Coronel Mostaza estaba en el observatorio con el candelabro.
(b) No; el Coronel Mostaza no estaba en el observatorio con el candelabro.
(c) Desconocido; no hay información suficiente para determinar si el Coronel Mostaza estaba en el observatorio con el candelabro.
Respuesta: Sin embargo, esta fue una tarea compleja, y el modelo respondió erróneamente: "(c) Desconocido; no hay información suficiente para determinar si el Coronel Mostaza estaba en el observatorio con el candelabro."
En realidad, la solución correcta sería la opción (a), ya que con las pistas 3 y 5 es posible saber con certeza que la persona con el candelabro estaba en el observatorio y, como el Coronel Mostaza era la única persona en el observatorio, él sería la persona con el candelabro.
El equipo de OpenAI sugirió, entonces, dividir esta tarea más compleja en tareas menores, creando el siguiente prompt:
Usa las siguientes pistas para responder a la siguiente pregunta de opción múltiple, usando el siguiente procedimiento:
(1) En primer lugar, analiza las pistas una por una y considera si la pista es potencialmente relevante
(2) En segundo lugar, combina las pistas relevantes para razonar la respuesta correcta a la pregunta
(3) En tercer lugar, mapea la respuesta a una de las respuestas de opción múltiple: (a), (b) o (c)
Pistas:
- La señorita Scarlett era la única persona en la sala.
- La persona con la pipa estaba en la cocina.
- El Coronel Mostaza era la única persona en el observatorio.
- El Profesor Plum no estaba en la biblioteca ni en la sala de billar.
- La persona con el candelabro estaba en el observatorio.
Pregunta: ¿El Coronel Mostaza estaba en el observatorio con el candelabro?
(a) Sí; el Coronel Mostaza estaba en el observatorio con el candelabro.
(b) No; el Coronel Mostaza no estaba en el observatorio con el candelabro.
(c) Desconocido; no hay información suficiente para determinar si el Coronel Mostaza estaba en el observatorio con el candelabro.
Respuesta: Con este prompt, dividiendo el problema en tres partes y explicándole al modelo lo que debía hacer en cada una de ellas, obtuvieron como respuesta:
(1) En primer lugar, analiza las pistas una por una y considera si la pista es potencialmente relevante:
- La señorita Scarlett era la única persona en la sala. Esta pista no es relevante.
- La persona con la pipa estaba en la cocina. Esta pista no es relevante.
- El Coronel Mostaza era la única persona en el observatorio. Esta pista es relevante.
- El Profesor Plum no estaba en la biblioteca ni en la sala de billar. Esta pista no es relevante.
- La persona con el candelabro estaba en el observatorio. Esta pista es relevante.
(2) En segundo lugar, combina las pistas relevantes para razonar la respuesta correcta a la pregunta:
- La pista 3 y la pista 5 dicen que la persona con el candelabro estaba en el observatorio. El Coronel Mostaza era la única persona en el observatorio, así que el Coronel Mostaza era la persona con el candelabro.
(3) En tercer lugar, mapea la respuesta a una de las respuestas de opción múltiple: (a), (b) o (c)
- (a) Sí; el Coronel Mostaza estaba en el observatorio con el candelabro.
Es decir, el modelo fue capaz de llegar a la respuesta correcta cuando pudo enfocarse en las tareas menores. Es posible que un modelo más avanzado, como el GPT-4, consiguiera llegar a esta respuesta solo con el primer prompt propuesto, pero de cualquier forma, dividir un problema grande en otros más pequeños es siempre una buena idea.
Principales técnicas de Ingeniería de Prompt
Así, las principales técnicas de Ingeniería de Prompt son:
Zero-shot & Few-shot Prompting
El concepto de zero-shot prompting se refiere a la capacidad de un modelo de lenguaje de entender y ejecutar una tarea sin haber recibido ejemplos específicos de esa tarea anteriormente.
Demuestra la capacidad del modelo para generalizar a partir de su entrenamiento previo a nuevas tareas.
La palabra "shot" en este contexto se refiere a "ejemplo", y "prompting" sería la "creación de prompts".
El zero-shot prompting es esencial para evaluar la flexibilidad y la adaptabilidad de modelos de IA en situaciones en las que no han sido explícitamente preparados.
Supón que estás utilizando un modelo de PLN para clasificar el sentimiento de una reseña de producto como positiva, neutra o negativa.
Sin proporcionar al modelo ejemplos específicos de reseñas de productos y sus clasificaciones correspondientes en tu prompt, simplemente insertas el prompt: "Clasifica el sentimiento de esta reseña de producto: Este smartphone tiene una excelente duración de la batería y la cámara toma fotos increíbles.".
El modelo, entonces, usa su entrenamiento previo para inferir que la reseña es positiva, a pesar de no haber recibido otros ejemplos de lo que sería positivo, negativo o neutro dentro del prompt.
El few-shot prompting, por otro lado, implica proporcionar al modelo de IA un pequeño número de ejemplos para ayudarlo a entender el contexto y realizar una tarea específica.
Esta técnica es útil para orientar al modelo en cómo deseas que se ejecute la tarea.
Imagina que quieres que un modelo de IA genere sinopsis cortas de artículos científicos. Puedes proporcionarle al modelo tres o cuatro ejemplos de artículos científicos con sus sinopsis correspondientes.
Cada ejemplo consiste en un artículo completo con su título y un breve resumen en el formato deseado. Por ejemplo:
Título: "Avances en la Fotosíntesis Artificial"
Texto del artículo: (aquí se insertaría el texto completo del artículo científico)
Resumen: "Este estudio explora nuevos catalizadores para mejorar la eficiencia de la conversión de luz en energía, simulando el proceso de fotosíntesis encontrado en la naturaleza." Siendo que este resumen fue creado por el Ingeniero de Prompt en el formato deseado.
Teniendo algunos de estos ejemplos en el prompt, se le pasa entonces al modelo el texto de un nuevo artículo, y él utilizará los ejemplos proporcionados como guía para generar el resumen en el formato y el estilo deseados.
Sin embargo, a pesar de funcionar en algunos casos, estas técnicas más "directas al punto" todavía dejaban bastante que desear en problemas más complejos. Por este motivo, otras técnicas comenzaron a ser desarrolladas.
Chain-of-Thought Prompting
El concepto de Chain-of-Thought Prompting puede ser traducido como "Creación de prompts con Cadena de Pensamiento".
Propone que podemos obtener respuestas mucho más precisas cuando demostramos a los modelos, en el propio prompt, la forma exacta de razonar, dando una respuesta completa como ejemplo, incluyendo el paso a paso para llegar a ella.
Por eso, esta técnica también es llamada de Few-shot Chain-of-Thought Prompting (traduciendo, "Creación de prompts con Cadena de Pensamiento con algunos ejemplos"), ya que se dan muestras al modelo.
En el artículo que la propone, el equipo de Google mostró dos casos de prompts con few-shot, el primero de ellos sin la cadena de pensamiento, similar al último ejemplo de few-shot que vimos en el tópico anterior:
Pregunta: Roger tiene 5 pelotas de tenis. Él compra 2 latas más de pelotas de tenis. Cada lata contiene 3 pelotas de tenis. ¿Cuántas pelotas de tenis tiene ahora?
Respuesta: La respuesta es 11.
Pregunta: Había 23 manzanas en el comedor. Si se usaron 20 para hacer el almuerzo y se compraron 6 más, ¿cuántas manzanas tienen ahora?
Respuesta: Para este prompt, el modelo respondió, erróneamente: "La respuesta es 27."
En el segundo caso, aplicaron el concepto de cadena de pensamiento:
Pregunta: Roger tiene 5 pelotas de tenis. Él compra 2 latas más de pelotas de tenis. Cada lata contiene 3 pelotas de tenis. ¿Cuántas pelotas de tenis tiene ahora?
Respuesta: Roger empezó con 5 pelotas. 2 latas de 3 pelotas de tenis cada una equivalen a 6 pelotas de tenis. 5 + 6 = 11. La respuesta es 11.
Pregunta: Había 23 manzanas en el comedor. Si se usaron 20 para hacer el almuerzo y se compraron 6 más, ¿cuántas manzanas tienen ahora?
Respuesta: Y la solución obtenida del modelo fue: "Había 23 manzanas en el comedor originalmente. Se usaron 20 para hacer el almuerzo. Entonces, había 23 - 20 = 3. Se compraron 6 manzanas más, así que ahora hay 3 + 6 = 9. La respuesta es 9.", que es la respuesta correcta.
Ten en cuenta que las preguntas no cambiaron, solo se incluyó en la primera respuesta la cadena de pensamiento. Es decir, el paso a paso del razonamiento esperado por el modelo para responder a esa pregunta.
Zero-shot Chain-of-Thought
Pocos meses después del artículo sobre Few-shot Chain-of-Thought, un equipo compuesto por científicos de la Universidad de Tokio, en Japón, y de Google publicó otro artículo proponiendo que los modelos de lenguaje no necesitarían necesariamente toda esta explicación y ejemplos (few-shot) para dar una respuesta correcta.
Y que, para hacer que el modelo se comportara con una cadena de pensamiento (Chain-of-Thought), bastaría con utilizar la frase "Let's think step by step" (en español, "Vamos a pensar paso a paso") al final del prompt.
Como no le damos ejemplos al modelo, esta técnica fue llamada "Zero-shot Chain-of-Thought Prompting" (traduciendo, "Creación de prompts con Cadena de Pensamiento sin ningún ejemplo").
Ejemplo:
Un malabarista puede hacer malabares con 16 pelotas. La mitad de las pelotas son pelotas de golf, y la mitad de las pelotas de golf son azules. ¿Cuántas pelotas de golf azules tiene? Vamos a pensar paso a paso.
Esta técnica también fue aplicada junto a diversos benchmarks y, para uno de problemas matemáticos, fue capaz de cuadruplicar la tasa de acierto de las respuestas, de 18% a 79%.
Least-to-most Prompting
El Least-to-Most Prompting es una técnica que orienta a los modelos a resolver problemas complejos siguiendo un enfoque gradual, de menor a mayor complejidad.
Esta metodología incentiva al modelo a abordar un problema en etapas, comenzando con las partes más simples y avanzando hacia las más complejas.
Es particularmente útil para problemas que pueden descomponerse en subproblemas o cuando una tarea puede completarse en varias etapas incrementales.
Vamos a considerar el problema de escribir un ensayo sobre "Los Efectos de las Redes Sociales en la Sociedad".
El enfoque de Least-to-Most Prompting podría ser estructurado de la siguiente manera:
Prompt Inicial: "Enumera tres redes sociales principales utilizadas hoy."
- Respuesta: "Facebook, Twitter, Instagram."
Prompt Intermedio: "Para cada red social listada, describe un impacto positivo en la sociedad."
- Respuesta: "Facebook: Facilita la conexión entre personas de diferentes partes del mundo. Twitter: Sirve como una plataforma para la rápida difusión de información. Instagram: Inspira la creatividad a través del intercambio de fotos y vídeos."
Finalmente, haríamos el prompt para el que realmente deseamos la respuesta:
Prompt Final: "Con base en los impactos positivos listados, escribe un párrafo sobre cómo las redes sociales han influido positivamente en la sociedad."
- Respuesta: "Las redes sociales han transformado significativamente la forma en que nos conectamos y compartimos información. En Facebook, la capacidad de conectar personas de diferentes partes del mundo ha fortalecido relaciones y promovido la comprensión cultural. Twitter, con su plataforma de rápida difusión, se ha vuelto esencial para mantener a la gente informada, mientras que Instagram ha inspirado una ola de creatividad, permitiendo que los usuarios de todas partes compartan sus historias a través de fotos y vídeos. Juntos, estos impactos resaltan el papel fundamental de las redes sociales en el fomento de las conexiones humanas, la promoción de la conciencia global y la inspiración de la expresión creativa."
Self-consistency (Autoconsistencia)
Esta estrategia simple también propuesta por el equipo de Google consiste en usar la técnica de Few-shot Chain-of-Thought para obtener un conjunto de diversas respuestas para un mismo prompt y, entonces, elegir la respuesta que apareció el mayor número de veces.
Pregunta: Los patos de Janet ponen 16 huevos por día. Ella come tres en el desayuno todas las mañanas y hace muffins para sus amigos todos los días usando cuatro más. Ella vende el resto por 2 dólares por huevo. ¿Cuánto dinero gana todos los días?
A continuación, este prompt fue pasado varias veces al modelo (en diferentes ventanas de chat o en diferentes llamadas a la API, por ejemplo), lo que generó diversas respuestas diferentes (mostraremos solo 3 de ellas para este ejemplo):
- Ella tiene 16 - 3 - 4 = 9 huevos restantes. Entonces, ella gana 2 dólares por 9 = 18 dólares por día.
- Eso significa que ella vende el resto por 2 dólares por (16 - 4 - 3) = 26 dólares por día.
- Ella come 3 en el desayuno, así que le sobran 16 - 3 = 13. Luego, ella hace muffins, así que le sobran 13 - 4 = 9 huevos. Entonces, ella tendrá 9 huevos por 2 dólares = 18 dólares.
Janet…
…
Y así, se realizó un análisis sobre todas esas respuestas generadas. Como la respuesta más frecuente fue "18 dólares", se concluye que esa es la respuesta correcta y se exhibe.
Los puntos negativos de esta técnica son que solo sirve para problemas donde tengamos una respuesta factual, ya sea numérica o lógica (no sirve para escribir texto creativo, por ejemplo) y que es más costosa, ya que para generar 10 respuestas tendrás 10 veces más costo, computacional y financiero.
Chain-of-Verification
En la Chain-of-Verification, después de que el modelo genera una respuesta inicial a un prompt, se formulan preguntas de seguimiento para ayudar a verificar la veracidad y la precisión de la respuesta inicial.
El modelo es, entonces, animado a reevaluar o confirmar sus propias conclusiones a través de una serie de verificaciones que él mismo hará, ya sea citando fuentes o aplicando lógica deductiva para reforzar la confiabilidad de la información proporcionada.
Por ejemplo, al pedir que un modelo citara a algunos políticos nacidos en la ciudad de Nueva York, podría ofrecer una lista con 10 nombres.
A continuación, para cada uno de ellos, el modelo generaría una pregunta: "¿Dónde nació {persona_1}?" para cada uno de ellos, y verificaría las propias respuestas, con el fin de asegurarse de cuáles de ellos habrían realmente nacido en Nueva York.
Por último, generaría la respuesta final, solo con los políticos nacidos en Nueva York, eliminando posibles alucinaciones de la respuesta original.
Otras técnicas de prompt engineering
Existen otras técnicas usadas por Ingenieros de Prompt, como Selection-inference Prompting, Maieutic Prompting, ReAct, ART, y nuevas son creadas diariamente.
Por eso, una gran parte del trabajo de un Ingeniero de Prompt es estar actualizado con los artículos científicos más recientes y relevantes.
Conclusión
A medida que avanzamos en la era de la Inteligencia Artificial, la Ingeniería de Prompt se destaca como una habilidad crítica para desarrolladores, investigadores y usuarios de IA.
Actúa como un puente entre el lenguaje humano y la comprensión computacional, permitiendo que exploremos el potencial pleno de los modelos de IA de manera responsable e innovadora.
No es solo una herramienta para mejorar la interacción humano-computador, sino una invitación a repensar cómo nos comunicamos con las máquinas, abriendo caminos para un futuro donde la IA se integre de manera aún más productiva en nuestras vidas.
Escrito por: Fabrício Carraro
Fabrício Carraro se graduó en Ingeniería Informática por la UNICAMP y tiene un posgrado en Análisis de Datos y Aprendizaje Automático por la FIAP. Actualmente vive en España.
Artículo traducido y editado por Iara Martínez.