Cómo funciona la ingeniería de prompts
Debido a la forma en que se entrenan los modelos de OpenAI, hay formatos de prompt específicos que funcionan especialmente bien y generan salidas del modelo más útiles. La guía oficial de ingeniería de prompts de OpenAI suele ser el mejor punto de partida para obtener consejos sobre prompts.
A continuación presentamos varios formatos de prompt que, según nuestra experiencia, funcionan bien, pero no dudes en explorar otros formatos que quizá se adapten mejor a tu tarea.
Reglas generales y ejemplos
Nota: «{text input here}» es un marcador de posición para texto/contexto real
1. Usa el modelo más reciente
Para obtener los mejores resultados, por lo general recomendamos usar los modelos más recientes y capaces. Los modelos más nuevos suelen facilitar la ingeniería de prompts.
Nota: hay algunas diferencias que conviene tener en cuenta al crear prompts para un modelo de razonamiento frente a un modelo GPT. Más detalles aquí.
2. Coloca las instrucciones al principio del prompt y usa ### o """ para separar la instrucción y el contexto
Menos eficaz ❌:
Resume el texto siguiente como una lista con viñetas de los puntos más importantes.
{text input here}Mejor ✅:
Resume el texto siguiente como una lista con viñetas de los puntos más importantes.
Texto: """
{text input here}
"""3. Sé específico, descriptivo y lo más detallado posible sobre el contexto, el resultado, la longitud, el formato, el estilo, etc. deseados
Sé específico sobre el contexto, el resultado, la longitud, el formato, el estilo, etc.
Menos eficaz ❌:
Escribe un poema sobre OpenAI. Mejor ✅:
Escribe un poema corto e inspirador sobre OpenAI, centrado en el reciente lanzamiento del producto DALL-E (DALL-E es un modelo de ML de texto a imagen) al estilo de {famous poet}4. Expresa el formato de salida deseado mediante ejemplos
Menos eficaz ❌:
Extrae las entidades mencionadas en el texto siguiente. Extrae estos 4 tipos de entidades: nombres de empresas, nombres de personas, temas específicos y temas generales.
Texto: {text}Muestra y explica: los modelos responden mejor cuando se les muestran requisitos de formato específicos. Esto también facilita analizar mediante programación varias salidas de forma fiable.
Mejor ✅:
Extrae las entidades importantes mencionadas en el texto siguiente. Primero extrae todos los nombres de empresas, después todos los nombres de personas, luego temas específicos que encajen con el contenido y, por último, temas generales predominantes
Formato deseado:
Nombres de empresas: <lista_de_nombres_de_empresas_separados_por_comas>
Nombres de personas: -||-
Temas específicos: -||-
Temas generales: -||-
Texto: {text}5. Empieza sin ejemplos; luego, con pocos ejemplos; si nada funciona, haz ajuste fino
✅ Sin ejemplos
Extrae palabras clave del texto siguiente.
Texto: {text}
Palabras clave:✅ Pocos ejemplos: proporciona un par de ejemplos
Extrae palabras clave de los textos correspondientes a continuación.
Texto 1: Stripe proporciona API que los desarrolladores web pueden usar para integrar el procesamiento de pagos en sus sitios web y aplicaciones móviles.
Palabras clave 1: Stripe, procesamiento de pagos, API, desarrolladores web, sitios web, aplicaciones móviles
##
Texto 2: OpenAI ha entrenado modelos de lenguaje de vanguardia que son muy buenos para comprender y generar texto. Nuestra API proporciona acceso a estos modelos y puede usarse para resolver prácticamente cualquier tarea que implique procesar lenguaje.
Palabras clave 2: OpenAI, modelos de lenguaje, procesamiento de texto, API.
##
Texto 3: {text}
Palabras clave 3:✅ Ajuste fino: consulta las prácticas recomendadas de ajuste fino aquí.
6. Reduce las descripciones «de relleno» e imprecisas
Menos eficaz ❌:
La descripción de este producto debe ser bastante corta, solo unas pocas frases y no mucho más.Mejor ✅:
Usa un párrafo de 3 a 5 frases para describir este producto.7. En lugar de decir solo qué no hacer, di qué hacer en su lugar
Menos eficaz ❌:
La siguiente es una conversación entre un agente y un cliente. NO PIDAS EL NOMBRE DE USUARIO NI LA CONTRASEÑA. NO LO REPITAS.
Cliente: No puedo iniciar sesión en mi cuenta.
Agente:Mejor ✅:
La siguiente es una conversación entre un agente y un cliente. El agente intentará diagnosticar el problema y sugerir una solución, evitando hacer cualquier pregunta relacionada con PII. En lugar de pedir PII, como el nombre de usuario o la contraseña, remite al usuario al artículo de ayuda www.samplewebsite.com/help/faq
Cliente: No puedo iniciar sesión en mi cuenta.
Agente:8. Específico para la generación de código: usa «palabras iniciales» para guiar al modelo hacia un patrón concreto
Menos eficaz ❌:
# Escribe una función sencilla de python que
# 1. Me pida un número en millas
# 2. Convierta millas a kilómetrosEn el siguiente ejemplo de código, añadir «import» indica al modelo que debe empezar a escribir en Python. (De forma similar, «SELECT» es una buena pista para el inicio de una instrucción SQL.)
Mejor ✅:
# Escribe una función sencilla de python que
# 1. Me pida un número en millas
# 2. Convierta millas a kilómetros
import9. Usa la función «Generar cualquier cosa»
Los desarrolladores pueden usar la función «Generar cualquier cosa» para describir una tarea o la salida esperada en lenguaje natural y recibir un prompt a medida.
Más información sobre cómo usar la función «Generar cualquier cosa».
Parámetros
En general, observamos que `model` y `temperature` son los parámetros más usados para modificar la salida del modelo.
`model` - Los modelos de mayor rendimiento suelen ser más caros y pueden tener mayor latencia.
`temperature` - Una medida de la frecuencia con la que el modelo genera un token menos probable. Cuanto mayor sea
temperature, más aleatoria (y, normalmente, creativa) será la salida. Sin embargo, esto no equivale a «veracidad». Para la mayoría de los casos de uso factuales, como la extracción de datos y las preguntas y respuestas veraces, lo mejor es unatemperaturede 0.`max_completion_tokens` (longitud máxima) - No controla la longitud de la salida, sino que establece un límite estricto para la generación de tokens. Lo ideal es que no alcances este límite a menudo, ya que el modelo se detendrá cuando considere que ha terminado o cuando llegue a una secuencia de detención que hayas definido.
`stop` (secuencias de detención) - Un conjunto de caracteres (tokens) que, al generarse, harán que se detenga la generación de texto.
Para ver descripciones de otros parámetros, consulta la referencia de la API.
