mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-18 03:25:39 +00:00
123 lines
6.5 KiB
Plaintext
123 lines
6.5 KiB
Plaintext
# Consejos generales para diseñar prompts
|
|
|
|
Aquí hay algunos consejos para tener en cuenta mientras diseñas tus prompts:
|
|
|
|
### Comienza por lo simple
|
|
|
|
Al comenzar a diseñar prompts, debes tener en cuenta que es un proceso iterativo que requiere mucha experimentación para obtener resultados óptimos. Usar un playground simple como OpenAI o Cohere es un buen punto de partida.
|
|
|
|
Puedes comenzar con prompts simples y agregar más elementos y contexto a medida que apuntas a mejores resultados. La versionización de tu prompt en el camino es vital por esta razón. A medida que leas la guía, verás muchos ejemplos donde la especificidad, simplicidad y concisión a menudo te darán mejores resultados.
|
|
|
|
Cuando tienes una tarea grande que involucra muchos sub-tareas diferentes, puedes intentar dividir la tarea en sub-tareas más simples y seguir construyendo a medida que obtienes mejores resultados. Esto evita agregar demasiada complejidad al proceso de diseño de la indicación al principio.
|
|
|
|
### La instrucción
|
|
|
|
Puedes diseñar prompts efectivos para varias tareas simples usando comandos para indicarle al modelo lo que deseas lograr, como "Escribe", "Clasifica", "Resumen", "Traduce", "Ordena", etc.
|
|
|
|
Ten en cuenta que también necesitas experimentar mucho para ver qué funciona mejor. Prueba diferentes instrucciones con diferentes palabras clave, contextos y datos, y observa qué funciona mejor para tu caso de uso y tarea particular. Por lo general, cuanto más específico y relevante sea el contexto para la tarea que estás tratando de realizar, mejor será. Tocaremos la importancia del muestreo y la adición de más contexto en las próximas guías.
|
|
|
|
Otros recomiendan que las instrucciones se coloquen al comienzo de la indicación. También se recomienda que se use un separador claro como "###" para separar la instrucción y el contexto.
|
|
|
|
Por ejemplo:
|
|
|
|
*Prompt:*
|
|
```
|
|
### Instrucción ###
|
|
Traduce el texto a continuación al español:
|
|
|
|
Texto: "Hello!"
|
|
```
|
|
|
|
*Resultado:*
|
|
```
|
|
¡Hola!
|
|
```
|
|
|
|
### Especificidad
|
|
Sé muy específico sobre la tarea que deseas que el modelo realice. Cuanto más descriptiva y detallada sea el prompt, mejores serán los resultados. Esto es particularmente importante cuando tienes un resultado deseado o estilo de generación que estás buscando. No hay tokens o palabras clave específicas que conduzcan a mejores resultados. Es más importante tener un buen formato y un prompt descriptiva. De hecho, proporcionar ejemplos en el prompt es muy efectivo para obtener la salida deseada en formatos específicos.
|
|
|
|
Cuando diseñas prompts, también debes tener en cuenta la longitud del prompt ya que hay limitaciones en cuanto a su longitud. Pensar en cuán específico y detallado debes ser es algo a considerar. Incluir demasiados detalles innecesarios no es necesariamente un buen enfoque. Los detalles deben ser relevantes y contribuir a la tarea en cuestión. Esto es algo en lo que necesitarás experimentar mucho. Os animamos a que hagais mucha experimentación e iteración para optimizar los prompts para tus aplicaciones.
|
|
|
|
Como ejemplo, intentemos una indicación simple para extraer información específica de un texto.
|
|
|
|
*Prompt:*
|
|
```
|
|
Extrae los nombres de lugares del siguiente texto.
|
|
|
|
Formato deseado:
|
|
Lugar: <lista_separada_por_comas_de_nombres_de_empresa>
|
|
|
|
Input: "Aunque estos avances son alentadores para los investigadores, aún hay mucho misterio.
|
|
'A menudo tenemos una caja negra entre el cerebro y el efecto que vemos en la periferia', dice
|
|
Henrique Veiga-Fernandes, un neuroinmunólogo en el Centro Champalimaud para lo Desconocido en Lisboa.
|
|
'Si queremos usarlo en el contexto terapéutico, necesitamos entender el mecanismo'.
|
|
```
|
|
|
|
*Resultado:*
|
|
```
|
|
Place: Centro Champalimaud para lo Desconocido, Lisboa
|
|
```
|
|
|
|
El texto de entrada se obtiene de [este artículo de Nature](https://www.nature.com/articles/d41586-023-00509-z).
|
|
|
|
### Evitar imprecisión
|
|
|
|
Dado los consejos anteriores sobre ser detallado y mejorar el formato, es fácil caer en la trampa de querer ser demasiado inteligente sobre los temas y crear descripciones imprecisas. A menudo es mejor ser específico y directo. La analogía aquí es muy similar a la comunicación efectiva: cuanto más directa sea, más efectivo será el mensaje.
|
|
|
|
Por ejemplo, podrías estar interesado en aprender el concepto de ingeniería de prompts. Podrías intentar algo como:
|
|
|
|
```
|
|
Explica el concepto de ingeniería de promoción. Mantén la explicación corta, solo unas pocas frases
|
|
y no seas demasiado descriptivo.
|
|
```
|
|
|
|
No está claro en la instrucción anterior cuántas oraciones utilizar y qué estilo. Es posible que puedas obtener respuestas aceptables con el prompt anterior, pero un prompt que sea muy específico, conciso y directo sería mejor. Algo como:
|
|
|
|
```
|
|
Usa 2-3 oraciones para explicar el concepto de ingeniería de prompt a un estudiante de secundaria.
|
|
```
|
|
|
|
### ¿Hacer o no hacer?
|
|
|
|
Otro consejo común al diseñar prompts es evitar decir qué no hacer, sino decir qué hacer en su lugar. Esto fomenta la especificidad y se centra en los detalles que conducen a buenas respuestas del modelo.
|
|
|
|
Aquí hay un ejemplo de un chatbot de recomendación de películas que no cumple exactamente lo que no quiero que haga debido a cómo escribí la instrucción, centrado en lo que no hacer.
|
|
|
|
*Prompt:*
|
|
```
|
|
El siguiente es un agente que recomienda películas a un cliente.
|
|
NO PIDA INTERESES. NO PIDA INFORMACIÓN PERSONAL.
|
|
|
|
Cliente: Por favor, recomiéndeme una película basada en mis intereses.
|
|
Agente:
|
|
```
|
|
|
|
*Resultado:*
|
|
```
|
|
Claro, puedo recomendar una película según tus intereses. ¿Qué tipo de película te gustaría ver?
|
|
¿Prefieres acción, comedia, romance o algo más?
|
|
```
|
|
|
|
Este es un prompt mejor:
|
|
|
|
*Prompt:*
|
|
```
|
|
El siguiente es un agente que recomienda películas a un cliente. El agente es responsable de
|
|
recomendar una película de las más populares a nivel mundial. Debe abstenerse de preguntar a
|
|
los usuarios por sus preferencias y evitar pedir información personal. Si el agente no tiene
|
|
una película para recomendar, debe responder "Lo siento, no pude encontrar una película para
|
|
recomendar hoy".
|
|
|
|
Cliente: Por favor, recomiéndeme una película basada en mis intereses.
|
|
Agente:
|
|
```
|
|
|
|
*Resultado:*
|
|
```
|
|
Lo siento, no tengo información sobre tus intereses. Sin embargo, aquí está una lista de las
|
|
películas más populares a nivel mundial en este momento: [lista de películas]. Espero que
|
|
encuentres algo que te guste.
|
|
```
|
|
|
|
Algunos de los ejemplos anteriores fueron adoptados del artículo ["Best practices for prompt engineering with OpenAI API"](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api).
|