La ingeniería de prompt ha emergido como una disciplina innovadora dedicada al desarrollo y optimización de prompts para aprovechar al máximo los modelos de lenguaje (ML) en diversas aplicaciones e investigaciones. Esta práctica es fundamental para comprender a fondo las capacidades y limitaciones de los grandes modelos de lenguaje (LLM).
En el ámbito de la investigación, la ingeniería de prompt se convierte en una herramienta invaluable para potenciar las habilidades de los LLM en tareas tanto comunes como complejas, abarcando desde la respuesta a preguntas hasta el razonamiento aritmético. A su vez, los desarrolladores encuentran en esta disciplina un aliado para diseñar prompts robustos e efectivos que interactúen de manera eficiente con los LLM y otras herramientas.
La ingeniería de prompt no se reduce únicamente al diseño y desarrollo de prompts; abarca una amplia gama de habilidades y técnicas esenciales para la interacción y desarrollo con LLM. Esta destreza se revela como un componente crucial para la interacción, construcción y comprensión de las capacidades de los LLM. Desde mejorar la seguridad de los LLM hasta la incorporación de conocimientos de dominio y herramientas externas, la ingeniería de prompt se convierte en una herramienta versátil y poderosa.
Con el creciente interés en el desarrollo con LLM, presentamos nuestra nueva guía de ingeniería de prompt. Este recurso integral recopila los últimos artículos, guías de aprendizaje, modelos, conferencias, referencias y nuevas capacidades de LLM, proporcionando una visión completa del mundo en constante evolución de la ingeniería de prompt.
La ingeniería de prompt ha emergido como una disciplina vanguardista dedicada al desarrollo y optimización de prompts, permitiendo la eficiente utilización de modelos de lenguaje (ML) en diversas aplicaciones e investigaciones. Este enfoque especializado es esencial para una comprensión más profunda de las capacidades y limitaciones de los grandes modelos de lenguaje (LLM).
En el ámbito de la investigación, la ingeniería de prompt se erige como un catalizador para potenciar las habilidades de los LLM en tareas tanto comunes como complejas, abarcando desde la respuesta a preguntas hasta el razonamiento aritmético. Simultáneamente, los desarrolladores se valen de la ingeniería de prompt para concebir técnicas robustas y efectivas que faciliten la interacción con los LLM y otras herramientas.
Esta guía exhaustiva se sumerge en los conceptos fundamentales de los prompts, proporcionando una visión holística sobre cómo utilizarlos para interactuar e instruir a los grandes modelos de lenguaje (LLM). Cada ejemplo presentado ha sido meticulosamente probado con text-davinci-003 en el playground de OpenAI, a menos que se especifique lo contrario. Cabe destacar que se han empleado las configuraciones predeterminadas, es decir, temperature=0.7 y top-p=1.
A través de esta guía, exploraremos el fascinante mundo de la ingeniería de prompt, desvelando sus aplicaciones prácticas y ofreciendo una visión detallada de cómo esta disciplina está dando forma al futuro de la interacción con los LLM.
Cuando te sumerges en el universo de prompts, tu interacción con el Modelo de Lenguaje Grande (LLM) se lleva a cabo a través de una API o directamente. Es esencial comprender que puedes ajustar ciertos parámetros para obtener resultados diversos según tus necesidades.
Temperatura – En términos simples, la temperatura influye en la determinación de los resultados. A valores bajos, la elección del siguiente token es más determinista, optando siempre por el token más probable. En contraste, al aumentar la temperatura, se introduce mayor aleatoriedad, fomentando resultados más diversos y creativos. Este ajuste, por ende, redistribuye los pesos hacia otros posibles tokens. Para tareas como preguntas y respuestas basadas en hechos, se recomienda una temperatura baja para propiciar respuestas concisas y precisas. Sin embargo, para la generación de contenido creativo, un valor más alto puede ser beneficioso.
Top_p – Similarmente, mediante top_p, una técnica de muestreo llamada muestreo de núcleo, puedes modular la determinación del modelo al generar una respuesta. Para respuestas exactas y factuales, se aconseja mantener este valor bajo. En cambio, si buscas respuestas más diversas, incrementar el valor de top_p resulta útil.
Se sugiere, en términos generales, ajustar uno de los dos parámetros, no ambos, según tus objetivos.
Previo a explorar ejemplos prácticos, ten en cuenta que los resultados pueden variar según la versión específica del LLM que estés utilizando. Asegúrate de considerar la configuración adecuada según el contexto y los resultados deseados.
Si bien los prompts simples ofrecen versatilidad, la calidad de los resultados reside en la información proporcionada al modelo y en la ingeniosidad del diseño del prompt. La clave está en enriquecer el prompt con detalles como instrucciones, preguntas, contexto o ejemplos para lograr resultados más precisos y coherentes.
Prompt: El cielo es
Resultado: azul
Observación: El modelo genera respuestas coherentes con el contexto inicial, pero los resultados pueden ser inesperados.
Prompt: Completa la oración: El cielo es
Resultado: tan hermoso hoy.
Análisis: Al dar una instrucción más específica, el modelo produce una respuesta más alineada con la tarea deseada. Este enfoque se conoce como ingeniería de prompts.
Un prompt estándar adopta la forma de una pregunta o una instrucción:
El formato QA (pregunta y respuesta) se utiliza para solicitar respuestas sin entrenamiento directo:
La técnica de prompting con pocos ejemplos implica proporcionar demostraciones para orientar al modelo. Puede formatearse así:
Versión en formato QA:
Observación: El formato de tarea varía según la naturaleza de la tarea, como en el caso de una tarea de clasificación simple:
Prompt: Esto es impresionante! // Positivo Esto es malo! // Negativo Guau, esa película fue genial! // Positivo ¡Qué programa tan horrible! //
Resultado: Negativo
La estrategia de prompting con pocos ejemplos permite el aprendizaje en contexto, otorgando a los modelos de lenguaje la capacidad de aprender tareas con solo unos pocos ejemplos de demostración.
Conforme exploramos diversos ejemplos y aplicaciones en la ingeniería de prompts, es evidente que ciertos elementos constituyen la anatomía de un prompt. Estos componentes incluyen:
Una tarea o instrucción específica que se le asigna al modelo. Esta indicación guía al modelo hacia la acción deseada.
Información externa o contexto adicional que contextualiza la tarea. Al proporcionar contexto, se mejora la capacidad del modelo para generar respuestas más pertinentes.
La entrada o pregunta que planteamos al modelo, la cual constituye el núcleo de nuestra búsqueda de respuesta. Este componente define el propósito y alcance de la tarea.
Un elemento que especifica el tipo o formato de la salida deseada. Este indicador aclara la expectativa con respecto a la forma en que el modelo debe presentar la respuesta.
Es importante señalar que no todos estos componentes son obligatorios en cada prompt, y el formato varía según la tarea específica. La elección de elementos dependerá de los objetivos y requisitos particulares de la tarea en cuestión.
En las próximas guías, exploraremos ejemplos específicos que ilustrarán cómo manipular estos componentes para crear prompts efectivos y lograr resultados precisos en una variedad de aplicaciones.
A medida que te sumerges en el diseño de prompts, ten en cuenta estos consejos clave para optimizar tus resultados:
Estos consejos proporcionan una base sólida para el diseño de prompts efectivos. A medida que experimentas con diferentes enfoques, ajusta tus estrategias según la tarea específica y busca la iteración continua para perfeccionar tus prompts en función de tus aplicaciones particulares.
A continuación, te presentaré ejemplos concretos de cómo los prompts bien diseñados pueden emplearse para abordar diversas tareas. Estos ejemplos abarcarán temas como:
Prompt: Resumen el siguiente párrafo en dos oraciones. Texto: «La inteligencia artificial (IA) ha transformado rápidamente diversos sectores, desde la atención médica hasta la industria automotriz. Estas innovaciones continúan moldeando nuestro futuro de manera significativa.»
Resultado: La IA ha revolucionado sectores como la atención médica y la industria automotriz. Estas innovaciones están dejando una huella duradera en nuestro futuro.
Prompt: Extrae los nombres de las personas mencionadas en el siguiente texto. Texto: «En la última entrevista, Elon Musk habló sobre los avances tecnológicos y la colonización de Marte. También mencionó a Gwynne Shotwell como una colaboradora clave en SpaceX.»
Resultado: Personas: Elon Musk, Gwynne Shotwell
Prompt: Responde a la siguiente pregunta utilizando información del texto. Pregunta: ¿Cuál es la capital de Francia? Texto: «París es conocida por su arquitectura icónica y su rica historia cultural.»
Resultado: Respuesta: La capital de Francia es París.
Prompt: Clasifica el siguiente texto como positivo o negativo. Texto: «A pesar de los desafíos, la empresa logró superar las expectativas y alcanzar nuevos hitos en el último trimestre.»
Resultado: Clasificación: Positivo
Prompt: Imagina una conversación entre un estudiante y un profesor. El estudiante pregunta sobre la teoría de la relatividad de Einstein. Texto generado: (Conversación simulada)
Prompt: Genera una función en Python que calcule la suma de los números pares en una lista. Texto generado: (Código Python)
Prompt: Explica el concepto de oferta y demanda en economía. Mantén la explicación concisa y clara. Texto generado: (Explicación breve)
Estos ejemplos ilustran cómo la ingeniería de prompts permite realizar una amplia gama de tareas, desde la síntesis de información hasta la generación de código y el razonamiento conceptual. La clave radica en diseñar prompts específicos y ajustados a la tarea que se desea lograr.
Ahora, nos sumergiremos en técnicas más avanzadas de ingeniería de prompts, destinadas a mejorar la eficacia en tareas complejas y fascinantes. Estas estrategias te permitirán perfeccionar tus interacciones con modelos de lenguaje y obtener resultados más precisos y enriquecedores.
Técnica: Ajuste de la Temperatura
Técnica: Uso de Top_p (Núcleo)
Técnica: Demostración Contextual
Técnica: Formato de Pregunta y Respuesta (QA)
Técnica: Claridad y Especificidad
Técnica: Separadores y Formato Distintivo
Técnica: Versionización del Prompt
Técnica: Evaluación Iterativa
Estas técnicas avanzadas te proporcionarán las herramientas necesarias para enfrentarte a tareas complejas y lograr resultados más precisos y contextualmente ricos. La experimentación y la adaptabilidad son clave en la ingeniería de prompts, así que no dudes en ajustar y perfeccionar tus enfoques según las demandas específicas de tus aplicaciones.
Los modelos de lenguaje actuales, entrenados exhaustivamente y ajustados para seguir instrucciones, exhiben la notable capacidad de abordar tareas sin la necesidad de entrenamiento específico. Este enfoque, conocido como «prompt sin entrenamiento» (zero-shot), se ilustra con el siguiente ejemplo:
Prompt: Clasifica el texto en neutral, negativo o positivo. Texto: Creo que las vacaciones están bien. Sentimiento:
Output: Neutral
Es crucial destacar que en la instrucción proporcionada no se incluyeron ejemplos o demostraciones previas para orientar al modelo. Este enfoque sin entrenamiento demuestra la versatilidad de los modelos de lenguaje.
Se ha observado que el «ajuste de instrucciones» mejora significativamente el rendimiento del aprendizaje sin entrenamiento (Wei et al., 2022). Este concepto implica afinar los modelos en conjuntos de datos caracterizados mediante instrucciones específicas. Asimismo, se ha implementado el aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF), un enfoque que alinea mejor el modelo con las preferencias humanas. Estos avances recientes han impulsado modelos como ChatGPT, marcando un hito significativo en el rendimiento de los modelos de lenguaje.
Cuando el prompt sin entrenamiento no logra el resultado deseado, la estrategia recomendada es proporcionar demostraciones o ejemplos directamente en la instrucción. Este enfoque, conocido como «entrenamiento con pocos ejemplos», será explorado en detalle en la siguiente sección, demostrando su eficacia en casos donde la guía explícita es necesaria.
Aunque los modelos de lenguaje actuales pueden abordar tareas sin entrenamiento previo (zero-shot), enfrentan desafíos en tareas más complejas. La estrategia de prompts con pocas muestras surge como una técnica efectiva para facilitar el aprendizaje contextual, proporcionando demostraciones en el propio prompt. Estas demostraciones condicionan al modelo para tareas más desafiantes, actuando como ejemplos que guían la generación de respuestas.
Según Touvron et al. (2023), esta técnica se popularizó con el escalado de modelos a tamaños significativos (Kaplan et al., 2020).
Demostraremos el uso de prompts con pocas muestras con un ejemplo de Brown et al. (2020). En esta instancia, la tarea consiste en utilizar correctamente una nueva palabra en una oración.
Prompt: Un «whatpu» es un animal pequeño y peludo originario de Tanzania. Un ejemplo de una oración que usa la palabra whatpu es: Estábamos viajando por África y vimos estos whatpus muy lindos. Hacer un «farduddle» significa saltar hacia arriba y hacia abajo muy rápido. Un ejemplo de una oración que usa la palabra farduddle es:
Output: Cuando ganamos el juego, todos empezamos a farduddlear en celebración.
Este ejemplo ilustra cómo el modelo aprende a realizar la tarea con solo un ejemplo (es decir, 1-shot). Para tareas más desafiantes, se puede experimentar aumentando la cantidad de demostraciones (por ejemplo, 3-shot, 5-shot, 10-shot, etc.).
Según Min et al. (2022), algunos consejos adicionales sobre el uso de demostraciones con pocas muestras incluyen:
Ahora, exploremos un ejemplo con etiquetas aleatorias:
Prompt: Esto es increíble! // Negativo Esto es malo! // Positivo ¡Guau, esa película fue increíble! // Positivo ¡Qué horrible programa! //
Output: Negativo
Incluso cuando las etiquetas se han aleatorizado, el modelo produce la respuesta correcta. Este fenómeno sugiere que los modelos GPT actuales son más resistentes a formatos aleatorios. A pesar de esto, es esencial realizar análisis más detallados para confirmar la aplicabilidad de esta observación en diversas tareas y variaciones de estímulos.
Limitaciones de los Prompts con Pocas Muestras: Aunque los prompts con pocas muestras funcionan bien en muchas tareas, presentan limitaciones en tareas de razonamiento más complejas. El ejemplo anterior revela una tarea de razonamiento aritmético donde la estrategia de prompts con pocas muestras no garantiza respuestas confiables. Este escenario resalta la necesidad de estrategias de prompt más avanzadas
Introducido por Wei et al. (2022), el Prompt de Cadena de Pensamientos (CoT) destaca como una estrategia avanzada para abordar tareas que implican razonamiento complejo. Esta técnica, cuando se combina con prompts de pocas muestras (few-shot), potencia la capacidad del modelo para realizar tareas desafiantes que requieren pasos de razonamiento antes de generar respuestas.
Ejemplo de CoT: Prompt: Los números impares en este grupo suman un número par: 4, 8, 9, 15, 12, 2, 1. A: Al sumar todos los números impares (9, 15, 1) se obtiene 25. La respuesta es Falsa. Los números impares en este grupo suman un número par: 17, 10, 19, 4, 8, 12, 24. A: Al sumar todos los números impares (17, 19) se obtiene 36. La respuesta es Verdadera. Los números impares en este grupo suman un número par: 16, 11, 14, 4, 8, 13, 24. A: Al sumar todos los números impares (11, 13) se obtiene 24. La respuesta es Verdadera. Los números impares en este grupo suman un número par: 17, 9, 10, 12, 13, 4, 2. A: Al sumar todos los números impares (17, 9, 13) se obtiene 39. La respuesta es Falsa. Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1. A:
Salida: Al sumar todos los números impares (15, 5, 13, 7, 1) se obtiene 41. La respuesta es Falsa.
Este ejemplo muestra cómo proporcionar pasos de razonamiento mejora significativamente la capacidad del modelo para abordar tareas más complejas.
Incluso un Ejemplo es Suficiente con CoT: Prompt: Los números impares en este grupo suman un número par: 4, 8, 9, 15, 12, 2, 1. A: Al sumar todos los números impares (9, 15, 1) se obtiene 25. La respuesta es Falsa. Los números impares en este grupo suman un número par: 15, 32, 5, 13, 82, 7, 1. A:
Salida: Al sumar todos los números impares (15, 5, 13, 7, 1) se obtiene 41. La respuesta es Falsa.
Incluso con un solo ejemplo, el modelo demuestra una capacidad impresionante para razonar y generar respuestas precisas.
CoT sin Entrenamiento Previo (Zero-shot CoT): Prompt: Fui al mercado y compré 10 manzanas. Regalé 2 manzanas al vecino y 2 al reparador. Luego fui y compré 5 manzanas más y me comí 1. ¿Cuántas manzanas me quedan?
Salida: 11 manzanas
La respuesta es incorrecta. Ahora, intentemos con el Prompt especial:
Prompt: Fui al mercado y compré 10 manzanas. Regalé 2 manzanas al vecino y 2 al reparador. Luego fui y compré 5 manzanas más y me comí 1. ¿Cuántas manzanas me quedan? Pensemos paso a paso.
Output: En primer lugar, comenzaste con 10 manzanas. Regalaste 2 manzanas al vecino y 2 al reparador, así que te quedaron 6 manzanas. Luego compraste 5 manzanas más, así que ahora tenías 11 manzanas. Finalmente, te comiste una manzana, por lo que te quedan 10 manzanas.
Este ejemplo ilustra cómo la inclusión del paso de razonamiento «Pensemos paso a paso» mejora la capacidad del modelo para abordar problemas de lógica y razonamiento, incluso sin entrenamiento previo.
En resumen, el Prompt de Cadena de Pensamientos (CoT) emerge como una estrategia poderosa para capacitar modelos en tareas complejas que involucran razonamiento. La inclusión de pasos de razonamiento intermedios facilita la generación de respuestas más precisas y contextuales. Esta técnica puede combinarse con prompts de pocas muestras para maximizar la eficacia del modelo en tareas desafiantes.
La autoconsistencia, una técnica avanzada propuesta por Wang et al. (2022), busca superar la decodificación codiciosa ingenua en la generación de cadenas de pensamiento. Su objetivo es muestrear varios caminos de razonamiento a través de pocos ejemplos y usar estas generaciones para seleccionar la respuesta más consistente. Esta técnica demuestra ser efectiva en tareas que involucran razonamiento aritmético y sentido común.
Ejemplo de Razonamiento Aritmético sin Autoconsistencia: Prompt: Cuando tenía 6 años, mi hermana tenía la mitad de mi edad. Ahora tengo 70 años, ¿cuántos años tiene mi hermana?
Salida sin Autoconsistencia: 35
¡La respuesta es incorrecta! Intentemos mejorar esto con autoconsistencia utilizando ejemplos adicionales del artículo de Wang et al. (2022) (Tabla 17):
Prompt con Autoconsistencia: P: Hay 15 árboles en el bosque. Los trabajadores plantarán árboles en el bosque hoy. Después de que terminen, habrá 21 árboles. ¿Cuántos árboles plantaron los trabajadores del bosque hoy? R: Comenzamos con 15 árboles. Luego tenemos 21 árboles. La diferencia debe ser el número de árboles que plantaron. Por lo tanto, deben haber plantado 21 – 15 = 6 árboles. La respuesta es 6.
P: Si hay 3 autos en el estacionamiento y llegan 2 autos más, ¿cuántos autos hay en el estacionamiento? R: Ya hay 3 autos en el estacionamiento. Llegan 2 más. Ahora hay 3 + 2 = 5 autos. La respuesta es 5.
… (otros ejemplos)
Salida con Autoconsistencia: Salida 1: Cuando tenía 6 años, mi hermana tenía la mitad de mi edad, por lo que tenía 3 años. Ahora tengo 70 años, por lo que ella tiene 70 – 3 = 67 años. La respuesta es 67.
Salida 2: Cuando el narrador tenía 6 años, su hermana tenía la mitad de su edad, que son 3 años. Ahora que el narrador tiene 70 años, su hermana tendría 70 – 3 = 67 años. La respuesta es 67.
Salida 3: Cuando tenía 6 años, mi hermana tenía la mitad de mi edad, por lo que tenía 3 años. Ahora tengo 70 años, por lo que ella tiene 70/2 = 35 años. La respuesta es 35.
A través de autoconsistencia, se muestrean múltiples respuestas y se selecciona la más consistente. En este caso, la respuesta final es 67, que es mayoritaria en las generaciones.
Esta técnica, si bien puede ser más compleja, demuestra ser eficaz al mejorar la coherencia y precisión en la generación de cadenas de pensamiento, especialmente en tareas de razonamiento más avanzado. La autoconsistencia proporciona una herramienta valiosa para abordar la complejidad en la generación de lenguaje.
La generación de conocimiento para ser utilizado como parte del prompt es una técnica prometedora, especialmente en tareas que requieren conocimiento previo sobre el mundo. Liu et al. (2022) propone utilizar esta estrategia para mejorar el rendimiento de los modelos de lenguaje en tareas de razonamiento del sentido común.
Ejemplo Práctico: En un escenario donde el modelo inicialmente falla al responder una pregunta de sentido común sobre el golf, se puede aplicar la generación de conocimiento para corregir este error. Aquí hay una demostración simplificada del proceso:
Conocimiento Generado:
Input: Parte del golf es tratar de obtener un puntaje total más alto que los demás.
Conocimiento 1: El objetivo del golf es jugar un conjunto de hoyos en el menor número de golpes...
Conocimiento 2: El golf es un deporte de precisión en el que los jugadores compiten usando muchos tipos de palos...
Pregunta: ¿Parte del golf consiste en intentar obtener un total de puntos más alto que los demás? Sí o No?
Conocimiento: (Información estructurada sobre el golf)
Respuesta 1 (confianza muy alta): No, el objetivo del golf no es obtener un total de puntos más alto...
Respuesta 2 (confianza mucho más baja): Sí, parte del golf consiste en intentar obtener un total de puntos más alto...
Este enfoque demuestra cómo la generación de conocimiento puede corregir errores y mejorar la precisión del modelo en tareas de razonamiento del sentido común. La información adicional proporcionada ayuda al modelo a comprender mejor el contexto y a generar respuestas más informadas.
Es esencial tener en cuenta que este proceso simplificado puede ser refinado y ajustado para abordar casos más complejos y específicos. Consultar el paper original proporciona detalles adicionales y pautas para implementar esta estrategia de manera efectiva.
La Generación de Recuperación Aumentada (RAG) es una técnica que combina un componente de recuperación de información con un modelo generador de texto para abordar tareas que requieren un mayor conocimiento. Aquí hay algunos puntos clave sobre RAG:
Combinación de Recuperación y Generación: RAG se basa en la idea de combinar un modelo de recuperación, que obtiene información relevante de una fuente externa (por ejemplo, Wikipedia), con un modelo generador de texto. Esta combinación permite que el modelo acceda a conocimientos externos de manera eficiente.
Flexibilidad y Adaptabilidad: RAG es altamente adaptable y puede ajustarse con precisión sin necesidad de volver a entrenar todo el modelo. Esto es crucial para situaciones en las que los hechos pueden cambiar con el tiempo, ya que permite la actualización del conocimiento sin pasar por el proceso completo de reentrenamiento.
Memoria Paramétrica y No Paramétrica: RAG utiliza un modelo preentrenado de secuencia a secuencia (seq2seq) como memoria paramétrica y un índice de vectores densos de Wikipedia como memoria no paramétrica. Esto permite un acceso eficiente a la información almacenada en la fuente externa.
Mejora de la Consistencia y Fiabilidad: La combinación de recuperación y generación mejora la consistencia factual y la fiabilidad de las respuestas generadas. Esto ayuda a abordar el problema de «alucinación» que a veces se encuentra en modelos generativos de lenguaje.
Resultados y Rendimiento: RAG ha demostrado un buen rendimiento en varias métricas y tareas, como Preguntas Naturales, Preguntas de la Web, CuratedTrec, MS-MARCO, Jeopardy y la verificación de datos de FEVER. Sus respuestas son más factuales, específicas y diversas.
Uso en la Práctica: En la práctica, los enfoques basados en recuperadores como RAG se han vuelto más populares y se combinan con modelos de lenguaje de última generación, como ChatGPT, para mejorar la calidad y la coherencia de las respuestas generadas.
RAG representa un avance significativo en la generación de lenguaje natural al abordar la necesidad de conocimientos específicos y actualizados en tareas complejas. Su capacidad para adaptarse a cambios en el conocimiento externo lo convierte en una herramienta valiosa en entornos dinámicos donde la información puede evolucionar con el tiempo.
La Ingeniería de Prompts Automático (APE) es un marco de trabajo propuesto por Zhou et al. que se centra en la generación y selección automáticas de instrucciones para tareas específicas. Este enfoque aborda el problema de generación de instrucciones como una tarea de optimización de caja negra, utilizando Modelos de Lenguaje de Aprendizaje Automático (LLMs) para generar y buscar soluciones candidatas.
Pasos Principales de APE:
Modelo de Lenguaje de Inferencia: APE comienza con un gran modelo de lenguaje, que actúa como un modelo de inferencia. Este modelo recibe demostraciones de salida y genera candidatos a instrucciones para la tarea en cuestión.
Generación de Soluciones Candidatas: Las soluciones candidatas generadas por el modelo de lenguaje de inferencia sirven como guía para el procedimiento de búsqueda. Estas instrucciones candidatas se utilizan en pasos posteriores del proceso.
Ejecución de Instrucciones: Las instrucciones candidatas se ejecutan utilizando un modelo de destino específico para la tarea. Este paso implica aplicar las instrucciones generadas para obtener resultados específicos de la tarea.
Selección de la Mejor Instrucción: Se calculan puntuaciones de evaluación para las instrucciones ejecutadas, y se selecciona la instrucción más apropiada según estas puntuaciones. Este paso implica evaluar la calidad y eficacia de las instrucciones generadas.
Comparación con el Prompt Humano:
APE se compara con un prompt humano específico, en este caso, el prompt «Veamos esto paso a paso para asegurarnos de tener la respuesta correcta». La investigación demuestra que APE puede descubrir automáticamente un prompt «Chain-of-Thought» (COT) que supera al prompt diseñado por humanos «Pensemos paso a paso» (Kojima et al., 2022).
El resultado es una mejora en el rendimiento en conjuntos de datos específicos como MultiArith y GSM8K. Esto destaca la capacidad de APE para optimizar automáticamente las instrucciones utilizadas en tareas complejas, eliminando la necesidad de anotaciones humanas y mostrando un enfoque más eficiente y efectivo en la ingeniería de prompts.
Los métodos tradicionales de Cadena de Pensamiento (CoT) se enfrentan al desafío de depender de un conjunto fijo de ejemplos humanamente anotados. Este enfoque puede resultar subóptimo, ya que los ejemplos predeterminados pueden no ser los más efectivos para abordar diversas tareas. En respuesta a esta limitación, Diao et al. (2023) han propuesto un enfoque innovador conocido como «Prompt Activo» (Active-Prompt).
Pasos Principales del Enfoque Prompt Activo:
Consulta al LLM: El proceso comienza con la realización de una consulta al Modelo de Lenguaje de Aprendizaje (LLM). Esta consulta puede realizarse con o sin ejemplos de Cadena de Pensamiento.
Generación de Respuestas Potenciales: Se generan k posibles respuestas para un conjunto específico de preguntas de entrenamiento. Estas respuestas representan las posibles interpretaciones del modelo en función de la consulta realizada.
Cálculo de Incertidumbre: Se calcula una métrica de incertidumbre, utilizando el concepto de desacuerdo entre las k respuestas generadas. Preguntas que generan mayor desacuerdo entre las respuestas potenciales se consideran más inciertas.
Anotación por Humanos: Las preguntas más inciertas seleccionadas se envían para su anotación por humanos. Este proceso implica que los humanos proporcionen ejemplos de razonamiento específicos para las preguntas seleccionadas.
Inferencia con Nuevos Ejemplos: Los nuevos ejemplos anotados se utilizan para mejorar la inferencia en cada pregunta correspondiente. Estos ejemplos adicionales brindan información específica y ajustan el modelo para tareas específicas.
Ventajas del Enfoque Prompt Activo:
Adaptabilidad Dinámica: La adaptación dinámica a través de la anotación activa permite ajustar el modelo a diferentes tareas y escenarios sin depender de un conjunto fijo de ejemplos.
Optimización de Rendimiento: Al centrarse en las preguntas más inciertas, el enfoque permite una optimización eficiente del rendimiento del modelo al incluir ejemplos de razonamiento específicos.
Evolución Continua: A medida que se anotan más preguntas y se introducen nuevos ejemplos, el modelo puede evolucionar continuamente para abordar una amplia gama de tareas de manera efectiva.
En resumen, el enfoque Prompt Activo de Diao et al. presenta una estrategia dinámica para mejorar la Cadena de Pensamiento, proporcionando una manera adaptable y efectiva de optimizar los modelos de lenguaje para tareas específicas mediante la anotación activa de ejemplos de razonamiento.
En la búsqueda continua de mejorar las capacidades de los Modelos de Lenguaje de Aprendizaje (LLM), Li et al. (2023) han propuesto una innovadora técnica de alineación denominada «Prompt de Estímulo Direccional». Esta técnica se centra en la generación de un estímulo o pista que dirige de manera específica al LLM para producir resúmenes deseados.
Principales Componentes y Enfoques:
Entrenamiento del LM de Política Ajustable: Un componente clave de esta técnica implica entrenar un Modelo de Lenguaje de política ajustable. Este modelo tiene la tarea específica de generar el estímulo o pista que se utilizará para guiar al LLM en la generación de resúmenes.
Uso de Aprendizaje por Reforzamiento (RL): Se destaca el aumento en el uso de técnicas de Aprendizaje por Reforzamiento para optimizar los LLM. En este contexto, el estímulo generado por el LM de Política Ajustable actúa como una guía para reforzar el comportamiento deseado del LLM.
Comparación con Alineamiento Estándar: La figura proporcionada en el trabajo de Li et al. compara visualmente cómo el Prompt de Estímulo Direccional se diferencia del alineamiento estándar. Se destaca que el LM utilizado puede ser relativamente pequeño y está específicamente optimizado para generar pistas que dirijan de manera efectiva a un LLM congelado de caja negra.
Ventajas del Prompt de Estímulo Direccional:
Guía Específica: Al generar un estímulo direccional, se proporciona al LLM una guía específica sobre la dirección deseada para la generación de resúmenes.
Optimización Efectiva: La combinación de Aprendizaje por Reforzamiento y el uso de un LM de Política Ajustable permite una optimización más efectiva del comportamiento del LLM.
Flexibilidad en el Tamaño del Modelo: La técnica destaca que el LM utilizado para generar el estímulo puede ser un modelo más pequeño, lo que puede ser más eficiente en términos computacionales.
Aplicaciones Potenciales:
Generación de Resúmenes Específicos: La técnica puede ser valiosa en situaciones donde se requiere que el LLM genere resúmenes específicos y deseados.
Adaptabilidad: La capacidad de entrenar el modelo de política ajustable para adaptarse a diferentes tareas y contextos brinda flexibilidad en la aplicación de esta técnica.
En resumen, el Prompt de Estímulo Direccional propuesto por Li et al. presenta una aproximación interesante para mejorar la generación de resúmenes mediante la incorporación de un estímulo específico, destacando la utilidad del Aprendizaje por Reforzamiento en este contexto.
El framework ReAct, propuesto por Yao et al. en 2022, presenta una metodología novedosa que aprovecha Modelos de Lenguaje de Aprendizaje (LLM) para generar trazas de razonamiento y acciones específicas de la tarea de manera intercalada. Este enfoque tiene el propósito de mejorar la capacidad del modelo para inducir, hacer seguimiento y actualizar planes de acción, incluso en situaciones que involucran la gestión de excepciones.
Principales Características de ReAct:
Generación de Trazas de Razonamiento: ReAct utiliza LLM para generar trazas de razonamiento que ayudan al modelo a comprender, razonar y planificar acciones específicas en el contexto de una tarea dada. Estas trazas permiten al modelo gestionar de manera más efectiva las complejidades y variaciones en la ejecución de tareas.
Ejecución de Acciones Específicas: De manera intercalada con la generación de trazas de razonamiento, ReAct incorpora un paso de acción que permite al modelo interactuar y recopilar información de fuentes externas. Esto puede incluir la búsqueda de datos en bases de conocimiento, la consulta de entornos externos, entre otros. Estas acciones buscan mejorar la fiabilidad y la base factual de las respuestas generadas por el modelo.
Manejo de Excepciones: La capacidad de ReAct para generar trazas de razonamiento le proporciona al modelo una mejor preparación para manejar situaciones excepcionales. Puede adaptar sus acciones y planes en función de la evolución de la tarea.
Interacción con Herramientas Externas: Una característica distintiva de ReAct es su capacidad para interactuar con herramientas externas. Esto implica la posibilidad de recuperar información adicional de fuentes externas, como bases de conocimiento, contribuyendo así a respuestas más fundamentadas.
Aplicaciones Potenciales de ReAct:
Tareas Complejas y Dinámicas: ReAct puede ser particularmente beneficioso en entornos donde las tareas son complejas, dinámicas y requieren adaptabilidad a diferentes situaciones.
Manejo de Información Externa: La interacción con herramientas externas permite al modelo incorporar datos adicionales, lo que puede ser esencial en tareas que necesitan acceso a información actualizada.
Generación Fiable de Respuestas: Al combinar generación de trazas de razonamiento y acciones específicas, ReAct busca mejorar la fiabilidad y la calidad de las respuestas generadas por el modelo.
El framework ReAct representa una contribución significativa al campo al abordar la integración de generación de lenguaje y acciones específicas de manera intercalada, mejorando así la capacidad de los modelos para abordar tareas complejas y dinámicas.
Recientemente, Zhang et al. (2023) presentaron un enfoque innovador en el ámbito de la generación de cadenas de pensamiento (CoT) al incorporar modalidades múltiples, incluyendo texto y visión. A diferencia del CoT tradicional, que se centra exclusivamente en la modalidad del lenguaje, el CoT multimodal expande su alcance para abordar información tanto textual como visual en un marco de dos etapas.
Etapas Principales del Enfoque CoT Multimodal:
Generación de Razones Multimodales:
Inferencia de Respuestas con Razones Informativas:
Rendimiento del CoT Multimodal:
El modelo CoT multimodal desarrollado por Zhang et al. ha sido evaluado y comparado con el modelo GPT-3.5 en el banco de pruebas de ScienceQA. Los resultados indican que el CoT multimodal supera al GPT-3.5 en términos de rendimiento en esta tarea específica.
Implicaciones y Contribuciones:
Ampliación del Alcance Multimodal: La incorporación de modalidades múltiples, como texto e imágenes, en el proceso de generación de cadenas de pensamiento representa una extensión significativa del alcance de los enfoques tradicionales de CoT.
Mejora en Rendimiento: El modelo CoT multimodal ha demostrado un rendimiento superior en comparación con el GPT-3.5 en el banco de pruebas de ScienceQA, sugiriendo que la inclusión de información visual puede ser beneficiosa para tareas específicas.
Avance en Comunicación Multimodal: Este enfoque contribuye al avance general en la comprensión y generación de texto en conjunción con información visual, lo que es esencial en aplicaciones del mundo real donde la información se presenta en formatos diversos.
En este ejemplo práctico, utilizaremos el enfoque de Modelos de Lenguaje Asistidos por Programa (PAL) propuesto por Gao et al. (2022). El objetivo es desarrollar una aplicación simple que utilice un LLM para responder preguntas relacionadas con la comprensión de fechas. Aprovecharemos el intérprete de Python para ejecutar programas generados por el modelo.
Paso 1: Configuración e Imports
import openai
from datetime import datetime
from dateutil.relativedelta import relativedelta
import os
from langchain.llms import OpenAI
from dotenv import load_dotenv
# Configuración de la API de OpenAI y LangChain
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
# Configuración de la instancia del modelo de lenguaje
llm = OpenAI(model_name='text-davinci-003', temperature=0)
question = "Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?"
DATE_UNDERSTANDING_PROMPT = """
# Q: 2015 is coming in 36 hours. What is the date one week from today in MM/DD/YYYY?
# ... (Otras preguntas de ejemplo para el entendimiento de fechas)
# Q: Jane was born on the last day of February in 2001. Today is her 16-year-old birthday. What is the date yesterday in MM/DD/YYYY?
# If Jane was born on the last day of February in 2001 and today is her 16-year-old birthday, then today is 16 years later.
today = datetime(2001, 2, 28) + relativedelta(years=16)
# Yesterday,
yesterday = today - relativedelta(days=1)
# The answer formatted with %m/%d/%Y is
yesterday.strftime('%m/%d/%Y')
# Q: {question}
""".strip() + '\n'
llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question))
print(llm_out)
exec(llm_out)
En este ejemplo, el modelo se entrena para comprender preguntas relacionadas con fechas y, posteriormente, se utiliza para responder a una pregunta específica. La respuesta se evalúa ejecutando el programa generado por el modelo con el intérprete de Python.
Este enfoque PAL demuestra cómo los modelos de lenguaje pueden ser asistidos por programas para abordar tareas específicas y generar respuestas basadas en un razonamiento programático.
Utilizando estrategias de prompt efectivas, los Modelos de Lenguaje de última generación (LLM) pueden generar datos de manera eficiente para diversas tareas, incluido el análisis de sentimientos. A continuación, se presenta un ejemplo de cómo podríamos utilizar un LLM para producir ejemplos de análisis de sentimientos:
Prompt:
Produce 10 ejemplos para análisis de sentimientos. Los ejemplos se categorizan como positivos o negativos. Produce 2 ejemplos negativos y 8 ejemplos positivos. Usa este formato para los ejemplos:
Q:
A:
Q: ¡Acabo de recibir las mejores noticias!
A: Positivo
Q: ¡Acabamos de recibir un aumento en el trabajo!
A: Positivo
Q: Estoy muy orgulloso de lo que logré hoy.
A: Positivo
Q: ¡Estoy teniendo el mejor día de mi vida!
A: Positivo
Q: Realmente estoy deseando el fin de semana.
A: Positivo
Q: ¡Acabo de recibir el mejor regalo de mi vida!
A: Positivo
Q: Estoy tan feliz en este momento.
A: Positivo
Q: Me siento tan afortunado de tener una familia increíble.
A: Positivo
Q: El clima afuera está tan triste.
A: Negativo
Q: Acabo de recibir algunas noticias terribles.
A: Negativo
Este enfoque permite utilizar el LLM para generar rápidamente ejemplos de análisis de sentimientos con la cantidad y la polaridad específicas requeridas. Este tipo de generación de datos es útil para experimentos, pruebas y entrenamiento de modelos en tareas de análisis de sentimientos.
Clavié et al. (2023) realizaron un caso de estudio que destaca la importancia de la ingeniería de prompts aplicada a la clasificación de texto, específicamente en el contexto de determinar si un trabajo es adecuado para un recién graduado. Aquí se resumen los hallazgos clave y las modificaciones probadas en los prompts:
Hallazgos Clave:
Modificaciones del Prompt Probadas:
Impacto de Rendimiento de Modificaciones del Prompt:
Precision | Recall | F1 | Apego a la Plantilla |
---|---|---|---|
Baseline | 61.2 | 70.6 | 65.6 |
CoT | 72.6 | 85.1 | 78.4 |
Zero-CoT | 75.5 | 88.3 | 81.4 |
+rawinst | 80 | 92.4 | 85.8 |
Estos resultados destacan la importancia de diseñar prompts de manera efectiva para guiar el razonamiento de los modelos de lenguaje en tareas específicas, incluso superando modelos especializados como DeBERTa-V3 en esta tarea específica.