Me pagan por escribir mensajes y mis amigos lo saben. Por eso, cuando uno de ellos preguntó: «¿No podemos simplemente usar ChatGPT para calcular el voto final?» Todos los ojos se volvieron hacia el tipo calvo en la habitación.
Éramos ocho y acabábamos de probar seis Galettes des Rois diferentes. El «Pastel de los Reyes» es un pastel tradicional francés que normalmente se disfruta en enero. Es una celebración arraigada tanto en el cristianismo como en la fiesta romana de Saturnalia, donde las normas sociales se invirtieron brevemente. Para nosotros, era solo otra excusa para comer pasteles elegantes y decidimos clasificarlos. Todos abrieron la aplicación notas en su teléfono, pero nadie se puso de acuerdo sobre una plantilla clara para anotar los votos.
- Algunos usaban una lista dinámica, moviendo los pasteles hacia arriba y hacia abajo con cada nueva porción.
- Otros los enumeraron sin orden, agregando un número que representa el rango antes de cada pastel. A veces después.
- ¿La única constante? Errores de ortografía, lo cual es natural ya que a las panaderías francesas les encantan los juegos de palabras.
Recibí ocho listas separadas en un mensaje de texto. Todo lo que tenía que hacer era escribir un mensaje elegante para convertir datos desordenados en un cálculo elegante. Era hora de brillar.
Pero… Pereza. No quería desconectarme del grupo durante más de 15 minutos para escribir un mensaje sofisticado. Así que escribí uno breve en cinco minutos y lo ejecuté. Los primeros resultados aterrizaron en el territorio del disparate.
Agregué algunas instrucciones y presioné «Enviar». Todavía no hubo suerte. Hablé de los datos con dos amigos y lo intenté de nuevo. Lo que salió fueron ceños fruncidos sincronizados.
Pasaron más de 20 minutos más antes de que comenzara a agitar mi teléfono. «Lo tengo», grité. «¡Lo tengo!»
De camino a casa, una pregunta seguía dando vueltas en mi cabeza. ¿Cómo puedes escribir mejores indicaciones cuando te sientes perezoso?
Tabla de contenidos
TL;DR:
Haz que el modelo escriba un prompt mejor para ti. Utiliza un prefijo específico:
Act as an expert Prompt Engineer.
I’ll give you a messy prompt.
Reason step by step to improve it.
Write the final prompt as an elegant template with clear sections.
Use lists, placeholders, and examples.
##
Prompt:»»»<Insert your prompt here, and yes please, use the triple quotes.>»»»
Pero ¿cómo y por qué funciona esto?
¿Y cómo puedes implementarlo en tu código?
El sutil arte de meta-prompting
Prompt Engineering es una forma elegante de decir «Escribe cada vez mejores instrucciones para la IA hasta que haga exactamente lo que quieres«. Pruebas diferentes palabras hasta que encuentras una fórmula que genera la respuesta deseada.
Es una ciencia empírica basada en prueba y error. Los profesionales de la IA a menudo comparten descubrimientos de su búsqueda para dominar los modelos de lenguaje grandes y desbloquear sus «capacidades latentes».
En algún momento, se puso de moda oscilar las técnicas de estimulación de izquierda a derecha. Te hacía parecer inteligente en la creciente burbuja de la IA.
Todo el revuelo hizo que la gente olvidara por qué existía Prompt Engineering en primer lugar: conseguir que la IA genere respuestas relevantes.
La tarea misma de “enseñar a la IA cómo producir respuestas de alta calidad” ha sido la principal prioridad de los ingenieros que perfeccionaron los modelos de IA.
En la fase de ajuste, proporcionas a los LLM pares de «preguntas y respuestas» de alta calidad. Cuantas más preguntas y respuestas proporciones a tu modelo, más aprenderás a responder preguntas como lo haría un asistente.
Como efecto secundario, los LLM también aprendieron a hacer mejores preguntas.
La idea de las meta-prompting es utilizar esa misma habilidad a su favor. Haces que tu modelo se haga una pregunta mejor que la que tú mismo te harías.
Y al igual que ocurre con las personas, obtienes mejores respuestas si haces mejores preguntas.
Sin embargo, las meta-prompts no siempre son sencillas. Por lo general, son largos (mi meta-prompt favorito tiene más de 800 palabras) y molestamente precisos y, aun así, a menudo se «rompen» después de algunas interacciones.
Eso no es lo que deseas cuando estás en el fragor de la acción y deseas completar una tarea lo antes posible. En cambio, desea una solución rápida para realizar el trabajo (o impresionar a sus amigos).
Para crear la solución rápida, utilizaremos tres técnicas de indicaciones para crear un metaindicador eficiente:
- Solicitud de rol: le asignas un rol a tu LLM, que indirectamente especifica el contexto, el objetivo y otros parámetros como el estilo.
- Instigación de cadena de pensamiento (CoT): también conocida como “Razón paso a paso”. Esta es la oración más poderosa que puede usar al solicitar un LLM. Cuando los LLM «razonan paso a paso», utilizan tokens para «pensar» en predicciones estocásticas, lo que aumenta la precisión.
- Marcadores de posición: esta es una forma de escribir y enviar indicaciones flexibles. Los marcadores de posición te permiten jugar con diferentes entradas y elegir entre un conjunto de opciones.
La solución de 5 minutos
La idea principal detrás de las meta-prompting es: tú eres mejor evaluando la calidad de una indicación que escribiendo una.
Es como con la comida. Puedes evaluar el sabor de un postre de clase mundial e incluso sugerir posibles mejoras. Pero es mucho, mucho más difícil preparar uno para ti mismo.
Con las meta-prompting, tú haces que el modelo sugiera una versión mejorada de tu sugerencia inicial. Desde allí puedes editar, reemplazar con información específica y solicitar al modelo más modificaciones.
El resultado del “meta-prompt+ tu mensaje inicial” es un mejor mensaje, pero no perfecto.
Aún así, las meta-indicaciones son mucho más rápidas que escribir una indicación de nivel experto desde cero porque el modelo hace todo el trabajo pesado por usted. Todo lo que te queda por hacer es elegir de un «menú».
Aquí está el metamensaje comprimido:
Act as an expert Prompt Engineer.
I’ll give you a messy prompt.
Reason step by step to improve it.
Write the final prompt as an elegant template with clear sections.
Use lists, placeholders, and examples.
##
Prompt:»»»<Insert your prompt here, and yes please, use the triple quotes.>»»»
La plantilla funciona con ChatGPT-3.5, ChatGPT-4 y HuggingChat (que utiliza el modelo Mixtral 7B). Si utiliza otros modelos, puede aplicar la misma lógica, utilizando formulaciones diferentes, normalmente más largas.
Probé 62 variantes del metamensaje con cuatro criterios en mente:
- Corto;
- Fácil de recordar;
- Fácil de leer y editar;
- Flexible, tanto en el formato de salida como en los casos de uso.
Puedes utilizar la misma pestaña de chat para ejecutar tanto el metamensaje como el actualizado. Otra opción es copiar y pegar el mensaje actualizado en una nueva ventana de chat. Opta por la segunda opción si necesitas múltiples intercambios para obtener una actualización decente. Dependiendo de la velocidad de tu modelo, todo el proceso dura entre dos y cinco minutos.
Meta-prompting en tu código
Digamos que estás creando un chatbot. Cada vez que un usuario envía una consulta, puedes mejorarla utilizando unas pocas líneas de código y un metamensaje. Luego reinyectas el mensaje mejorado en tu modelo y listo.
Acaba de transformar entradas confusas de usuarios perezosos (como yo) en mensajes de alta calidad, y los mensajes de alta calidad generan respuestas de alta calidad.
El paso n.º 1 es ajustar el metamensaje y almacenarlo en una variable. La instrucción final en el metamensaje es un truco que usaremos en un paso posterior.
meta_prompt = «Act as an expert Prompt Engineer.\
I’ll give you an initial prompt.\
Reason step by step to improve it.\
Write the final prompt as an elegant template with clear sections.\
Make sure you produce a ready-to-use prompt.\
The final prompt must start with ‘###Improved Prompt###'»
# the last instruction is about having a stable format that you can manipulate
El paso 2 es llamar a su LLM y usaremos la API de OpenAI como ejemplo. Importe el paquete y configura tu clave secreta.
import openai # 1.3.6
from openai import OpenAI
SK= «your secret key here»
#Get API key
client = OpenAI (api_key=SK)
El paso 3 es almacenar la entrada inicial de su usuario dentro de una variable.
user_initial_input= «meal ideas for 3 days, flexitarian.» # simplified example
El paso 4 es llamar a uno de los modelos GPT para mejorar el prompt inicial del usuario. A partir de ahí, almacenaremos el resultado en una nueva variable llamada «intermerdiary_prompt».
completion = client.chat.completions.create(
model=»gpt-4″,
max_tokens=1000,
messages=[
{«role»: «system», «content»: meta_prompt},
{«role»: «user», «content»: user_initial_input}
],
)
intermediary_prompt = completion.choices[0].message.content
El paso número 5 es recordar que el mensaje intermediario contiene el «razonamiento paso a paso». Necesita una edición rápida para extraer el prompt mejorado.
# Find the starting index of the desired substring
start_index = intermediary_prompt.find(«### Improved Prompt ###»)
# Check if the substring is found
if start_index != -1:
# Extract the substring from the starting index to the end
new_prompt = intermediary_prompt[start_index:]
else:
# Handle the case where the substring is not found
new_prompt = user_initial_input
El paso 6 es llamar a un modelo GPT nuevamente, pero esta vez con el nuevo mensaje mejorado y el mensaje del sistema de su elección.
completion = client.chat.completions.create(
model=»gpt-4″,
max_tokens=1000,
messages=[
{«role»: «system», «content»: «You’re a super cool assistant that talks like Jessie Pinkman from Breaking Bad»},
{«role»: «user», «content»: new_prompt}
],
)
print(completion.choices[0].message.content)
Solo habla con la IA
Meta-prompting no son solo una técnica que puedes aplicar en menos de cinco minutos para mejorar cualquier indicación. También es un framework.
La idea es desarrollar el hábito de interactuar con los LLM para realizar todo tipo de tareas. No siempre necesitas técnicas avanzadas. A veces, todo lo que tienes que hacer es «simplemente hablar con la IA».
Cuando mis amigos quisieron clasificar los postres, ninguno pensó en usar ChatGPT, y había tres ingenieros de software en el grupo. El que gritó «Usemos IA» resulta ser un fanático de la ingeniería rápida.
Al igual que él, puedes desarrollar el «reflejo» de utilizar la IA. Ya sea para clasificar postres, analizar datos o editar sus publicaciones de LinkedIn, un LLM puede hacerle la vida más fácil, especialmente si aprende a hablar con él.
Si tienes 5 minutos extra
He creado un GPT de metaindicación en la tienda GPT. Sin embargo, no utiliza la versión de 5 minutos comentada anteriormente.
En cambio, actúa como un prompt engineer experto que puede ayudarte a mejorar tus prompts utilizando técnicas de última generación.
Se llama Bernard y es tu Prompt Engineering de Sensei.
(Bernard tiene un mensaje de 800 palabras y 20 archivos adjuntos).