Ir al contenido principal

Prompt Engineering, o cómo hablar con una IA.

ChatGPT
 

En la era de la inteligencia artificial, el prompt engineering se ha convertido en una habilidad crucial para interactuar eficazmente con modelos de lenguaje como GPT-4. Se trata de diseñar y formular instrucciones claras y efectivas (prompts) para obtener respuestas útiles y precisas de estos modelos generativos.

¿Qué es el Prompt Engineering?

El prompt engineering persigue crear instrucciones detalladas y específicas para modelos de lenguaje con el fin de guiar sus respuestas de manera más efectiva. A medida que los modelos de IA se vuelven más sofisticados, la necesidad de proporcionar instrucciones precisas se vuelve esencial para:

  1. Obtener Respuestas Precisas: Prompts bien diseñados ayudan a obtener respuestas más precisas y relevantes de los modelos de IA.
  2. Mejorar la eficiencia en la Comunicación: Minimiza la necesidad de múltiples iteraciones para obtener la información deseada.
  3. Personalización: Permite adaptar las respuestas de la IA a contextos y necesidades específicos.

Principios básicos del Prompt Engineering

Claridad y especificidad

Para obtener la mejor respuesta posible, es esencial que el prompt sea claro y específico. Un prompt ambiguo puede llevar a respuestas confusas o irrelevantes.

Ejemplo:

  • Prompt vago: "Háblame sobre los gatos."
  • Prompt claro: "Describe las características físicas y el comportamiento típico de los gatos domésticos."

Contexto relevante

Proveer contexto suficiente permite que la IA comprenda mejor la solicitud y genere respuestas más pertinentes. Por ejemplo:

  • Sin contexto: "Explícame la teoría de la relatividad."
  • Con contexto: "Explica la teoría de la relatividad de Einstein de manera simple, como si se la estuvieras contando a un estudiante de secundaria."

Una técnica útil consiste en indicar al LLM cómo debe comportarse:

  • Indicar rol: "Compórtate como un profesor de secundaria."
  • Prompt: "Explícame cómo se resuelve una ecuación paso a paso. Pon un ejemplo."

 

Instrucciones paso a paso

Dividir las solicitudes complejas en pasos más pequeños y manejables puede ayudar a la IA a abordar cada parte de manera ordenada, ya que le ayudará a organizar la información de la forma que más nos convenga.

Ejemplo:

  • Instrucción compleja: "Escribe un ensayo sobre la revolución industrial."
  • Instrucción paso a paso:
    1. "Define qué fue la revolución industrial."
    2. "Describe las principales innovaciones tecnológicas de la revolución industrial."
    3. "Analiza el impacto social y económico de la revolución industrial."

Uso de ejemplos

Si le damos ejemplos dentro del prompt podremos guiar a la IA en la dirección correcta y establecer el tono o formato esperado de la respuesta.

Ejemplo:

  • Sin ejemplo: "Escribe un poema sobre el otoño."
  • Con ejemplo: "Escribe un poema sobre el otoño similar a este: 'Las hojas caen suavemente, doradas bajo el sol, el viento canta susurrante, anunciando el frío en unión.'"

Herramientas y técnicas avanzadas en Prompt Engineering

Además de seguir los principios básicos, existen técnicas avanzadas y herramientas que pueden mejorar aún más el proceso de prompt engineering.

Uso de plantillas

Las plantillas predefinidas son extremadamente útiles para tareas repetitivas o formatos específicos de respuestas. Utilizar plantillas asegura que las respuestas de la IA sean consistentes y estructuradas. Muy útil para usar los LLMs en entornos de trabajo.

Ejemplo: plantillas para recetas de cocina

Una plantilla puede ayudar a organizar la información de manera coherente y en el formato que más nos interese. Veamos un ejemplo clásico con recetas de cocina.

Plantilla:

Usa la siguiente plantilla para describir recetas de cocina: """ ### Receta [Nombre de la receta] ## Ingredientes 1 - [ingrediente] 2 - [ingrediente] ## Pasos 1 - [Paso 1] 2 - [Paso 2] ## Calorías aproximadas [calorías totales de la receta] """

