Prompt-Engineering-Guide/pages/introduction/tips.es.mdx
2023-04-13 18:54:15 +02:00

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).