Cómo funciona la ingeniería de prompts
Debido a la forma en que se entrenan los modelos de OpenAI, existen formatos de prompt específicos que funcionan especialmente bien y producen resultados del modelo más útiles.
La guía oficial de ingeniería de prompts de OpenAI suele ser el mejor lugar para empezar a obtener consejos sobre prompts.
A continuación presentamos varios formatos de prompt que creemos que funcionan bien, pero no dudes en explorar formatos distintos, que pueden ajustarse mejor a tu tarea.
Reglas prácticas 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, en general recomendamos usar los modelos más recientes y más capaces. Los modelos más nuevos suelen ser más fáciles de trabajar con ingeniería de prompts.
Nota: Hay algunas diferencias que conviene tener en cuenta al hacer 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 del 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 tan detallado como sea 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 de forma programática varias salidas de manera 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 con sin ejemplos, luego con pocos ejemplos; si ninguno funciona, ajusta el modelo
✅ 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 mejores prácticas de ajuste fino aquí.
6. Reduce las descripciones “vacías” 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 lo que no hay que 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 orientar el 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” le indica al modelo que debe empezar a escribir en Python. (De forma similar, “SELECT” es una buena pista para el inicio de una sentencia 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 Generate Anything
Los desarrolladores pueden usar la función 'Generate Anything' para describir una tarea o un resultado esperado en lenguaje natural y recibir un prompt adaptado.
Más información sobre cómo usar la función 'Generate Anything'.
Parámetros
En general, vemos que model y temperature son los parámetros que se usan con más frecuencia para alterar la salida del modelo.
model- Los modelos de mayor rendimiento suelen ser más caros y pueden tener más latencia.temperature- Una medida de la frecuencia con la que el modelo genera un token menos probable. Cuanto mayor sea latemperature, más aleatoria (y normalmente creativa) será la salida. Sin embargo, esto no es lo mismo que la “veracidad”. Para la mayoría de los casos de uso factual, 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 un límite estricto para la generación de tokens. Lo ideal es no alcanzar este límite con frecuencia, ya que tu modelo se detendrá cuando crea que ha terminado o cuando alcance una secuencia de parada que hayas definido.stop(secuencias de parada) - Un conjunto de caracteres (tokens) que, al generarse, hará que la generación de texto se detenga.
Para ver otras descripciones de parámetros, consulta la referencia de la API.