Le hemos dicho que lo que sigue es una plantilla, y seguidamente la describimos. Es interesante observar el uso de ciertos marcadores o placeholders que hemos usado para organizar la plantilla. Las triples comillas dobles (""") delimitan la plantilla. Es una forma estructurar prompts complejos, proporcionar contexto adicional y definir claramente las partes de la solicitud. Por ejemplo: Haz un resumen de """El fin de la Eternidad""". Si no ponemos las triples comillas, el LLM podría no entender que El fin de Eternidad es un libro.

Entre corchetes hemos puesto una descripción con la información que debe rellenar, y con el carácter # formateamos el texto. Es decir, que podemos usar el formato markdown.

Ejemplo de prompt usando plantilla:

Prompt: "Se hierven los macarrones durante 12 minutos hasta que estén al dente. Se escurre el agua. Seguidamente ponemos una lata de atún y tomate frito. Una vez emplatado, ponemos queso rallado."

Respuesta de la IA usando plantilla:

### Receta Macarrones con Atún y Tomate

## Ingredientes
1 - 200 gramos de macarrones
2 - 1 lata de atún
3 - 200 ml de tomate frito
4 - Queso rallado al gusto
5 - Agua y sal para hervir los macarrones

## Pasos
1 - Hervir los macarrones en agua con sal durante 12 minutos hasta que estén al dente.
2 - Escurrir el agua de los macarrones.
3 - Mezclar los macarrones con una lata de atún y tomate frito.
4 - Emplatar y añadir queso rallado al gusto por encima.

## Calorías aproximadas
450 calorías (por ración)

El LLM no sólo ha descrito los ingredientes y los pasos. También ha añadido un ingrediente que faltaba (la sal), le ha puesto un nombre a la receta, ha añadido las cantidades de cada ingrediente y ha calculado las calorías a partir de los ingredientes.

 Cadena de pensamiento (Chain of Thought)

Esta técnica implica guiar al modelo a través de una serie de pasos lógicos para resolver un problema o generar una respuesta compleja. Al descomponer la tarea en pasos más pequeños, se mejora la coherencia y precisión de la respuesta.

Ejemplo:

Prompt: "Explica cómo se produce la fotosíntesis."

Cadena de pensamiento:

  1. "Describe la función de la clorofila en las plantas."
  2. "Explica cómo la luz solar es utilizada en el proceso."
  3. "Detalla el papel del dióxido de carbono y el agua."
  4. "Concluye describiendo el resultado final del proceso de fotosíntesis."

Uso de etiquetas XML

El uso de etiquetas XML puede ser útil para estructurar prompts complejos, proporcionar contexto adicional y definir claramente las partes de la solicitud.

Etiquetas XML

Las etiquetas XML se utilizan para etiquetar y estructurar diferentes partes del prompt, facilitando la interpretación por parte de la IA.

Ejemplo:

Prompt:

<prompt> <contexto> Explica cómo se produce la fotosíntesis en las plantas. </contexto> <paso> 1. Describe la función de la clorofila. </paso> <paso> 2. Explica el uso de la luz solar en el proceso. </paso> <paso> 3. Detalla el papel del dióxido de carbono y el agua. </paso> <paso> 4. Concluye con el resultado final de la fotosíntesis. </paso> </prompt>

Modificación y expansión de prompts

A veces, un prompt necesita ser modificado o expandido para proporcionar respuestas más completas. Añadir contexto adicional, ejemplos y desglosar instrucciones en pasos más pequeños puede mejorar significativamente la calidad de las respuestas.

Ejemplo:

Prompt inicial: "Explica la teoría de la relatividad."

Prompt modificado: "Explica la teoría de la relatividad de Einstein de manera simple, como si se la estuvieras contando a un estudiante de secundaria. Asegúrate de incluir ejemplos concretos y analogías que faciliten la comprensión."

Ejemplos prácticos de Prompt Engineering

A continuación, hay varios ejemplos prácticos para diferentes escenarios, demostrando cómo el prompt engineering puede mejorar la interacción con modelos de IA.

Ejemplo 1: Resumen de texto

Prompt: "Resume el siguiente artículo en 100 palabras: [inserta texto del artículo]."

Respuesta mejorada: Para obtener un resumen preciso, proporciona un poco más de contexto.

Prompt mejorado: "Resume el siguiente artículo de noticias en 100 palabras, destacando los puntos clave sobre los impactos económicos y sociales: [inserta texto del artículo]."

Ejemplo 2: Generación de contenido creativo

Prompt: "Escribe una historia corta sobre una aventura en el espacio."

Respuesta mejorada: Añadir detalles específicos sobre los personajes y el escenario.

Prompt mejorado: "Escribe una historia corta de 500 palabras sobre una aventura en el espacio, protagonizada por una astronauta llamada Laura y su robot asistente, quienes descubren un planeta desconocido habitado por seres misteriosos."

Ejemplo 3: Resolución de problemas matemáticos

Prompt: "Resuelve este problema matemático: 3x + 5 = 20."

Respuesta mejorada: Guiar a través de los pasos para resolver el problema.

Prompt mejorado: "Resuelve el siguiente problema matemático mostrando todos los pasos: 3x + 5 = 20. Primero, despeja el término constante y luego divide por el coeficiente de x."

Ejemplo 4: Consultoría técnica

Prompt: "Dame consejos para mejorar la seguridad informática."

Respuesta mejorada: Especificar el tipo de consejos y el contexto.

Prompt mejorado: "Proporciona cinco consejos avanzados para mejorar la seguridad informática en una empresa de tecnología, enfocándote en la protección de datos sensibles y la prevención de ataques de phishing."

Ejemplo 5: Análisis de datos

Prompt: "Analiza los datos de ventas del último trimestre."

Respuesta mejorada: Incluir detalles sobre qué aspectos analizar y el formato esperado de la respuesta.

Prompt mejorado: "Analiza los datos de ventas del último trimestre, enfocándote en identificar las tendencias de ventas mensuales, los productos más vendidos y las regiones con mejor desempeño. Presenta los resultados en un formato de informe ejecutivo."

Conclusión

El prompt engineering es una habilidad importante para interactuar de manera efectiva con modelos de lenguaje avanzados. Al seguir principios básicos como la claridad, especificidad, y el uso de ejemplos, junto con técnicas avanzadas como las que hemos visto más arriba, se pueden obtener respuestas más precisas y relevantes.

Comentarios

Entradas populares de este blog

Creando firmas de virus para ClamAV

ClamAv es un antivirus opensource y multiplataforma creado por Tomasz Kojm muy utilizado en los servidores de correo Linux. Este antivirus es desarrollado por la comunidad, y su utilidad práctica depende de que su base de datos de firmas sea lo suficientemente grande y actualizado. Para ello es necesario que voluntarios contribuyan activamente aportando firmas. El presente artículo pretende describir de manera sencilla cómo crear firmas de virus para ClamAV y contribuir con ellas a la comunidad.

Manejo de grafos con NetworkX en Python

El aprendizaje computacional es un área de investigación que en los últimos años ha tenido un auge importante, sobre todo gracias al aprendizaje profundo (Deep Learning). Pero no todo son redes neuronales. Paralelamente a estas técnicas, más bien basadas en el aprendizaje de patrones, también hay un auge de otras técnicas, digamos, más basadas en el aprendizaje simbólico. Si echamos la vista algunos años atrás, podemos considerar que quizá, la promesa de la web semántica como gran base de conocimiento ha fracasado, pero no es tan así. Ha ido transmutándose y evolucionando hacia bases de conocimiento basadas en ontologías a partir de las cuales es posible obtener nuevo conocimiento. Es lo que llamamos razonamiento automático y empresas como Google ya lo utilizan para ofrecerte información adicional sobre tus búsquedas. Ellos lo llaman Grafos de Conocimiento o Knowledge Graphs . Gracias a estos grafos de conocimiento, Google puede ofrecerte información adicional sobre tu búsqueda, ad

Scripts en NMAP

Cuando pensamos en NMAP, pensamos en el escaneo de puertos de un host objetivo al que estamos relizando una prueba de intrusión, pero gracias a las posibilidades que nos ofrecen su Scripting Engine , NMAP es mucho más que eso. Antes de continuar, un aviso: algunas de posibilidades que nos ofrecen los scripts de NMAP son bastante intrusivas, por lo que recomiendo hacerlas contra hosts propios, máquinas virtuales como las de Metasploitable, o contrato de pentesting mediante. Para este artículo voy a usar las máquinas de Metasploitable3 . No voy a entrar en los detalles sobre el uso básico de NMAP, ya que hay miles de tutoriales en Internet que hablan sobre ello. Lo cierto es que NMAP tiene algunas opciones que permiten obtener información extra, además de qué puertos están abiertos y cuales no. Por ejemplo, la opción -sV trata de obtener el servicio concreto, e incluso la versión del servicio que está corriendo en cada puerto. Otro ejemplo es la opción -O, que intenta averiguar el