Capítulo 5: Ingeniería de Prompts e Instrucciones del Sistema
5.1 Creación de Prompts Efectivos
¡Bienvenido al fascinante mundo de la ingeniería de prompts! Este capítulo explora técnicas avanzadas para comunicarse efectivamente con los modelos de OpenAI, una habilidad crucial en el panorama actual impulsado por la IA. La ingeniería de prompts es tanto un arte como una ciencia - se trata de elaborar entradas que guíen a los modelos de IA para generar resultados que no solo sean útiles y precisos, sino que estén perfectamente alineados con tus objetivos previstos. Este proceso va mucho más allá de simplemente hacer preguntas; requiere una comprensión profunda del establecimiento del contexto, el refinamiento de consultas y el uso estratégico de instrucciones del sistema para moldear el comportamiento del modelo.
Piensa en la ingeniería de prompts como dirigir una orquesta - cada instrucción que proporcionas es como una nota musical que contribuye a la sinfonía final. Necesitas considerar cuidadosamente el tono, el tiempo y la disposición de tus prompts para crear resultados armoniosos. Esto incluye entender cómo usar los ajustes de temperatura para controlar la aleatoriedad, saber cuándo aplicar mensajes del sistema para ajustar la personalidad y dominar el arte del aprendizaje mediante ejemplos.
En las próximas secciones, descubrirás cómo dominar la creación de prompts para lograr resultados extraordinarios. Cubriremos todo, desde la sintaxis básica hasta técnicas avanzadas que pueden transformar tus prompts en herramientas poderosas. Ya sea que estés desarrollando una plataforma educativa que necesite adaptar su estilo de enseñanza a diferentes estudiantes, creando un asistente de escritura sofisticado que pueda adaptarse a varios requisitos de tono y estilo, o construyendo un sistema de atención al cliente que necesite mantener la consistencia en las interacciones, aprenderás las estrategias exactas necesarias para lograr estos objetivos.
Exploraremos cómo usar patrones de prompt, razonamiento en cadena y formas de superar las limitaciones comunes de los modelos de lenguaje. Aprenderás a reconocer cuándo un prompt no está funcionando de manera óptima y cómo diagnosticar y solucionar problemas comunes. A través de ejemplos prácticos y aplicaciones del mundo real, desarrollarás una comprensión intuitiva de lo que hace que los prompts sean efectivos.
Comencemos nuestro viaje examinando uno de los aspectos más fundamentales y cruciales de la ingeniería de prompts: Creación de Prompts Efectivos.
La creación de prompts efectivos es tanto un arte como una ciencia, que requiere un delicado equilibrio entre la precisión técnica y la intuición creativa. Como un maestro artesano que selecciona cuidadosamente sus herramientas, los ingenieros de prompts deben elegir sus palabras y estructuras con intención. Un prompt bien elaborado sirve como un plano integral, proporcionando al modelo de IA todo el contexto, las restricciones y la orientación necesarios para producir una excelente respuesta.
Piensa en la creación de prompts como escribir una receta detallada - cada instrucción importa, y el orden y la claridad de esas instrucciones impactan directamente en el resultado final. El arte radica en comprender los matices del lenguaje natural y cómo formular solicitudes de manera que resuenen con el entrenamiento del modelo. La ciencia implica comprender los aspectos técnicos de cómo los modelos de lenguaje procesan la información y responden a diferentes tipos de entradas.
Aquí hay varios elementos clave que contribuyen a un prompt sólido:
5.1.1 Claridad y Especificidad
Cuanto más claro y específico sea tu prompt, más probable será que el modelo entienda exactamente lo que estás pidiendo. Un prompt bien elaborado actúa como un mapa detallado, guiando a la IA hacia tu destino deseado. Los prompts vagos o ambiguos a menudo resultan en respuestas poco enfocadas o irrelevantes, como dar indicaciones poco claras a un conductor. Al crear un prompt, debes:
Ser explícito sobre tus requisitos
Indica claramente lo que quieres que haga el modelo, incluyendo cualquier parámetro o condición específica. Esto significa ser detallado y preciso en tus instrucciones, sin dejar espacio para la ambigüedad. Al elaborar tu prompt, considera estos aspectos:
- Parámetros: Define exactamente qué variables o condiciones quieres que el modelo considere. Por ejemplo, especifica el conteo de palabras, formato, estilo, tono o nivel técnico.
- Límites del tema: Describe claramente el alcance del tema que quieres cubrir, incluyendo lo que debe incluirse y lo que debe excluirse.
- Formato de salida: Detalla cómo quieres que se presente la información, ya sea en párrafos, viñetas o una estructura específica.
- Público objetivo: Especifica para quién es el contenido, ya que esto ayuda al modelo a ajustar su lenguaje y complejidad apropiadamente.
Por ejemplo, en lugar de pedir "Escribe sobre gatos", especifica "Escribe una explicación de 300 palabras sobre los comportamientos de caza de los gatos domésticos, centrándote en sus técnicas de acecho, preferencias de presas y tasas de éxito. Incluye ejemplos del mundo real, cita investigaciones relevantes cuando sea posible y asegúrate de que el contenido sea accesible para una audiencia general con conocimientos básicos sobre el comportamiento felino."
Este nivel de especificidad ayuda al modelo a entender exactamente lo que estás buscando y elimina las conjeturas. Es como proporcionar un plano detallado en lugar de un boceto aproximado - cuanto más específico seas, mejor podrá el modelo adaptar su respuesta a tus necesidades.
Ejemplo de Ser Explícito Sobre los Requisitos:
Prompt Ineficaz:
"Escribe una publicación de blog sobre energía sostenible."
Este prompt carece de requisitos específicos y deja demasiado espacio para la interpretación.
Prompt Eficaz con Requisitos Explícitos:
"Escribe una publicación de blog de 1000 palabras sobre soluciones de energía renovable para edificios residenciales urbanos, con las siguientes especificaciones:
- Requisitos de Contenido:
- Enfócate en soluciones solares, eólicas y geotérmicas
- Incluye costos de instalación y cálculos de ROI
- Discute incentivos gubernamentales y beneficios fiscales
- Aborda desafíos comunes de implementación
- Nivel de Detalle Técnico:
- Adecuado para propietarios con conocimientos técnicos básicos
- Incluye explicaciones simplificadas de conceptos técnicos
- Proporciona ejemplos prácticos y casos de estudio
- Estructura:
- Comienza con un resumen ejecutivo (100 palabras)
- Incluye 4-5 secciones principales con subtítulos
- Termina con recomendaciones accionables
- Incluye una sección de recursos
- Estilo y Tono:
- Profesional pero conversacional
- Usa analogías para explicar conceptos complejos
- Incluye descripciones de visualizaciones de datos
- Mantén un tono optimista pero realista
Esta versión mejorada describe claramente todos los requisitos, ayudando al modelo a generar contenido que coincida precisamente con el propósito, la audiencia y el formato previstos. Los requisitos explícitos actúan como una lista de verificación integral que guía la respuesta del modelo, asegurando que no se pasen por alto aspectos importantes.
Incluir información de contexto relevante
Proporciona contexto que ayude al modelo a entender el alcance y la perspectiva necesaria. Esto significa suministrar detalles cruciales que enmarquen la pregunta o tarea apropiadamente. Aquí está lo que debes considerar:
- Conocimiento del Dominio: Incluye términos específicos de la industria, jerga técnica o conceptos especializados que sean relevantes para tu consulta. Por ejemplo, al preguntar sobre patrones de desarrollo de software, especifica si estás trabajando en un paradigma de programación o estilo arquitectónico particular.
- Contexto Histórico: Cuando sea aplicable, proporciona eventos importantes de fondo, decisiones previas o contexto evolutivo que pueda influir en la respuesta. Por ejemplo, si preguntas sobre una tecnología, menciona qué versión o era te interesa.
- Estado Actual: Comparte información sobre tu situación actual, incluyendo cualquier solución existente, restricciones o desafíos específicos que estés enfrentando. Esto ayuda al modelo a entender tu punto de partida y adaptar su respuesta en consecuencia.
- Prerrequisitos: Menciona cualquier concepto fundamental o suposición que el modelo deba considerar. Por ejemplo, si se discuten matemáticas avanzadas, especifica qué conceptos básicos se pueden asumir como conocidos.
- Especificaciones del Marco: Cuando trabajes dentro de metodologías o marcos específicos, nómbralos explícitamente y cualquier aspecto particular que sea relevante para tu consulta.
Este contexto detallado asegura que la respuesta del modelo se alinee con tu caso de uso específico y nivel de experiencia, evitando respuestas genéricas o desalineadas. Piensa en ello como proporcionar una imagen completa en lugar de solo una instantánea - cuanto más contexto relevante proporciones, más específica y útil será la respuesta.
Ejemplo de Incluir Información de Contexto:
Consulta Ineficaz:
"¿Puedes explicar cómo optimizar este modelo de aprendizaje automático?"
Esta consulta carece de información de contexto crucial, haciendo imposible proporcionar una respuesta específica.
Consulta Eficaz con Información de Antecedentes:
"Estoy trabajando en la optimización de una red neuronal convolucional para clasificación de imágenes usando PyTorch. El modelo actualmente tiene 5 capas convolucionales y está siendo entrenado con un conjunto de datos de 50,000 imágenes médicas de rayos X (resolución 1024x1024). Está alcanzando un 85% de precisión pero tarda 12 horas en entrenarse en una NVIDIA RTX 3080. El modelo está experimentando sobreajuste después de la época 30, y estamos usando una tasa de aprendizaje de 0.001 con el optimizador Adam. ¿Puedes sugerir estrategias específicas de optimización para este escenario?"
Esta versión mejorada proporciona información esencial de antecedentes que incluye:
- Marco Técnico: Especifica el uso de PyTorch y la arquitectura CNN
- Estado Actual: Detalles sobre precisión, tiempo de entrenamiento y hardware específico
- Contexto del Problema: Identifica el problema de sobreajuste y los hiperparámetros actuales
- Características del Conjunto de Datos: Información sobre el tipo de datos, tamaño y dimensiones
- Configuración Existente: Detalles sobre la arquitectura del modelo y la configuración del entrenamiento
Con esta información de antecedentes completa, el modelo puede proporcionar sugerencias específicas de optimización adaptadas al escenario exacto en lugar de consejos genéricos.
Especificar el formato o estructura deseada
Define cómo quieres que se presente la información en tu prompt para garantizar una organización y claridad óptimas. El formato que especifiques actúa como un plano estructural que guía al modelo de IA en la organización de su respuesta. Este elemento crítico de la ingeniería de prompts puede impactar significativamente en la usabilidad y efectividad del resultado.
Considera estos enfoques clave de formato:
- Estructura del Documento:
- Solicita jerarquías específicas de secciones (secciones principales, subsecciones)
- Especifica si deseas un resumen ejecutivo o conclusión
- Indica si necesitas una tabla de contenidos
- Define el nivel de detalle para cada sección
- Organización del Contenido:
- Viñetas para información concisa y fácil de escanear
- Listas numeradas para pasos secuenciales o elementos priorizados
- Párrafos para explicaciones detalladas
- Tablas para datos comparativos
- Encabezados y subencabezados para una navegación clara
- Elementos de Formato:
- Texto en negrita o cursiva para énfasis
- Bloques de citas para citaciones
- Bloques de código para contenido técnico
- Niveles de sangría para información jerárquica
Por ejemplo, podrías solicitar: "Presenta la información en tres secciones principales, cada una con un encabezado descriptivo, seguida de 2-3 párrafos de explicación y un resumen con viñetas. Incluye ejemplos del mundo real en citas en bloque, y termina cada sección con conclusiones clave en negrita."
Este nivel de especificación de formato ayuda a asegurar que la respuesta no solo sea informativa sino que también esté estructurada de una manera que la haga inmediatamente útil y procesable para tus necesidades específicas. Recuerda que cuanto más preciso seas sobre el formato deseado, más probable es que recibas una respuesta que cumpla con tus requisitos organizativos.
Ejemplo de Especificación de Formato y Estructura:
Prompt Ineficaz:
"Escribe sobre las mejores prácticas en desarrollo de software."
Este prompt carece de especificaciones de formato, potencialmente llevando a una respuesta desestructurada.
Prompt Eficaz con Especificaciones de Formato:
"Crea una guía completa sobre las mejores prácticas en desarrollo de software con la siguiente estructura:
- Diseño del Documento:
- Comienza con un resumen ejecutivo de 150 palabras
- Incluye una tabla de contenidos con hipervínculos
- Organiza el contenido en 5 secciones principales
- Termina con una sección de conclusiones clave
- Formato de Sección:
- Comienza cada sección con un encabezado h2 descriptivo
- Incluye 2-3 subsecciones con encabezados h3
- Proporciona ejemplos prácticos en bloques de código
- Termina cada sección con un resumen en viñetas
- Presentación del Contenido:
- Usa tablas para comparar diferentes enfoques
- Incluye listas numeradas para instrucciones paso a paso
- Presenta las mejores prácticas en cuadros destacados
- Añade descripciones de diagramas relevantes cuando sea necesario
- Formato de Texto:
- Resalta términos clave en negrita
- Usa cursiva para terminología técnica
- Formatea fragmentos de código en monoespaciado
- Incluye saltos de párrafo claros entre conceptos
Esta versión mejorada describe claramente la estructura del documento, los requisitos de formato y el estilo de presentación, asegurando una respuesta bien organizada y fácilmente navegable que comunica efectivamente la información.
Los requisitos específicos de formato ayudan al modelo a crear un documento consistente y profesional que:
- Mantiene una jerarquía clara de información
- Utiliza el formato apropiado para diferentes tipos de contenido
- Asegura una presentación consistente en todo el documento
- Hace que el contenido sea fácil de escanear y digerir
Definir restricciones o limitaciones
Establece límites claros para la respuesta definiendo explícitamente parámetros que controlen el alcance y la naturaleza del resultado. Estas restricciones actúan como guías que orientan al modelo hacia la producción exacta de lo que necesitas. Aquí están los tipos clave de restricciones a considerar:
- Restricciones de Contenido:
- Límites de palabras o caracteres
- Temas específicos a cubrir o evitar
- Secciones o elementos requeridos
- Profundidad de cobertura para cada tema
- Restricciones de Presentación:
- Nivel de complejidad técnica (por ejemplo, "amigable para principiantes" o "nivel experto")
- Tono y estilo (por ejemplo, formal, conversacional, académico)
- Preferencias de idioma (por ejemplo, inglés americano, inglés británico)
- Requisitos de formato
- Restricciones Relacionadas con la Audiencia:
- Nivel de experiencia del público objetivo
- Consideraciones culturales
- Contenido apropiado para la edad
- Terminología específica de la industria
Por ejemplo, en lugar de simplemente solicitar "Escribe sobre inteligencia artificial", podrías especificar: "Escribe una explicación de 500 palabras sobre inteligencia artificial para estudiantes de secundaria, usando analogías simples, evitando jerga técnica y centrándote en aplicaciones del mundo real en la vida cotidiana."
Estas restricciones ayudan a prevenir que el modelo proporcione información excesiva o irrelevante mientras aseguran que la respuesta coincida precisamente con tus requisitos. Considera especificar parámetros como "Mantén la explicación a nivel de secundaria", "Usa un tono profesional pero amigable" o "Céntrate solo en aplicaciones prácticas en lugar de conceptos teóricos". Al establecer estos límites desde el principio, recibirás respuestas más enfocadas, relevantes y útiles mientras evitas complejidad innecesaria o información tangencial.
Ejemplo de Definición de Restricciones y Limitaciones:
Prompt Ineficaz:
"Escribe un artículo sobre energía renovable."
Este prompt carece de restricciones específicas, lo que potencialmente resulta en contenido demasiado amplio o desalineado con las necesidades.
Prompt Eficaz con Restricciones Claras:
"Escribe un artículo sobre energía renovable con estas restricciones específicas:
- Alcance del Contenido:
- Longitud máxima: 1,200 palabras
- Enfócate solo en energía solar y eólica
- Excluye especificaciones técnicas y detalles de ingeniería
- Incluye solo estadísticas verificadas de los últimos 5 años
- Nivel Técnico:
- Escribe para una audiencia general sin conocimientos técnicos
- Define cualquier término específico de la industria
- Usa analogías para explicar conceptos complejos
- Evita jerga de ingeniería y fórmulas matemáticas
- Enfoque Geográfico:
- Limita los ejemplos a implementaciones en Norteamérica
- Incluye solo USD para referencias de costos
- Haz referencia a códigos y regulaciones de construcción locales
- Céntrate en aplicaciones residenciales
- Tono y Estilo:
- Mantén un tono optimista pero realista
- Usa voz activa en todo el texto
- Incluye historias de éxito del mundo real
- Termina con recomendaciones prácticas
Esta versión mejorada define claramente límites que:
- Establecen parámetros específicos de contenido
- Fijan el nivel técnico apropiado
- Definen la relevancia geográfica
- Especifican requisitos de estilo de escritura
Proporcionar estas restricciones detalladas asegura que la respuesta estará precisamente adaptada a tus necesidades mientras evita contenido irrelevante o fuera de alcance.
5.1.2 Establecimiento de Contexto y Rol
El uso de un mensaje de sistema junto con tu prompt es una técnica poderosa que puede mejorar dramáticamente la relevancia y el tono de la respuesta. Los mensajes de sistema actúan como una capa fundamental de instrucción que moldea cómo el asistente de IA interpreta y responde a los prompts subsiguientes. Así como un director proporciona a los actores sus antecedentes de personaje antes de filmar, los mensajes de sistema proporcionan a la IA su contexto y rol esencial. Esta configuración fundamental determina cómo la IA abordará cada interacción subsiguiente.
Los mensajes de sistema cumplen múltiples funciones cruciales que moldean fundamentalmente cómo opera un asistente de IA:
- Establecen el rol del asistente (por ejemplo, "Eres un matemático experto") - Esto define el nivel de experiencia y la perspectiva de la IA, similar a establecer los antecedentes de un personaje en una obra. Por ejemplo, cuando se establece como matemático, la IA abordará los problemas rigurosamente, usará terminología apropiada y formulará explicaciones a través de una lente matemática. Este establecimiento de rol asegura que las respuestas mantengan experiencia y autoridad consistente en el campo designado.
- Definen parámetros de comportamiento (por ejemplo, "Proporciona respuestas concisas y técnicas") - Esto moldea no solo lo que dice la IA, sino cómo lo dice, controlando factores como la verbosidad, formalidad y profundidad técnica. Estos parámetros pueden instruir a la IA para ser más casual o formal, proporcionar explicaciones detalladas o resúmenes breves, o ajustar su complejidad de lenguaje según la audiencia. Por ejemplo, el mismo concepto podría explicarse de manera diferente a un niño versus un profesional en el campo.
- Establecen límites de conocimiento (por ejemplo, "Céntrate solo en investigación posterior a 2020") - Esto ayuda a asegurar que las respuestas se mantengan dentro de límites de información relevantes y actuales, evitando información desactualizada o irrelevante. Los límites de conocimiento pueden ser temporales (enfocándose en períodos específicos), geográficos (limitándose a ciertas regiones o países), o temáticos (restringiéndose a áreas temáticas o metodologías específicas). Esto es particularmente importante cuando se trata de campos que evolucionan rápidamente donde la información más antigua podría estar obsoleta o cuando se requiere el cumplimiento de estándares particulares.
Al elaborar cuidadosamente estos mensajes de sistema, puedes asegurar que las respuestas del asistente estén consistentemente alineadas con tus necesidades específicas, mantengan el nivel apropiado de experiencia y comuniquen en el tono y estilo deseados.
Piensa en ello como programar la personalidad y el marco de conocimiento de la IA - cada interacción subsiguiente será filtrada a través de esta lente. Esto es particularmente valioso cuando se construyen aplicaciones que requieren patrones de interacción consistentes o dominios de conocimiento especializados, ya que mantiene la coherencia a través de múltiples intercambios y asegura que los usuarios reciban respuestas apropiadamente adaptadas en todo momento.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
import json
from typing import Dict, List
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def create_chat_completion(
system_message: str,
user_message: str,
model: str = "gpt-4",
temperature: float = 0.6,
max_tokens: int = 150
) -> Dict:
"""
Create a chat completion using the OpenAI API.
Args:
system_message (str): The system message that sets the context
user_message (str): The user's input message
model (str): The GPT model to use
temperature (float): Controls randomness (0.0-1.0)
max_tokens (int): Maximum tokens in the response
Returns:
Dict: The API response
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message}
],
max_tokens=max_tokens,
temperature=temperature
)
return response
except Exception as e:
print(f"Error occurred: {str(e)}")
return None
# Example usage
system_msg = """You are a friendly and knowledgeable programming tutor.
Focus on providing clear, concise explanations with examples."""
user_msg = "Can you explain the difference between mutable and immutable data types in Python?"
# Get the response
response = create_chat_completion(system_msg, user_msg)
# Handle the response
if response:
answer = response["choices"][0]["message"]["content"]
print("AI Tutor's Response:")
print("-" * 50)
print(answer)
else:
print("Failed to get response from API")
Desglose del Código:
- Importaciones y Configuración:
- Se agregaron sugerencias de tipo con el módulo
typing
para mejorar la documentación del código - Se organizaron las importaciones por biblioteca estándar y paquetes de terceros
- Se agregaron sugerencias de tipo con el módulo
- Definición de Función:
- Se creó una función reutilizable
create_chat_completion
con documentación adecuada - Se agregaron sugerencias de tipo para parámetros y valor de retorno
- Se incluyó manejo de errores con bloque try-except
- Se creó una función reutilizable
- Parámetros:
- Se hicieron configurables el modelo, temperatura y max_tokens con valores predeterminados
- Se separaron los mensajes del sistema y usuario para mayor claridad
- Manejo de Errores:
- Se agregó captura y reporte básico de errores
- Incluye manejo elegante de fallos
- Formato de Salida:
- Se agregó separación visual clara de la respuesta
- Se mejoró la legibilidad con impresión estructurada
En este ejemplo, el mensaje del sistema configura al asistente como un tutor de programación, influyendo así en el estilo y detalle de la respuesta.
5.1.3 Proporcionando Ejemplos e Instrucciones Dentro del Prompt
Incluir ejemplos e instrucciones adicionales dentro de tu prompt es una técnica poderosa que puede mejorar significativamente la calidad y precisión de las respuestas de la IA. Este enfoque, a menudo llamado "aprendizaje con pocos ejemplos" o "aprendizaje por demostración", ayuda a la IA a entender tus expectativas a través de demostraciones concretas. Cuando proporcionas ejemplos específicos, creas una plantilla clara que muestra a la IA exactamente cómo quieres que la información sea estructurada y presentada. Esta precisión es particularmente valiosa cuando se trata de solicitudes complejas o matizadas donde las instrucciones abstractas por sí solas podrían ser insuficientes.
Este enfoque cumple múltiples propósitos y ofrece varios beneficios clave:
- Ambigüedad Reducida
- Los ejemplos sirven como demostraciones prácticas que minimizan la malinterpretación
- Las plantillas visuales ayudan a establecer patrones claros para que la IA siga
- Los ejemplos concretos conectan la brecha entre conceptos abstractos y el resultado deseado
- Aprendizaje Mejorado
- La IA puede hacer coincidencias de patrones contra los ejemplos proporcionados
- Múltiples ejemplos ayudan a demostrar variaciones y rangos aceptables
- Los contextos del mundo real ayudan a fundamentar la comprensión de la IA
Los ejemplos actúan como demostraciones prácticas que reducen la ambigüedad y la mala comunicación. En lugar de depender únicamente de instrucciones abstractas, la IA puede ver precisamente cómo luce el éxito. Este enfoque de aprendizaje visual es similar a cómo los humanos a menudo aprenden mejor a través de la demostración en lugar de la instrucción pura. Las instrucciones adicionales dentro del prompt pueden establecer parámetros específicos para el tono, formato, longitud o complejidad - actuando como guías que mantienen la respuesta alineada con tus expectativas.
La efectividad de los ejemplos puede mejorarse aún más mediante una presentación estratégica:
- Consistencia de Formato
- Usar formato consistente en todos los ejemplos
- Resaltar elementos clave que deben replicarse
- Mostrar estructura y organización clara
Por ejemplo, si estás solicitando una descripción de producto, podrías incluir un ejemplo que muestre el estilo de escritura deseado, los elementos clave a incluir y el formato preferido. Este ejemplo podría demostrar características específicas como viñetas, especificaciones técnicas o declaraciones de beneficios.
El modelo de IA puede entonces usar este punto de referencia integral para generar contenido similar que coincida precisamente con tus necesidades. Este enfoque es particularmente efectivo cuando necesitas mantener una voz de marca consistente, precisión técnica o convenciones de formato específicas a través de múltiples resultados.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
from typing import Dict, Optional
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def send_thank_you_email(
customer_name: str,
order_number: str,
tracking_link: str,
temperature: float = 0.5
) -> Optional[str]:
"""
Generate a personalized thank you email for a customer's purchase.
Args:
customer_name (str): The customer's name
order_number (str): The order reference number
tracking_link (str): The order tracking URL
temperature (float): Controls response randomness (0.0-1.0)
Returns:
Optional[str]: Generated email text or None if generation fails
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "You are an expert writing assistant specializing in warm, professional customer communications."
},
{
"role": "user",
"content": f"""Generate a thank you email with these requirements:
- Use customer name: {customer_name}
- Include order number: {order_number}
- Include tracking link: {tracking_link}
- Keep tone warm and professional
- Maximum length: 4 sentences
Example format:
Dear [Name],
Thank you for your purchase! Your order #[Number] is on its way.
You can track your package here: [Link]
We appreciate your business!"""
}
],
max_tokens=200,
temperature=temperature
)
return response["choices"][0]["message"]["content"]
except Exception as e:
print(f"Error generating email: {str(e)}")
return None
# Example usage
def main():
# Test parameters
customer = "Maria Garcia"
order = "ORD-12345"
tracking = "https://tracking.example.com/ORD-12345"
# Generate email
email_text = send_thank_you_email(customer, order, tracking)
if email_text:
print("Generated Email:")
print("-" * 50)
print(email_text)
else:
print("Failed to generate email")
if __name__ == "__main__":
main()
Desglose del Código:
- Importaciones y Configuración
- Utiliza sugerencias de tipo para mejorar la documentación del código
- Incluye manejo de variables de entorno para la seguridad de la clave API
- Organiza las importaciones de manera lógica
- Estructura de la Función Principal
- Crea una función dedicada para la generación de correos
- Utiliza sugerencias de tipo para parámetros y valor de retorno
- Implementa un manejo adecuado de errores
- Devuelve Optional[str] para manejar posibles fallos
- Parámetros y Configuración
- Toma detalles específicos del cliente como parámetros
- Incluye configuración personalizable de temperatura
- Utiliza f-strings para un formato de cadenas limpio
- Integración de API
- Mensajes estructurados del sistema y usuario
- Requisitos claros de formato en el prompt
- Plantilla de ejemplo incluida para consistencia
- Manejo de Errores y Pruebas
- Implementa bloque try-except para llamadas a la API
- Incluye ejemplo de uso en la función main()
- Proporciona mensajes de error claros
Aquí, el prompt incluye un formato de ejemplo, lo que ayuda al modelo a entender exactamente qué tipo de correo esperas.
5.1.4 Refinamiento Iterativo
La ingeniería de prompts es un proceso iterativo que requiere paciencia, experimentación y atención minuciosa al detalle. Como un escultor refinando su obra, comienzas con un borrador básico del prompt y gradualmente lo moldeas hasta conseguir algo más preciso y efectivo. Este proceso típicamente involucra múltiples rondas de pruebas y refinamiento, donde cada iteración te acerca más al resultado deseado.
El enfoque iterativo es un método sistemático que sigue estos pasos esenciales:
- Desarrollo Inicial
- Comienza con un prompt básico que delinee claramente tus requisitos principales - esto significa identificar los elementos clave que necesitas que la IA aborde
- Mantenlo simple pero lo suficientemente preciso para comunicar tu intención básica, evitando complejidad innecesaria que podría confundir al modelo
- Enfócate en establecer una base clara que pueda ser desarrollada en iteraciones posteriores
- Pruebas y Análisis
- Ejecuta tu prompt múltiples veces con diferentes entradas para entender su consistencia y fiabilidad en varios escenarios
- Documenta tanto las salidas exitosas como las no exitosas, prestando especial atención a casos límite y respuestas inesperadas
- Identifica patrones en las respuestas que necesiten mejora, como errores consistentes, malentendidos o desviaciones de los resultados deseados
- Crea una forma sistemática de evaluar la calidad de las respuestas según tus criterios específicos
- Refinamiento
- Agrega detalles específicos para abordar cualquier brecha o malentendido descubierto durante las pruebas, siendo preciso sobre lo que necesita cambiar
- Incluye ejemplos si la interpretación del modelo no coincide con tu intención, mostrando exactamente qué tipo de salida estás buscando
- Incorpora restricciones para prevenir salidas no deseadas, como especificar requisitos de formato o agregar condiciones límite
- Considera agregar información específica del contexto que ayude al modelo a entender mejor el dominio o caso de uso
Consejos para un Refinamiento Iterativo Efectivo:
- Revisión Sistemática: Desarrolla un enfoque metódico para analizar las salidas, quizás usando una lista de verificación o sistema de puntuación para evaluar la calidad de las respuestas según tus criterios. Esto podría incluir:
- Crear una rúbrica de evaluación detallada con métricas específicas
- Rastrear errores comunes y sus frecuencias
- Medir cuantitativamente la relevancia y precisión de las respuestas
- Restricciones Estratégicas: Implementa restricciones cuidadosas a través de parámetros como temperatura, tokens máximos o secuencias de parada. Estos pueden ayudar a guiar al modelo hacia salidas más precisas y controladas. Considera:
- Usar temperaturas bajas (0.1-0.3) para respuestas basadas en hechos
- Establecer temperaturas altas (0.7-0.9) para tareas creativas
- Ajustar los tokens máximos según la longitud deseada de la respuesta
- Pruebas Exhaustivas: Realiza pruebas exhaustivas en varios escenarios y casos límite. Esto ayuda a asegurar que tu prompt sea robusto y pueda manejar diferentes tipos de entradas efectivamente. Los aspectos importantes incluyen:
- Probar con datos y formatos de entrada diversos
- Validar respuestas en diferentes contextos
- Verificar la consistencia en escenarios desafiantes
Aquí hay un ejemplo práctico de refinamiento iterativo en acción:
Prompt Inicial (Versión 1):
messages=[{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Generate a product description for a coffee maker."
}]
Respuesta Inicial:
Esta cafetera prepara un café delicioso. Tiene múltiples configuraciones y es fácil de usar. La máquina viene con garantía y está fabricada con materiales duraderos.
Análisis: La respuesta es demasiado genérica, carece de características específicas y no logra captar la atención del lector.
Prompt Refinado (Versión 2):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in kitchen appliances."
},
{
"role": "user",
"content": "Write a product description for a premium coffee maker. Include:
- Key technical specifications
- Main benefits
- Target audience
Keep the tone professional but engaging."
}]
Segunda Respuesta:
La Cafetera XP5000 ofrece café de calidad barista con su sistema de presión de 15 bares y control preciso de temperatura. Perfecta para los entusiastas del café, esta máquina cuenta con un molinillo incorporado y ajustes programables. El depósito de agua de 1.8L y el diseño de doble salida permiten preparar dos tazas simultáneamente.
Análisis: Mejor, pero podría tener más atractivo emocional y un formato más estructurado.
Prompt Final (Versión 3):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in luxury kitchen appliances. Write in a persuasive, premium style that combines technical expertise with emotional appeal."
},
{
"role": "user",
"content": '''Write a product description for a premium coffee maker using this structure:
Opening: Emotional hook about perfect coffee
Features: 3-4 key technical specifications with benefits
Practical Use: Daily usage scenario
Target: Ideal user profile
Example Format:
[Emotional Hook]
Technical Specs:
• [Spec 1]: [Benefit]
• [Spec 2]: [Benefit]
[Usage Scenario]
[Target Customer]
Keep it under 150 words.'''
}]
Respuesta Final:
Transforme su ritual matutino en una experiencia de calidad de café con la Cafetera XP5000.Especificaciones Técnicas:
• Sistema italiano de presión de 15 bares: Extrae el máximo sabor y una crema perfecta
• Control de temperatura PrecisionPro: Mantiene la temperatura óptima de preparación de 93°C
• Molinillo de muelas cerámico integrado: Preserva los aceites aromáticos para un sabor superior
• Depósito de doble zona de 1.8L: Sirve múltiples tazas manteniendo la frescura del aguaYa sea que tenga prisa para ir al trabajo o esté disfrutando de un domingo tranquilo, el temporizador programable y la pantalla táctil intuitiva aseguran que su taza perfecta esté lista cuando lo necesite.Diseñada para entusiastas del café exigentes que aprecian tanto la excelencia técnica como la belleza estética en sus electrodomésticos de cocina.
Análisis Final: Esta versión combina exitosamente detalles técnicos con atractivo emocional, utiliza un formato claro y se dirige directamente al público objetivo. El proceso iterativo ayudó a refinar el prompt para generar contenido más estructurado, detallado y atractivo.
Cada iteración se construyó sobre la versión anterior mediante:
- La adición de un contexto de sistema más específico para guiar el rol y tono de la IA
- La inclusión de requisitos estructurales claros y ejemplos de formato
- El equilibrio entre especificaciones técnicas y atractivo emocional
- La incorporación de criterios específicos de evaluación
5.1.5 Reflexiones Finales sobre la Creación de Prompts Efectivos
La clave para una ingeniería de prompts efectiva reside en tres pilares fundamentales: claridad, contexto y experimentación. Exploremos cada uno de estos en detalle:
La claridad se trata de una comunicación precisa con el modelo de IA. Esto significa usar lenguaje inequívoco, formato estructurado e instrucciones específicas que no dejen espacio para malinterpretaciones. Cada palabra en tu prompt debe tener un propósito.
El contexto proporciona el trasfondo y marco necesarios para que el modelo comprenda tus requisitos. Esto incluye establecer mensajes de sistema apropiados que definan el rol de la IA, proporcionar ejemplos relevantes que demuestren las salidas deseadas y establecer cualquier conocimiento específico del dominio necesario para la tarea.
La experimentación implica pruebas sistemáticas y refinamiento de tus prompts. Esto significa probar diferentes enfoques, analizar los resultados y realizar mejoras incrementales basadas en lo que funciona mejor.
Al combinar estos elementos - proporcionar instrucciones claras, establecer un contexto adecuado con mensajes de sistema, incluir ejemplos ilustrativos y refinar iterativamente tu entrada - desbloquearás todo el potencial de los modelos de lenguaje de OpenAI. Estas estrategias trabajan juntas para asegurar que el modelo no solo entienda tu intención, sino que pueda producir consistentemente respuestas de alta calidad y específicas que cumplan con tus necesidades específicas.
A medida que ganes experiencia con la ingeniería de prompts, desarrollarás una comprensión intuitiva de cómo ajustes sutiles pueden mejorar dramáticamente las salidas. Pequeños cambios en la redacción, estructura o contexto pueden llevar a resultados significativamente diferentes. Este proceso de aprendizaje es acumulativo - cada experimento te enseña algo nuevo sobre cómo el modelo interpreta y responde a diferentes tipos de entradas. Con práctica continua y atención al detalle, la creación de prompts efectivos se convertirá en una parte natural de tu flujo de trabajo, permitiéndote construir aplicaciones cada vez más sofisticadas y eficientes que aprovechen las capacidades de la IA al máximo.
5.1 Creación de Prompts Efectivos
¡Bienvenido al fascinante mundo de la ingeniería de prompts! Este capítulo explora técnicas avanzadas para comunicarse efectivamente con los modelos de OpenAI, una habilidad crucial en el panorama actual impulsado por la IA. La ingeniería de prompts es tanto un arte como una ciencia - se trata de elaborar entradas que guíen a los modelos de IA para generar resultados que no solo sean útiles y precisos, sino que estén perfectamente alineados con tus objetivos previstos. Este proceso va mucho más allá de simplemente hacer preguntas; requiere una comprensión profunda del establecimiento del contexto, el refinamiento de consultas y el uso estratégico de instrucciones del sistema para moldear el comportamiento del modelo.
Piensa en la ingeniería de prompts como dirigir una orquesta - cada instrucción que proporcionas es como una nota musical que contribuye a la sinfonía final. Necesitas considerar cuidadosamente el tono, el tiempo y la disposición de tus prompts para crear resultados armoniosos. Esto incluye entender cómo usar los ajustes de temperatura para controlar la aleatoriedad, saber cuándo aplicar mensajes del sistema para ajustar la personalidad y dominar el arte del aprendizaje mediante ejemplos.
En las próximas secciones, descubrirás cómo dominar la creación de prompts para lograr resultados extraordinarios. Cubriremos todo, desde la sintaxis básica hasta técnicas avanzadas que pueden transformar tus prompts en herramientas poderosas. Ya sea que estés desarrollando una plataforma educativa que necesite adaptar su estilo de enseñanza a diferentes estudiantes, creando un asistente de escritura sofisticado que pueda adaptarse a varios requisitos de tono y estilo, o construyendo un sistema de atención al cliente que necesite mantener la consistencia en las interacciones, aprenderás las estrategias exactas necesarias para lograr estos objetivos.
Exploraremos cómo usar patrones de prompt, razonamiento en cadena y formas de superar las limitaciones comunes de los modelos de lenguaje. Aprenderás a reconocer cuándo un prompt no está funcionando de manera óptima y cómo diagnosticar y solucionar problemas comunes. A través de ejemplos prácticos y aplicaciones del mundo real, desarrollarás una comprensión intuitiva de lo que hace que los prompts sean efectivos.
Comencemos nuestro viaje examinando uno de los aspectos más fundamentales y cruciales de la ingeniería de prompts: Creación de Prompts Efectivos.
La creación de prompts efectivos es tanto un arte como una ciencia, que requiere un delicado equilibrio entre la precisión técnica y la intuición creativa. Como un maestro artesano que selecciona cuidadosamente sus herramientas, los ingenieros de prompts deben elegir sus palabras y estructuras con intención. Un prompt bien elaborado sirve como un plano integral, proporcionando al modelo de IA todo el contexto, las restricciones y la orientación necesarios para producir una excelente respuesta.
Piensa en la creación de prompts como escribir una receta detallada - cada instrucción importa, y el orden y la claridad de esas instrucciones impactan directamente en el resultado final. El arte radica en comprender los matices del lenguaje natural y cómo formular solicitudes de manera que resuenen con el entrenamiento del modelo. La ciencia implica comprender los aspectos técnicos de cómo los modelos de lenguaje procesan la información y responden a diferentes tipos de entradas.
Aquí hay varios elementos clave que contribuyen a un prompt sólido:
5.1.1 Claridad y Especificidad
Cuanto más claro y específico sea tu prompt, más probable será que el modelo entienda exactamente lo que estás pidiendo. Un prompt bien elaborado actúa como un mapa detallado, guiando a la IA hacia tu destino deseado. Los prompts vagos o ambiguos a menudo resultan en respuestas poco enfocadas o irrelevantes, como dar indicaciones poco claras a un conductor. Al crear un prompt, debes:
Ser explícito sobre tus requisitos
Indica claramente lo que quieres que haga el modelo, incluyendo cualquier parámetro o condición específica. Esto significa ser detallado y preciso en tus instrucciones, sin dejar espacio para la ambigüedad. Al elaborar tu prompt, considera estos aspectos:
- Parámetros: Define exactamente qué variables o condiciones quieres que el modelo considere. Por ejemplo, especifica el conteo de palabras, formato, estilo, tono o nivel técnico.
- Límites del tema: Describe claramente el alcance del tema que quieres cubrir, incluyendo lo que debe incluirse y lo que debe excluirse.
- Formato de salida: Detalla cómo quieres que se presente la información, ya sea en párrafos, viñetas o una estructura específica.
- Público objetivo: Especifica para quién es el contenido, ya que esto ayuda al modelo a ajustar su lenguaje y complejidad apropiadamente.
Por ejemplo, en lugar de pedir "Escribe sobre gatos", especifica "Escribe una explicación de 300 palabras sobre los comportamientos de caza de los gatos domésticos, centrándote en sus técnicas de acecho, preferencias de presas y tasas de éxito. Incluye ejemplos del mundo real, cita investigaciones relevantes cuando sea posible y asegúrate de que el contenido sea accesible para una audiencia general con conocimientos básicos sobre el comportamiento felino."
Este nivel de especificidad ayuda al modelo a entender exactamente lo que estás buscando y elimina las conjeturas. Es como proporcionar un plano detallado en lugar de un boceto aproximado - cuanto más específico seas, mejor podrá el modelo adaptar su respuesta a tus necesidades.
Ejemplo de Ser Explícito Sobre los Requisitos:
Prompt Ineficaz:
"Escribe una publicación de blog sobre energía sostenible."
Este prompt carece de requisitos específicos y deja demasiado espacio para la interpretación.
Prompt Eficaz con Requisitos Explícitos:
"Escribe una publicación de blog de 1000 palabras sobre soluciones de energía renovable para edificios residenciales urbanos, con las siguientes especificaciones:
- Requisitos de Contenido:
- Enfócate en soluciones solares, eólicas y geotérmicas
- Incluye costos de instalación y cálculos de ROI
- Discute incentivos gubernamentales y beneficios fiscales
- Aborda desafíos comunes de implementación
- Nivel de Detalle Técnico:
- Adecuado para propietarios con conocimientos técnicos básicos
- Incluye explicaciones simplificadas de conceptos técnicos
- Proporciona ejemplos prácticos y casos de estudio
- Estructura:
- Comienza con un resumen ejecutivo (100 palabras)
- Incluye 4-5 secciones principales con subtítulos
- Termina con recomendaciones accionables
- Incluye una sección de recursos
- Estilo y Tono:
- Profesional pero conversacional
- Usa analogías para explicar conceptos complejos
- Incluye descripciones de visualizaciones de datos
- Mantén un tono optimista pero realista
Esta versión mejorada describe claramente todos los requisitos, ayudando al modelo a generar contenido que coincida precisamente con el propósito, la audiencia y el formato previstos. Los requisitos explícitos actúan como una lista de verificación integral que guía la respuesta del modelo, asegurando que no se pasen por alto aspectos importantes.
Incluir información de contexto relevante
Proporciona contexto que ayude al modelo a entender el alcance y la perspectiva necesaria. Esto significa suministrar detalles cruciales que enmarquen la pregunta o tarea apropiadamente. Aquí está lo que debes considerar:
- Conocimiento del Dominio: Incluye términos específicos de la industria, jerga técnica o conceptos especializados que sean relevantes para tu consulta. Por ejemplo, al preguntar sobre patrones de desarrollo de software, especifica si estás trabajando en un paradigma de programación o estilo arquitectónico particular.
- Contexto Histórico: Cuando sea aplicable, proporciona eventos importantes de fondo, decisiones previas o contexto evolutivo que pueda influir en la respuesta. Por ejemplo, si preguntas sobre una tecnología, menciona qué versión o era te interesa.
- Estado Actual: Comparte información sobre tu situación actual, incluyendo cualquier solución existente, restricciones o desafíos específicos que estés enfrentando. Esto ayuda al modelo a entender tu punto de partida y adaptar su respuesta en consecuencia.
- Prerrequisitos: Menciona cualquier concepto fundamental o suposición que el modelo deba considerar. Por ejemplo, si se discuten matemáticas avanzadas, especifica qué conceptos básicos se pueden asumir como conocidos.
- Especificaciones del Marco: Cuando trabajes dentro de metodologías o marcos específicos, nómbralos explícitamente y cualquier aspecto particular que sea relevante para tu consulta.
Este contexto detallado asegura que la respuesta del modelo se alinee con tu caso de uso específico y nivel de experiencia, evitando respuestas genéricas o desalineadas. Piensa en ello como proporcionar una imagen completa en lugar de solo una instantánea - cuanto más contexto relevante proporciones, más específica y útil será la respuesta.
Ejemplo de Incluir Información de Contexto:
Consulta Ineficaz:
"¿Puedes explicar cómo optimizar este modelo de aprendizaje automático?"
Esta consulta carece de información de contexto crucial, haciendo imposible proporcionar una respuesta específica.
Consulta Eficaz con Información de Antecedentes:
"Estoy trabajando en la optimización de una red neuronal convolucional para clasificación de imágenes usando PyTorch. El modelo actualmente tiene 5 capas convolucionales y está siendo entrenado con un conjunto de datos de 50,000 imágenes médicas de rayos X (resolución 1024x1024). Está alcanzando un 85% de precisión pero tarda 12 horas en entrenarse en una NVIDIA RTX 3080. El modelo está experimentando sobreajuste después de la época 30, y estamos usando una tasa de aprendizaje de 0.001 con el optimizador Adam. ¿Puedes sugerir estrategias específicas de optimización para este escenario?"
Esta versión mejorada proporciona información esencial de antecedentes que incluye:
- Marco Técnico: Especifica el uso de PyTorch y la arquitectura CNN
- Estado Actual: Detalles sobre precisión, tiempo de entrenamiento y hardware específico
- Contexto del Problema: Identifica el problema de sobreajuste y los hiperparámetros actuales
- Características del Conjunto de Datos: Información sobre el tipo de datos, tamaño y dimensiones
- Configuración Existente: Detalles sobre la arquitectura del modelo y la configuración del entrenamiento
Con esta información de antecedentes completa, el modelo puede proporcionar sugerencias específicas de optimización adaptadas al escenario exacto en lugar de consejos genéricos.
Especificar el formato o estructura deseada
Define cómo quieres que se presente la información en tu prompt para garantizar una organización y claridad óptimas. El formato que especifiques actúa como un plano estructural que guía al modelo de IA en la organización de su respuesta. Este elemento crítico de la ingeniería de prompts puede impactar significativamente en la usabilidad y efectividad del resultado.
Considera estos enfoques clave de formato:
- Estructura del Documento:
- Solicita jerarquías específicas de secciones (secciones principales, subsecciones)
- Especifica si deseas un resumen ejecutivo o conclusión
- Indica si necesitas una tabla de contenidos
- Define el nivel de detalle para cada sección
- Organización del Contenido:
- Viñetas para información concisa y fácil de escanear
- Listas numeradas para pasos secuenciales o elementos priorizados
- Párrafos para explicaciones detalladas
- Tablas para datos comparativos
- Encabezados y subencabezados para una navegación clara
- Elementos de Formato:
- Texto en negrita o cursiva para énfasis
- Bloques de citas para citaciones
- Bloques de código para contenido técnico
- Niveles de sangría para información jerárquica
Por ejemplo, podrías solicitar: "Presenta la información en tres secciones principales, cada una con un encabezado descriptivo, seguida de 2-3 párrafos de explicación y un resumen con viñetas. Incluye ejemplos del mundo real en citas en bloque, y termina cada sección con conclusiones clave en negrita."
Este nivel de especificación de formato ayuda a asegurar que la respuesta no solo sea informativa sino que también esté estructurada de una manera que la haga inmediatamente útil y procesable para tus necesidades específicas. Recuerda que cuanto más preciso seas sobre el formato deseado, más probable es que recibas una respuesta que cumpla con tus requisitos organizativos.
Ejemplo de Especificación de Formato y Estructura:
Prompt Ineficaz:
"Escribe sobre las mejores prácticas en desarrollo de software."
Este prompt carece de especificaciones de formato, potencialmente llevando a una respuesta desestructurada.
Prompt Eficaz con Especificaciones de Formato:
"Crea una guía completa sobre las mejores prácticas en desarrollo de software con la siguiente estructura:
- Diseño del Documento:
- Comienza con un resumen ejecutivo de 150 palabras
- Incluye una tabla de contenidos con hipervínculos
- Organiza el contenido en 5 secciones principales
- Termina con una sección de conclusiones clave
- Formato de Sección:
- Comienza cada sección con un encabezado h2 descriptivo
- Incluye 2-3 subsecciones con encabezados h3
- Proporciona ejemplos prácticos en bloques de código
- Termina cada sección con un resumen en viñetas
- Presentación del Contenido:
- Usa tablas para comparar diferentes enfoques
- Incluye listas numeradas para instrucciones paso a paso
- Presenta las mejores prácticas en cuadros destacados
- Añade descripciones de diagramas relevantes cuando sea necesario
- Formato de Texto:
- Resalta términos clave en negrita
- Usa cursiva para terminología técnica
- Formatea fragmentos de código en monoespaciado
- Incluye saltos de párrafo claros entre conceptos
Esta versión mejorada describe claramente la estructura del documento, los requisitos de formato y el estilo de presentación, asegurando una respuesta bien organizada y fácilmente navegable que comunica efectivamente la información.
Los requisitos específicos de formato ayudan al modelo a crear un documento consistente y profesional que:
- Mantiene una jerarquía clara de información
- Utiliza el formato apropiado para diferentes tipos de contenido
- Asegura una presentación consistente en todo el documento
- Hace que el contenido sea fácil de escanear y digerir
Definir restricciones o limitaciones
Establece límites claros para la respuesta definiendo explícitamente parámetros que controlen el alcance y la naturaleza del resultado. Estas restricciones actúan como guías que orientan al modelo hacia la producción exacta de lo que necesitas. Aquí están los tipos clave de restricciones a considerar:
- Restricciones de Contenido:
- Límites de palabras o caracteres
- Temas específicos a cubrir o evitar
- Secciones o elementos requeridos
- Profundidad de cobertura para cada tema
- Restricciones de Presentación:
- Nivel de complejidad técnica (por ejemplo, "amigable para principiantes" o "nivel experto")
- Tono y estilo (por ejemplo, formal, conversacional, académico)
- Preferencias de idioma (por ejemplo, inglés americano, inglés británico)
- Requisitos de formato
- Restricciones Relacionadas con la Audiencia:
- Nivel de experiencia del público objetivo
- Consideraciones culturales
- Contenido apropiado para la edad
- Terminología específica de la industria
Por ejemplo, en lugar de simplemente solicitar "Escribe sobre inteligencia artificial", podrías especificar: "Escribe una explicación de 500 palabras sobre inteligencia artificial para estudiantes de secundaria, usando analogías simples, evitando jerga técnica y centrándote en aplicaciones del mundo real en la vida cotidiana."
Estas restricciones ayudan a prevenir que el modelo proporcione información excesiva o irrelevante mientras aseguran que la respuesta coincida precisamente con tus requisitos. Considera especificar parámetros como "Mantén la explicación a nivel de secundaria", "Usa un tono profesional pero amigable" o "Céntrate solo en aplicaciones prácticas en lugar de conceptos teóricos". Al establecer estos límites desde el principio, recibirás respuestas más enfocadas, relevantes y útiles mientras evitas complejidad innecesaria o información tangencial.
Ejemplo de Definición de Restricciones y Limitaciones:
Prompt Ineficaz:
"Escribe un artículo sobre energía renovable."
Este prompt carece de restricciones específicas, lo que potencialmente resulta en contenido demasiado amplio o desalineado con las necesidades.
Prompt Eficaz con Restricciones Claras:
"Escribe un artículo sobre energía renovable con estas restricciones específicas:
- Alcance del Contenido:
- Longitud máxima: 1,200 palabras
- Enfócate solo en energía solar y eólica
- Excluye especificaciones técnicas y detalles de ingeniería
- Incluye solo estadísticas verificadas de los últimos 5 años
- Nivel Técnico:
- Escribe para una audiencia general sin conocimientos técnicos
- Define cualquier término específico de la industria
- Usa analogías para explicar conceptos complejos
- Evita jerga de ingeniería y fórmulas matemáticas
- Enfoque Geográfico:
- Limita los ejemplos a implementaciones en Norteamérica
- Incluye solo USD para referencias de costos
- Haz referencia a códigos y regulaciones de construcción locales
- Céntrate en aplicaciones residenciales
- Tono y Estilo:
- Mantén un tono optimista pero realista
- Usa voz activa en todo el texto
- Incluye historias de éxito del mundo real
- Termina con recomendaciones prácticas
Esta versión mejorada define claramente límites que:
- Establecen parámetros específicos de contenido
- Fijan el nivel técnico apropiado
- Definen la relevancia geográfica
- Especifican requisitos de estilo de escritura
Proporcionar estas restricciones detalladas asegura que la respuesta estará precisamente adaptada a tus necesidades mientras evita contenido irrelevante o fuera de alcance.
5.1.2 Establecimiento de Contexto y Rol
El uso de un mensaje de sistema junto con tu prompt es una técnica poderosa que puede mejorar dramáticamente la relevancia y el tono de la respuesta. Los mensajes de sistema actúan como una capa fundamental de instrucción que moldea cómo el asistente de IA interpreta y responde a los prompts subsiguientes. Así como un director proporciona a los actores sus antecedentes de personaje antes de filmar, los mensajes de sistema proporcionan a la IA su contexto y rol esencial. Esta configuración fundamental determina cómo la IA abordará cada interacción subsiguiente.
Los mensajes de sistema cumplen múltiples funciones cruciales que moldean fundamentalmente cómo opera un asistente de IA:
- Establecen el rol del asistente (por ejemplo, "Eres un matemático experto") - Esto define el nivel de experiencia y la perspectiva de la IA, similar a establecer los antecedentes de un personaje en una obra. Por ejemplo, cuando se establece como matemático, la IA abordará los problemas rigurosamente, usará terminología apropiada y formulará explicaciones a través de una lente matemática. Este establecimiento de rol asegura que las respuestas mantengan experiencia y autoridad consistente en el campo designado.
- Definen parámetros de comportamiento (por ejemplo, "Proporciona respuestas concisas y técnicas") - Esto moldea no solo lo que dice la IA, sino cómo lo dice, controlando factores como la verbosidad, formalidad y profundidad técnica. Estos parámetros pueden instruir a la IA para ser más casual o formal, proporcionar explicaciones detalladas o resúmenes breves, o ajustar su complejidad de lenguaje según la audiencia. Por ejemplo, el mismo concepto podría explicarse de manera diferente a un niño versus un profesional en el campo.
- Establecen límites de conocimiento (por ejemplo, "Céntrate solo en investigación posterior a 2020") - Esto ayuda a asegurar que las respuestas se mantengan dentro de límites de información relevantes y actuales, evitando información desactualizada o irrelevante. Los límites de conocimiento pueden ser temporales (enfocándose en períodos específicos), geográficos (limitándose a ciertas regiones o países), o temáticos (restringiéndose a áreas temáticas o metodologías específicas). Esto es particularmente importante cuando se trata de campos que evolucionan rápidamente donde la información más antigua podría estar obsoleta o cuando se requiere el cumplimiento de estándares particulares.
Al elaborar cuidadosamente estos mensajes de sistema, puedes asegurar que las respuestas del asistente estén consistentemente alineadas con tus necesidades específicas, mantengan el nivel apropiado de experiencia y comuniquen en el tono y estilo deseados.
Piensa en ello como programar la personalidad y el marco de conocimiento de la IA - cada interacción subsiguiente será filtrada a través de esta lente. Esto es particularmente valioso cuando se construyen aplicaciones que requieren patrones de interacción consistentes o dominios de conocimiento especializados, ya que mantiene la coherencia a través de múltiples intercambios y asegura que los usuarios reciban respuestas apropiadamente adaptadas en todo momento.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
import json
from typing import Dict, List
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def create_chat_completion(
system_message: str,
user_message: str,
model: str = "gpt-4",
temperature: float = 0.6,
max_tokens: int = 150
) -> Dict:
"""
Create a chat completion using the OpenAI API.
Args:
system_message (str): The system message that sets the context
user_message (str): The user's input message
model (str): The GPT model to use
temperature (float): Controls randomness (0.0-1.0)
max_tokens (int): Maximum tokens in the response
Returns:
Dict: The API response
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message}
],
max_tokens=max_tokens,
temperature=temperature
)
return response
except Exception as e:
print(f"Error occurred: {str(e)}")
return None
# Example usage
system_msg = """You are a friendly and knowledgeable programming tutor.
Focus on providing clear, concise explanations with examples."""
user_msg = "Can you explain the difference between mutable and immutable data types in Python?"
# Get the response
response = create_chat_completion(system_msg, user_msg)
# Handle the response
if response:
answer = response["choices"][0]["message"]["content"]
print("AI Tutor's Response:")
print("-" * 50)
print(answer)
else:
print("Failed to get response from API")
Desglose del Código:
- Importaciones y Configuración:
- Se agregaron sugerencias de tipo con el módulo
typing
para mejorar la documentación del código - Se organizaron las importaciones por biblioteca estándar y paquetes de terceros
- Se agregaron sugerencias de tipo con el módulo
- Definición de Función:
- Se creó una función reutilizable
create_chat_completion
con documentación adecuada - Se agregaron sugerencias de tipo para parámetros y valor de retorno
- Se incluyó manejo de errores con bloque try-except
- Se creó una función reutilizable
- Parámetros:
- Se hicieron configurables el modelo, temperatura y max_tokens con valores predeterminados
- Se separaron los mensajes del sistema y usuario para mayor claridad
- Manejo de Errores:
- Se agregó captura y reporte básico de errores
- Incluye manejo elegante de fallos
- Formato de Salida:
- Se agregó separación visual clara de la respuesta
- Se mejoró la legibilidad con impresión estructurada
En este ejemplo, el mensaje del sistema configura al asistente como un tutor de programación, influyendo así en el estilo y detalle de la respuesta.
5.1.3 Proporcionando Ejemplos e Instrucciones Dentro del Prompt
Incluir ejemplos e instrucciones adicionales dentro de tu prompt es una técnica poderosa que puede mejorar significativamente la calidad y precisión de las respuestas de la IA. Este enfoque, a menudo llamado "aprendizaje con pocos ejemplos" o "aprendizaje por demostración", ayuda a la IA a entender tus expectativas a través de demostraciones concretas. Cuando proporcionas ejemplos específicos, creas una plantilla clara que muestra a la IA exactamente cómo quieres que la información sea estructurada y presentada. Esta precisión es particularmente valiosa cuando se trata de solicitudes complejas o matizadas donde las instrucciones abstractas por sí solas podrían ser insuficientes.
Este enfoque cumple múltiples propósitos y ofrece varios beneficios clave:
- Ambigüedad Reducida
- Los ejemplos sirven como demostraciones prácticas que minimizan la malinterpretación
- Las plantillas visuales ayudan a establecer patrones claros para que la IA siga
- Los ejemplos concretos conectan la brecha entre conceptos abstractos y el resultado deseado
- Aprendizaje Mejorado
- La IA puede hacer coincidencias de patrones contra los ejemplos proporcionados
- Múltiples ejemplos ayudan a demostrar variaciones y rangos aceptables
- Los contextos del mundo real ayudan a fundamentar la comprensión de la IA
Los ejemplos actúan como demostraciones prácticas que reducen la ambigüedad y la mala comunicación. En lugar de depender únicamente de instrucciones abstractas, la IA puede ver precisamente cómo luce el éxito. Este enfoque de aprendizaje visual es similar a cómo los humanos a menudo aprenden mejor a través de la demostración en lugar de la instrucción pura. Las instrucciones adicionales dentro del prompt pueden establecer parámetros específicos para el tono, formato, longitud o complejidad - actuando como guías que mantienen la respuesta alineada con tus expectativas.
La efectividad de los ejemplos puede mejorarse aún más mediante una presentación estratégica:
- Consistencia de Formato
- Usar formato consistente en todos los ejemplos
- Resaltar elementos clave que deben replicarse
- Mostrar estructura y organización clara
Por ejemplo, si estás solicitando una descripción de producto, podrías incluir un ejemplo que muestre el estilo de escritura deseado, los elementos clave a incluir y el formato preferido. Este ejemplo podría demostrar características específicas como viñetas, especificaciones técnicas o declaraciones de beneficios.
El modelo de IA puede entonces usar este punto de referencia integral para generar contenido similar que coincida precisamente con tus necesidades. Este enfoque es particularmente efectivo cuando necesitas mantener una voz de marca consistente, precisión técnica o convenciones de formato específicas a través de múltiples resultados.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
from typing import Dict, Optional
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def send_thank_you_email(
customer_name: str,
order_number: str,
tracking_link: str,
temperature: float = 0.5
) -> Optional[str]:
"""
Generate a personalized thank you email for a customer's purchase.
Args:
customer_name (str): The customer's name
order_number (str): The order reference number
tracking_link (str): The order tracking URL
temperature (float): Controls response randomness (0.0-1.0)
Returns:
Optional[str]: Generated email text or None if generation fails
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "You are an expert writing assistant specializing in warm, professional customer communications."
},
{
"role": "user",
"content": f"""Generate a thank you email with these requirements:
- Use customer name: {customer_name}
- Include order number: {order_number}
- Include tracking link: {tracking_link}
- Keep tone warm and professional
- Maximum length: 4 sentences
Example format:
Dear [Name],
Thank you for your purchase! Your order #[Number] is on its way.
You can track your package here: [Link]
We appreciate your business!"""
}
],
max_tokens=200,
temperature=temperature
)
return response["choices"][0]["message"]["content"]
except Exception as e:
print(f"Error generating email: {str(e)}")
return None
# Example usage
def main():
# Test parameters
customer = "Maria Garcia"
order = "ORD-12345"
tracking = "https://tracking.example.com/ORD-12345"
# Generate email
email_text = send_thank_you_email(customer, order, tracking)
if email_text:
print("Generated Email:")
print("-" * 50)
print(email_text)
else:
print("Failed to generate email")
if __name__ == "__main__":
main()
Desglose del Código:
- Importaciones y Configuración
- Utiliza sugerencias de tipo para mejorar la documentación del código
- Incluye manejo de variables de entorno para la seguridad de la clave API
- Organiza las importaciones de manera lógica
- Estructura de la Función Principal
- Crea una función dedicada para la generación de correos
- Utiliza sugerencias de tipo para parámetros y valor de retorno
- Implementa un manejo adecuado de errores
- Devuelve Optional[str] para manejar posibles fallos
- Parámetros y Configuración
- Toma detalles específicos del cliente como parámetros
- Incluye configuración personalizable de temperatura
- Utiliza f-strings para un formato de cadenas limpio
- Integración de API
- Mensajes estructurados del sistema y usuario
- Requisitos claros de formato en el prompt
- Plantilla de ejemplo incluida para consistencia
- Manejo de Errores y Pruebas
- Implementa bloque try-except para llamadas a la API
- Incluye ejemplo de uso en la función main()
- Proporciona mensajes de error claros
Aquí, el prompt incluye un formato de ejemplo, lo que ayuda al modelo a entender exactamente qué tipo de correo esperas.
5.1.4 Refinamiento Iterativo
La ingeniería de prompts es un proceso iterativo que requiere paciencia, experimentación y atención minuciosa al detalle. Como un escultor refinando su obra, comienzas con un borrador básico del prompt y gradualmente lo moldeas hasta conseguir algo más preciso y efectivo. Este proceso típicamente involucra múltiples rondas de pruebas y refinamiento, donde cada iteración te acerca más al resultado deseado.
El enfoque iterativo es un método sistemático que sigue estos pasos esenciales:
- Desarrollo Inicial
- Comienza con un prompt básico que delinee claramente tus requisitos principales - esto significa identificar los elementos clave que necesitas que la IA aborde
- Mantenlo simple pero lo suficientemente preciso para comunicar tu intención básica, evitando complejidad innecesaria que podría confundir al modelo
- Enfócate en establecer una base clara que pueda ser desarrollada en iteraciones posteriores
- Pruebas y Análisis
- Ejecuta tu prompt múltiples veces con diferentes entradas para entender su consistencia y fiabilidad en varios escenarios
- Documenta tanto las salidas exitosas como las no exitosas, prestando especial atención a casos límite y respuestas inesperadas
- Identifica patrones en las respuestas que necesiten mejora, como errores consistentes, malentendidos o desviaciones de los resultados deseados
- Crea una forma sistemática de evaluar la calidad de las respuestas según tus criterios específicos
- Refinamiento
- Agrega detalles específicos para abordar cualquier brecha o malentendido descubierto durante las pruebas, siendo preciso sobre lo que necesita cambiar
- Incluye ejemplos si la interpretación del modelo no coincide con tu intención, mostrando exactamente qué tipo de salida estás buscando
- Incorpora restricciones para prevenir salidas no deseadas, como especificar requisitos de formato o agregar condiciones límite
- Considera agregar información específica del contexto que ayude al modelo a entender mejor el dominio o caso de uso
Consejos para un Refinamiento Iterativo Efectivo:
- Revisión Sistemática: Desarrolla un enfoque metódico para analizar las salidas, quizás usando una lista de verificación o sistema de puntuación para evaluar la calidad de las respuestas según tus criterios. Esto podría incluir:
- Crear una rúbrica de evaluación detallada con métricas específicas
- Rastrear errores comunes y sus frecuencias
- Medir cuantitativamente la relevancia y precisión de las respuestas
- Restricciones Estratégicas: Implementa restricciones cuidadosas a través de parámetros como temperatura, tokens máximos o secuencias de parada. Estos pueden ayudar a guiar al modelo hacia salidas más precisas y controladas. Considera:
- Usar temperaturas bajas (0.1-0.3) para respuestas basadas en hechos
- Establecer temperaturas altas (0.7-0.9) para tareas creativas
- Ajustar los tokens máximos según la longitud deseada de la respuesta
- Pruebas Exhaustivas: Realiza pruebas exhaustivas en varios escenarios y casos límite. Esto ayuda a asegurar que tu prompt sea robusto y pueda manejar diferentes tipos de entradas efectivamente. Los aspectos importantes incluyen:
- Probar con datos y formatos de entrada diversos
- Validar respuestas en diferentes contextos
- Verificar la consistencia en escenarios desafiantes
Aquí hay un ejemplo práctico de refinamiento iterativo en acción:
Prompt Inicial (Versión 1):
messages=[{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Generate a product description for a coffee maker."
}]
Respuesta Inicial:
Esta cafetera prepara un café delicioso. Tiene múltiples configuraciones y es fácil de usar. La máquina viene con garantía y está fabricada con materiales duraderos.
Análisis: La respuesta es demasiado genérica, carece de características específicas y no logra captar la atención del lector.
Prompt Refinado (Versión 2):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in kitchen appliances."
},
{
"role": "user",
"content": "Write a product description for a premium coffee maker. Include:
- Key technical specifications
- Main benefits
- Target audience
Keep the tone professional but engaging."
}]
Segunda Respuesta:
La Cafetera XP5000 ofrece café de calidad barista con su sistema de presión de 15 bares y control preciso de temperatura. Perfecta para los entusiastas del café, esta máquina cuenta con un molinillo incorporado y ajustes programables. El depósito de agua de 1.8L y el diseño de doble salida permiten preparar dos tazas simultáneamente.
Análisis: Mejor, pero podría tener más atractivo emocional y un formato más estructurado.
Prompt Final (Versión 3):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in luxury kitchen appliances. Write in a persuasive, premium style that combines technical expertise with emotional appeal."
},
{
"role": "user",
"content": '''Write a product description for a premium coffee maker using this structure:
Opening: Emotional hook about perfect coffee
Features: 3-4 key technical specifications with benefits
Practical Use: Daily usage scenario
Target: Ideal user profile
Example Format:
[Emotional Hook]
Technical Specs:
• [Spec 1]: [Benefit]
• [Spec 2]: [Benefit]
[Usage Scenario]
[Target Customer]
Keep it under 150 words.'''
}]
Respuesta Final:
Transforme su ritual matutino en una experiencia de calidad de café con la Cafetera XP5000.Especificaciones Técnicas:
• Sistema italiano de presión de 15 bares: Extrae el máximo sabor y una crema perfecta
• Control de temperatura PrecisionPro: Mantiene la temperatura óptima de preparación de 93°C
• Molinillo de muelas cerámico integrado: Preserva los aceites aromáticos para un sabor superior
• Depósito de doble zona de 1.8L: Sirve múltiples tazas manteniendo la frescura del aguaYa sea que tenga prisa para ir al trabajo o esté disfrutando de un domingo tranquilo, el temporizador programable y la pantalla táctil intuitiva aseguran que su taza perfecta esté lista cuando lo necesite.Diseñada para entusiastas del café exigentes que aprecian tanto la excelencia técnica como la belleza estética en sus electrodomésticos de cocina.
Análisis Final: Esta versión combina exitosamente detalles técnicos con atractivo emocional, utiliza un formato claro y se dirige directamente al público objetivo. El proceso iterativo ayudó a refinar el prompt para generar contenido más estructurado, detallado y atractivo.
Cada iteración se construyó sobre la versión anterior mediante:
- La adición de un contexto de sistema más específico para guiar el rol y tono de la IA
- La inclusión de requisitos estructurales claros y ejemplos de formato
- El equilibrio entre especificaciones técnicas y atractivo emocional
- La incorporación de criterios específicos de evaluación
5.1.5 Reflexiones Finales sobre la Creación de Prompts Efectivos
La clave para una ingeniería de prompts efectiva reside en tres pilares fundamentales: claridad, contexto y experimentación. Exploremos cada uno de estos en detalle:
La claridad se trata de una comunicación precisa con el modelo de IA. Esto significa usar lenguaje inequívoco, formato estructurado e instrucciones específicas que no dejen espacio para malinterpretaciones. Cada palabra en tu prompt debe tener un propósito.
El contexto proporciona el trasfondo y marco necesarios para que el modelo comprenda tus requisitos. Esto incluye establecer mensajes de sistema apropiados que definan el rol de la IA, proporcionar ejemplos relevantes que demuestren las salidas deseadas y establecer cualquier conocimiento específico del dominio necesario para la tarea.
La experimentación implica pruebas sistemáticas y refinamiento de tus prompts. Esto significa probar diferentes enfoques, analizar los resultados y realizar mejoras incrementales basadas en lo que funciona mejor.
Al combinar estos elementos - proporcionar instrucciones claras, establecer un contexto adecuado con mensajes de sistema, incluir ejemplos ilustrativos y refinar iterativamente tu entrada - desbloquearás todo el potencial de los modelos de lenguaje de OpenAI. Estas estrategias trabajan juntas para asegurar que el modelo no solo entienda tu intención, sino que pueda producir consistentemente respuestas de alta calidad y específicas que cumplan con tus necesidades específicas.
A medida que ganes experiencia con la ingeniería de prompts, desarrollarás una comprensión intuitiva de cómo ajustes sutiles pueden mejorar dramáticamente las salidas. Pequeños cambios en la redacción, estructura o contexto pueden llevar a resultados significativamente diferentes. Este proceso de aprendizaje es acumulativo - cada experimento te enseña algo nuevo sobre cómo el modelo interpreta y responde a diferentes tipos de entradas. Con práctica continua y atención al detalle, la creación de prompts efectivos se convertirá en una parte natural de tu flujo de trabajo, permitiéndote construir aplicaciones cada vez más sofisticadas y eficientes que aprovechen las capacidades de la IA al máximo.
5.1 Creación de Prompts Efectivos
¡Bienvenido al fascinante mundo de la ingeniería de prompts! Este capítulo explora técnicas avanzadas para comunicarse efectivamente con los modelos de OpenAI, una habilidad crucial en el panorama actual impulsado por la IA. La ingeniería de prompts es tanto un arte como una ciencia - se trata de elaborar entradas que guíen a los modelos de IA para generar resultados que no solo sean útiles y precisos, sino que estén perfectamente alineados con tus objetivos previstos. Este proceso va mucho más allá de simplemente hacer preguntas; requiere una comprensión profunda del establecimiento del contexto, el refinamiento de consultas y el uso estratégico de instrucciones del sistema para moldear el comportamiento del modelo.
Piensa en la ingeniería de prompts como dirigir una orquesta - cada instrucción que proporcionas es como una nota musical que contribuye a la sinfonía final. Necesitas considerar cuidadosamente el tono, el tiempo y la disposición de tus prompts para crear resultados armoniosos. Esto incluye entender cómo usar los ajustes de temperatura para controlar la aleatoriedad, saber cuándo aplicar mensajes del sistema para ajustar la personalidad y dominar el arte del aprendizaje mediante ejemplos.
En las próximas secciones, descubrirás cómo dominar la creación de prompts para lograr resultados extraordinarios. Cubriremos todo, desde la sintaxis básica hasta técnicas avanzadas que pueden transformar tus prompts en herramientas poderosas. Ya sea que estés desarrollando una plataforma educativa que necesite adaptar su estilo de enseñanza a diferentes estudiantes, creando un asistente de escritura sofisticado que pueda adaptarse a varios requisitos de tono y estilo, o construyendo un sistema de atención al cliente que necesite mantener la consistencia en las interacciones, aprenderás las estrategias exactas necesarias para lograr estos objetivos.
Exploraremos cómo usar patrones de prompt, razonamiento en cadena y formas de superar las limitaciones comunes de los modelos de lenguaje. Aprenderás a reconocer cuándo un prompt no está funcionando de manera óptima y cómo diagnosticar y solucionar problemas comunes. A través de ejemplos prácticos y aplicaciones del mundo real, desarrollarás una comprensión intuitiva de lo que hace que los prompts sean efectivos.
Comencemos nuestro viaje examinando uno de los aspectos más fundamentales y cruciales de la ingeniería de prompts: Creación de Prompts Efectivos.
La creación de prompts efectivos es tanto un arte como una ciencia, que requiere un delicado equilibrio entre la precisión técnica y la intuición creativa. Como un maestro artesano que selecciona cuidadosamente sus herramientas, los ingenieros de prompts deben elegir sus palabras y estructuras con intención. Un prompt bien elaborado sirve como un plano integral, proporcionando al modelo de IA todo el contexto, las restricciones y la orientación necesarios para producir una excelente respuesta.
Piensa en la creación de prompts como escribir una receta detallada - cada instrucción importa, y el orden y la claridad de esas instrucciones impactan directamente en el resultado final. El arte radica en comprender los matices del lenguaje natural y cómo formular solicitudes de manera que resuenen con el entrenamiento del modelo. La ciencia implica comprender los aspectos técnicos de cómo los modelos de lenguaje procesan la información y responden a diferentes tipos de entradas.
Aquí hay varios elementos clave que contribuyen a un prompt sólido:
5.1.1 Claridad y Especificidad
Cuanto más claro y específico sea tu prompt, más probable será que el modelo entienda exactamente lo que estás pidiendo. Un prompt bien elaborado actúa como un mapa detallado, guiando a la IA hacia tu destino deseado. Los prompts vagos o ambiguos a menudo resultan en respuestas poco enfocadas o irrelevantes, como dar indicaciones poco claras a un conductor. Al crear un prompt, debes:
Ser explícito sobre tus requisitos
Indica claramente lo que quieres que haga el modelo, incluyendo cualquier parámetro o condición específica. Esto significa ser detallado y preciso en tus instrucciones, sin dejar espacio para la ambigüedad. Al elaborar tu prompt, considera estos aspectos:
- Parámetros: Define exactamente qué variables o condiciones quieres que el modelo considere. Por ejemplo, especifica el conteo de palabras, formato, estilo, tono o nivel técnico.
- Límites del tema: Describe claramente el alcance del tema que quieres cubrir, incluyendo lo que debe incluirse y lo que debe excluirse.
- Formato de salida: Detalla cómo quieres que se presente la información, ya sea en párrafos, viñetas o una estructura específica.
- Público objetivo: Especifica para quién es el contenido, ya que esto ayuda al modelo a ajustar su lenguaje y complejidad apropiadamente.
Por ejemplo, en lugar de pedir "Escribe sobre gatos", especifica "Escribe una explicación de 300 palabras sobre los comportamientos de caza de los gatos domésticos, centrándote en sus técnicas de acecho, preferencias de presas y tasas de éxito. Incluye ejemplos del mundo real, cita investigaciones relevantes cuando sea posible y asegúrate de que el contenido sea accesible para una audiencia general con conocimientos básicos sobre el comportamiento felino."
Este nivel de especificidad ayuda al modelo a entender exactamente lo que estás buscando y elimina las conjeturas. Es como proporcionar un plano detallado en lugar de un boceto aproximado - cuanto más específico seas, mejor podrá el modelo adaptar su respuesta a tus necesidades.
Ejemplo de Ser Explícito Sobre los Requisitos:
Prompt Ineficaz:
"Escribe una publicación de blog sobre energía sostenible."
Este prompt carece de requisitos específicos y deja demasiado espacio para la interpretación.
Prompt Eficaz con Requisitos Explícitos:
"Escribe una publicación de blog de 1000 palabras sobre soluciones de energía renovable para edificios residenciales urbanos, con las siguientes especificaciones:
- Requisitos de Contenido:
- Enfócate en soluciones solares, eólicas y geotérmicas
- Incluye costos de instalación y cálculos de ROI
- Discute incentivos gubernamentales y beneficios fiscales
- Aborda desafíos comunes de implementación
- Nivel de Detalle Técnico:
- Adecuado para propietarios con conocimientos técnicos básicos
- Incluye explicaciones simplificadas de conceptos técnicos
- Proporciona ejemplos prácticos y casos de estudio
- Estructura:
- Comienza con un resumen ejecutivo (100 palabras)
- Incluye 4-5 secciones principales con subtítulos
- Termina con recomendaciones accionables
- Incluye una sección de recursos
- Estilo y Tono:
- Profesional pero conversacional
- Usa analogías para explicar conceptos complejos
- Incluye descripciones de visualizaciones de datos
- Mantén un tono optimista pero realista
Esta versión mejorada describe claramente todos los requisitos, ayudando al modelo a generar contenido que coincida precisamente con el propósito, la audiencia y el formato previstos. Los requisitos explícitos actúan como una lista de verificación integral que guía la respuesta del modelo, asegurando que no se pasen por alto aspectos importantes.
Incluir información de contexto relevante
Proporciona contexto que ayude al modelo a entender el alcance y la perspectiva necesaria. Esto significa suministrar detalles cruciales que enmarquen la pregunta o tarea apropiadamente. Aquí está lo que debes considerar:
- Conocimiento del Dominio: Incluye términos específicos de la industria, jerga técnica o conceptos especializados que sean relevantes para tu consulta. Por ejemplo, al preguntar sobre patrones de desarrollo de software, especifica si estás trabajando en un paradigma de programación o estilo arquitectónico particular.
- Contexto Histórico: Cuando sea aplicable, proporciona eventos importantes de fondo, decisiones previas o contexto evolutivo que pueda influir en la respuesta. Por ejemplo, si preguntas sobre una tecnología, menciona qué versión o era te interesa.
- Estado Actual: Comparte información sobre tu situación actual, incluyendo cualquier solución existente, restricciones o desafíos específicos que estés enfrentando. Esto ayuda al modelo a entender tu punto de partida y adaptar su respuesta en consecuencia.
- Prerrequisitos: Menciona cualquier concepto fundamental o suposición que el modelo deba considerar. Por ejemplo, si se discuten matemáticas avanzadas, especifica qué conceptos básicos se pueden asumir como conocidos.
- Especificaciones del Marco: Cuando trabajes dentro de metodologías o marcos específicos, nómbralos explícitamente y cualquier aspecto particular que sea relevante para tu consulta.
Este contexto detallado asegura que la respuesta del modelo se alinee con tu caso de uso específico y nivel de experiencia, evitando respuestas genéricas o desalineadas. Piensa en ello como proporcionar una imagen completa en lugar de solo una instantánea - cuanto más contexto relevante proporciones, más específica y útil será la respuesta.
Ejemplo de Incluir Información de Contexto:
Consulta Ineficaz:
"¿Puedes explicar cómo optimizar este modelo de aprendizaje automático?"
Esta consulta carece de información de contexto crucial, haciendo imposible proporcionar una respuesta específica.
Consulta Eficaz con Información de Antecedentes:
"Estoy trabajando en la optimización de una red neuronal convolucional para clasificación de imágenes usando PyTorch. El modelo actualmente tiene 5 capas convolucionales y está siendo entrenado con un conjunto de datos de 50,000 imágenes médicas de rayos X (resolución 1024x1024). Está alcanzando un 85% de precisión pero tarda 12 horas en entrenarse en una NVIDIA RTX 3080. El modelo está experimentando sobreajuste después de la época 30, y estamos usando una tasa de aprendizaje de 0.001 con el optimizador Adam. ¿Puedes sugerir estrategias específicas de optimización para este escenario?"
Esta versión mejorada proporciona información esencial de antecedentes que incluye:
- Marco Técnico: Especifica el uso de PyTorch y la arquitectura CNN
- Estado Actual: Detalles sobre precisión, tiempo de entrenamiento y hardware específico
- Contexto del Problema: Identifica el problema de sobreajuste y los hiperparámetros actuales
- Características del Conjunto de Datos: Información sobre el tipo de datos, tamaño y dimensiones
- Configuración Existente: Detalles sobre la arquitectura del modelo y la configuración del entrenamiento
Con esta información de antecedentes completa, el modelo puede proporcionar sugerencias específicas de optimización adaptadas al escenario exacto en lugar de consejos genéricos.
Especificar el formato o estructura deseada
Define cómo quieres que se presente la información en tu prompt para garantizar una organización y claridad óptimas. El formato que especifiques actúa como un plano estructural que guía al modelo de IA en la organización de su respuesta. Este elemento crítico de la ingeniería de prompts puede impactar significativamente en la usabilidad y efectividad del resultado.
Considera estos enfoques clave de formato:
- Estructura del Documento:
- Solicita jerarquías específicas de secciones (secciones principales, subsecciones)
- Especifica si deseas un resumen ejecutivo o conclusión
- Indica si necesitas una tabla de contenidos
- Define el nivel de detalle para cada sección
- Organización del Contenido:
- Viñetas para información concisa y fácil de escanear
- Listas numeradas para pasos secuenciales o elementos priorizados
- Párrafos para explicaciones detalladas
- Tablas para datos comparativos
- Encabezados y subencabezados para una navegación clara
- Elementos de Formato:
- Texto en negrita o cursiva para énfasis
- Bloques de citas para citaciones
- Bloques de código para contenido técnico
- Niveles de sangría para información jerárquica
Por ejemplo, podrías solicitar: "Presenta la información en tres secciones principales, cada una con un encabezado descriptivo, seguida de 2-3 párrafos de explicación y un resumen con viñetas. Incluye ejemplos del mundo real en citas en bloque, y termina cada sección con conclusiones clave en negrita."
Este nivel de especificación de formato ayuda a asegurar que la respuesta no solo sea informativa sino que también esté estructurada de una manera que la haga inmediatamente útil y procesable para tus necesidades específicas. Recuerda que cuanto más preciso seas sobre el formato deseado, más probable es que recibas una respuesta que cumpla con tus requisitos organizativos.
Ejemplo de Especificación de Formato y Estructura:
Prompt Ineficaz:
"Escribe sobre las mejores prácticas en desarrollo de software."
Este prompt carece de especificaciones de formato, potencialmente llevando a una respuesta desestructurada.
Prompt Eficaz con Especificaciones de Formato:
"Crea una guía completa sobre las mejores prácticas en desarrollo de software con la siguiente estructura:
- Diseño del Documento:
- Comienza con un resumen ejecutivo de 150 palabras
- Incluye una tabla de contenidos con hipervínculos
- Organiza el contenido en 5 secciones principales
- Termina con una sección de conclusiones clave
- Formato de Sección:
- Comienza cada sección con un encabezado h2 descriptivo
- Incluye 2-3 subsecciones con encabezados h3
- Proporciona ejemplos prácticos en bloques de código
- Termina cada sección con un resumen en viñetas
- Presentación del Contenido:
- Usa tablas para comparar diferentes enfoques
- Incluye listas numeradas para instrucciones paso a paso
- Presenta las mejores prácticas en cuadros destacados
- Añade descripciones de diagramas relevantes cuando sea necesario
- Formato de Texto:
- Resalta términos clave en negrita
- Usa cursiva para terminología técnica
- Formatea fragmentos de código en monoespaciado
- Incluye saltos de párrafo claros entre conceptos
Esta versión mejorada describe claramente la estructura del documento, los requisitos de formato y el estilo de presentación, asegurando una respuesta bien organizada y fácilmente navegable que comunica efectivamente la información.
Los requisitos específicos de formato ayudan al modelo a crear un documento consistente y profesional que:
- Mantiene una jerarquía clara de información
- Utiliza el formato apropiado para diferentes tipos de contenido
- Asegura una presentación consistente en todo el documento
- Hace que el contenido sea fácil de escanear y digerir
Definir restricciones o limitaciones
Establece límites claros para la respuesta definiendo explícitamente parámetros que controlen el alcance y la naturaleza del resultado. Estas restricciones actúan como guías que orientan al modelo hacia la producción exacta de lo que necesitas. Aquí están los tipos clave de restricciones a considerar:
- Restricciones de Contenido:
- Límites de palabras o caracteres
- Temas específicos a cubrir o evitar
- Secciones o elementos requeridos
- Profundidad de cobertura para cada tema
- Restricciones de Presentación:
- Nivel de complejidad técnica (por ejemplo, "amigable para principiantes" o "nivel experto")
- Tono y estilo (por ejemplo, formal, conversacional, académico)
- Preferencias de idioma (por ejemplo, inglés americano, inglés británico)
- Requisitos de formato
- Restricciones Relacionadas con la Audiencia:
- Nivel de experiencia del público objetivo
- Consideraciones culturales
- Contenido apropiado para la edad
- Terminología específica de la industria
Por ejemplo, en lugar de simplemente solicitar "Escribe sobre inteligencia artificial", podrías especificar: "Escribe una explicación de 500 palabras sobre inteligencia artificial para estudiantes de secundaria, usando analogías simples, evitando jerga técnica y centrándote en aplicaciones del mundo real en la vida cotidiana."
Estas restricciones ayudan a prevenir que el modelo proporcione información excesiva o irrelevante mientras aseguran que la respuesta coincida precisamente con tus requisitos. Considera especificar parámetros como "Mantén la explicación a nivel de secundaria", "Usa un tono profesional pero amigable" o "Céntrate solo en aplicaciones prácticas en lugar de conceptos teóricos". Al establecer estos límites desde el principio, recibirás respuestas más enfocadas, relevantes y útiles mientras evitas complejidad innecesaria o información tangencial.
Ejemplo de Definición de Restricciones y Limitaciones:
Prompt Ineficaz:
"Escribe un artículo sobre energía renovable."
Este prompt carece de restricciones específicas, lo que potencialmente resulta en contenido demasiado amplio o desalineado con las necesidades.
Prompt Eficaz con Restricciones Claras:
"Escribe un artículo sobre energía renovable con estas restricciones específicas:
- Alcance del Contenido:
- Longitud máxima: 1,200 palabras
- Enfócate solo en energía solar y eólica
- Excluye especificaciones técnicas y detalles de ingeniería
- Incluye solo estadísticas verificadas de los últimos 5 años
- Nivel Técnico:
- Escribe para una audiencia general sin conocimientos técnicos
- Define cualquier término específico de la industria
- Usa analogías para explicar conceptos complejos
- Evita jerga de ingeniería y fórmulas matemáticas
- Enfoque Geográfico:
- Limita los ejemplos a implementaciones en Norteamérica
- Incluye solo USD para referencias de costos
- Haz referencia a códigos y regulaciones de construcción locales
- Céntrate en aplicaciones residenciales
- Tono y Estilo:
- Mantén un tono optimista pero realista
- Usa voz activa en todo el texto
- Incluye historias de éxito del mundo real
- Termina con recomendaciones prácticas
Esta versión mejorada define claramente límites que:
- Establecen parámetros específicos de contenido
- Fijan el nivel técnico apropiado
- Definen la relevancia geográfica
- Especifican requisitos de estilo de escritura
Proporcionar estas restricciones detalladas asegura que la respuesta estará precisamente adaptada a tus necesidades mientras evita contenido irrelevante o fuera de alcance.
5.1.2 Establecimiento de Contexto y Rol
El uso de un mensaje de sistema junto con tu prompt es una técnica poderosa que puede mejorar dramáticamente la relevancia y el tono de la respuesta. Los mensajes de sistema actúan como una capa fundamental de instrucción que moldea cómo el asistente de IA interpreta y responde a los prompts subsiguientes. Así como un director proporciona a los actores sus antecedentes de personaje antes de filmar, los mensajes de sistema proporcionan a la IA su contexto y rol esencial. Esta configuración fundamental determina cómo la IA abordará cada interacción subsiguiente.
Los mensajes de sistema cumplen múltiples funciones cruciales que moldean fundamentalmente cómo opera un asistente de IA:
- Establecen el rol del asistente (por ejemplo, "Eres un matemático experto") - Esto define el nivel de experiencia y la perspectiva de la IA, similar a establecer los antecedentes de un personaje en una obra. Por ejemplo, cuando se establece como matemático, la IA abordará los problemas rigurosamente, usará terminología apropiada y formulará explicaciones a través de una lente matemática. Este establecimiento de rol asegura que las respuestas mantengan experiencia y autoridad consistente en el campo designado.
- Definen parámetros de comportamiento (por ejemplo, "Proporciona respuestas concisas y técnicas") - Esto moldea no solo lo que dice la IA, sino cómo lo dice, controlando factores como la verbosidad, formalidad y profundidad técnica. Estos parámetros pueden instruir a la IA para ser más casual o formal, proporcionar explicaciones detalladas o resúmenes breves, o ajustar su complejidad de lenguaje según la audiencia. Por ejemplo, el mismo concepto podría explicarse de manera diferente a un niño versus un profesional en el campo.
- Establecen límites de conocimiento (por ejemplo, "Céntrate solo en investigación posterior a 2020") - Esto ayuda a asegurar que las respuestas se mantengan dentro de límites de información relevantes y actuales, evitando información desactualizada o irrelevante. Los límites de conocimiento pueden ser temporales (enfocándose en períodos específicos), geográficos (limitándose a ciertas regiones o países), o temáticos (restringiéndose a áreas temáticas o metodologías específicas). Esto es particularmente importante cuando se trata de campos que evolucionan rápidamente donde la información más antigua podría estar obsoleta o cuando se requiere el cumplimiento de estándares particulares.
Al elaborar cuidadosamente estos mensajes de sistema, puedes asegurar que las respuestas del asistente estén consistentemente alineadas con tus necesidades específicas, mantengan el nivel apropiado de experiencia y comuniquen en el tono y estilo deseados.
Piensa en ello como programar la personalidad y el marco de conocimiento de la IA - cada interacción subsiguiente será filtrada a través de esta lente. Esto es particularmente valioso cuando se construyen aplicaciones que requieren patrones de interacción consistentes o dominios de conocimiento especializados, ya que mantiene la coherencia a través de múltiples intercambios y asegura que los usuarios reciban respuestas apropiadamente adaptadas en todo momento.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
import json
from typing import Dict, List
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def create_chat_completion(
system_message: str,
user_message: str,
model: str = "gpt-4",
temperature: float = 0.6,
max_tokens: int = 150
) -> Dict:
"""
Create a chat completion using the OpenAI API.
Args:
system_message (str): The system message that sets the context
user_message (str): The user's input message
model (str): The GPT model to use
temperature (float): Controls randomness (0.0-1.0)
max_tokens (int): Maximum tokens in the response
Returns:
Dict: The API response
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message}
],
max_tokens=max_tokens,
temperature=temperature
)
return response
except Exception as e:
print(f"Error occurred: {str(e)}")
return None
# Example usage
system_msg = """You are a friendly and knowledgeable programming tutor.
Focus on providing clear, concise explanations with examples."""
user_msg = "Can you explain the difference between mutable and immutable data types in Python?"
# Get the response
response = create_chat_completion(system_msg, user_msg)
# Handle the response
if response:
answer = response["choices"][0]["message"]["content"]
print("AI Tutor's Response:")
print("-" * 50)
print(answer)
else:
print("Failed to get response from API")
Desglose del Código:
- Importaciones y Configuración:
- Se agregaron sugerencias de tipo con el módulo
typing
para mejorar la documentación del código - Se organizaron las importaciones por biblioteca estándar y paquetes de terceros
- Se agregaron sugerencias de tipo con el módulo
- Definición de Función:
- Se creó una función reutilizable
create_chat_completion
con documentación adecuada - Se agregaron sugerencias de tipo para parámetros y valor de retorno
- Se incluyó manejo de errores con bloque try-except
- Se creó una función reutilizable
- Parámetros:
- Se hicieron configurables el modelo, temperatura y max_tokens con valores predeterminados
- Se separaron los mensajes del sistema y usuario para mayor claridad
- Manejo de Errores:
- Se agregó captura y reporte básico de errores
- Incluye manejo elegante de fallos
- Formato de Salida:
- Se agregó separación visual clara de la respuesta
- Se mejoró la legibilidad con impresión estructurada
En este ejemplo, el mensaje del sistema configura al asistente como un tutor de programación, influyendo así en el estilo y detalle de la respuesta.
5.1.3 Proporcionando Ejemplos e Instrucciones Dentro del Prompt
Incluir ejemplos e instrucciones adicionales dentro de tu prompt es una técnica poderosa que puede mejorar significativamente la calidad y precisión de las respuestas de la IA. Este enfoque, a menudo llamado "aprendizaje con pocos ejemplos" o "aprendizaje por demostración", ayuda a la IA a entender tus expectativas a través de demostraciones concretas. Cuando proporcionas ejemplos específicos, creas una plantilla clara que muestra a la IA exactamente cómo quieres que la información sea estructurada y presentada. Esta precisión es particularmente valiosa cuando se trata de solicitudes complejas o matizadas donde las instrucciones abstractas por sí solas podrían ser insuficientes.
Este enfoque cumple múltiples propósitos y ofrece varios beneficios clave:
- Ambigüedad Reducida
- Los ejemplos sirven como demostraciones prácticas que minimizan la malinterpretación
- Las plantillas visuales ayudan a establecer patrones claros para que la IA siga
- Los ejemplos concretos conectan la brecha entre conceptos abstractos y el resultado deseado
- Aprendizaje Mejorado
- La IA puede hacer coincidencias de patrones contra los ejemplos proporcionados
- Múltiples ejemplos ayudan a demostrar variaciones y rangos aceptables
- Los contextos del mundo real ayudan a fundamentar la comprensión de la IA
Los ejemplos actúan como demostraciones prácticas que reducen la ambigüedad y la mala comunicación. En lugar de depender únicamente de instrucciones abstractas, la IA puede ver precisamente cómo luce el éxito. Este enfoque de aprendizaje visual es similar a cómo los humanos a menudo aprenden mejor a través de la demostración en lugar de la instrucción pura. Las instrucciones adicionales dentro del prompt pueden establecer parámetros específicos para el tono, formato, longitud o complejidad - actuando como guías que mantienen la respuesta alineada con tus expectativas.
La efectividad de los ejemplos puede mejorarse aún más mediante una presentación estratégica:
- Consistencia de Formato
- Usar formato consistente en todos los ejemplos
- Resaltar elementos clave que deben replicarse
- Mostrar estructura y organización clara
Por ejemplo, si estás solicitando una descripción de producto, podrías incluir un ejemplo que muestre el estilo de escritura deseado, los elementos clave a incluir y el formato preferido. Este ejemplo podría demostrar características específicas como viñetas, especificaciones técnicas o declaraciones de beneficios.
El modelo de IA puede entonces usar este punto de referencia integral para generar contenido similar que coincida precisamente con tus necesidades. Este enfoque es particularmente efectivo cuando necesitas mantener una voz de marca consistente, precisión técnica o convenciones de formato específicas a través de múltiples resultados.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
from typing import Dict, Optional
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def send_thank_you_email(
customer_name: str,
order_number: str,
tracking_link: str,
temperature: float = 0.5
) -> Optional[str]:
"""
Generate a personalized thank you email for a customer's purchase.
Args:
customer_name (str): The customer's name
order_number (str): The order reference number
tracking_link (str): The order tracking URL
temperature (float): Controls response randomness (0.0-1.0)
Returns:
Optional[str]: Generated email text or None if generation fails
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "You are an expert writing assistant specializing in warm, professional customer communications."
},
{
"role": "user",
"content": f"""Generate a thank you email with these requirements:
- Use customer name: {customer_name}
- Include order number: {order_number}
- Include tracking link: {tracking_link}
- Keep tone warm and professional
- Maximum length: 4 sentences
Example format:
Dear [Name],
Thank you for your purchase! Your order #[Number] is on its way.
You can track your package here: [Link]
We appreciate your business!"""
}
],
max_tokens=200,
temperature=temperature
)
return response["choices"][0]["message"]["content"]
except Exception as e:
print(f"Error generating email: {str(e)}")
return None
# Example usage
def main():
# Test parameters
customer = "Maria Garcia"
order = "ORD-12345"
tracking = "https://tracking.example.com/ORD-12345"
# Generate email
email_text = send_thank_you_email(customer, order, tracking)
if email_text:
print("Generated Email:")
print("-" * 50)
print(email_text)
else:
print("Failed to generate email")
if __name__ == "__main__":
main()
Desglose del Código:
- Importaciones y Configuración
- Utiliza sugerencias de tipo para mejorar la documentación del código
- Incluye manejo de variables de entorno para la seguridad de la clave API
- Organiza las importaciones de manera lógica
- Estructura de la Función Principal
- Crea una función dedicada para la generación de correos
- Utiliza sugerencias de tipo para parámetros y valor de retorno
- Implementa un manejo adecuado de errores
- Devuelve Optional[str] para manejar posibles fallos
- Parámetros y Configuración
- Toma detalles específicos del cliente como parámetros
- Incluye configuración personalizable de temperatura
- Utiliza f-strings para un formato de cadenas limpio
- Integración de API
- Mensajes estructurados del sistema y usuario
- Requisitos claros de formato en el prompt
- Plantilla de ejemplo incluida para consistencia
- Manejo de Errores y Pruebas
- Implementa bloque try-except para llamadas a la API
- Incluye ejemplo de uso en la función main()
- Proporciona mensajes de error claros
Aquí, el prompt incluye un formato de ejemplo, lo que ayuda al modelo a entender exactamente qué tipo de correo esperas.
5.1.4 Refinamiento Iterativo
La ingeniería de prompts es un proceso iterativo que requiere paciencia, experimentación y atención minuciosa al detalle. Como un escultor refinando su obra, comienzas con un borrador básico del prompt y gradualmente lo moldeas hasta conseguir algo más preciso y efectivo. Este proceso típicamente involucra múltiples rondas de pruebas y refinamiento, donde cada iteración te acerca más al resultado deseado.
El enfoque iterativo es un método sistemático que sigue estos pasos esenciales:
- Desarrollo Inicial
- Comienza con un prompt básico que delinee claramente tus requisitos principales - esto significa identificar los elementos clave que necesitas que la IA aborde
- Mantenlo simple pero lo suficientemente preciso para comunicar tu intención básica, evitando complejidad innecesaria que podría confundir al modelo
- Enfócate en establecer una base clara que pueda ser desarrollada en iteraciones posteriores
- Pruebas y Análisis
- Ejecuta tu prompt múltiples veces con diferentes entradas para entender su consistencia y fiabilidad en varios escenarios
- Documenta tanto las salidas exitosas como las no exitosas, prestando especial atención a casos límite y respuestas inesperadas
- Identifica patrones en las respuestas que necesiten mejora, como errores consistentes, malentendidos o desviaciones de los resultados deseados
- Crea una forma sistemática de evaluar la calidad de las respuestas según tus criterios específicos
- Refinamiento
- Agrega detalles específicos para abordar cualquier brecha o malentendido descubierto durante las pruebas, siendo preciso sobre lo que necesita cambiar
- Incluye ejemplos si la interpretación del modelo no coincide con tu intención, mostrando exactamente qué tipo de salida estás buscando
- Incorpora restricciones para prevenir salidas no deseadas, como especificar requisitos de formato o agregar condiciones límite
- Considera agregar información específica del contexto que ayude al modelo a entender mejor el dominio o caso de uso
Consejos para un Refinamiento Iterativo Efectivo:
- Revisión Sistemática: Desarrolla un enfoque metódico para analizar las salidas, quizás usando una lista de verificación o sistema de puntuación para evaluar la calidad de las respuestas según tus criterios. Esto podría incluir:
- Crear una rúbrica de evaluación detallada con métricas específicas
- Rastrear errores comunes y sus frecuencias
- Medir cuantitativamente la relevancia y precisión de las respuestas
- Restricciones Estratégicas: Implementa restricciones cuidadosas a través de parámetros como temperatura, tokens máximos o secuencias de parada. Estos pueden ayudar a guiar al modelo hacia salidas más precisas y controladas. Considera:
- Usar temperaturas bajas (0.1-0.3) para respuestas basadas en hechos
- Establecer temperaturas altas (0.7-0.9) para tareas creativas
- Ajustar los tokens máximos según la longitud deseada de la respuesta
- Pruebas Exhaustivas: Realiza pruebas exhaustivas en varios escenarios y casos límite. Esto ayuda a asegurar que tu prompt sea robusto y pueda manejar diferentes tipos de entradas efectivamente. Los aspectos importantes incluyen:
- Probar con datos y formatos de entrada diversos
- Validar respuestas en diferentes contextos
- Verificar la consistencia en escenarios desafiantes
Aquí hay un ejemplo práctico de refinamiento iterativo en acción:
Prompt Inicial (Versión 1):
messages=[{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Generate a product description for a coffee maker."
}]
Respuesta Inicial:
Esta cafetera prepara un café delicioso. Tiene múltiples configuraciones y es fácil de usar. La máquina viene con garantía y está fabricada con materiales duraderos.
Análisis: La respuesta es demasiado genérica, carece de características específicas y no logra captar la atención del lector.
Prompt Refinado (Versión 2):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in kitchen appliances."
},
{
"role": "user",
"content": "Write a product description for a premium coffee maker. Include:
- Key technical specifications
- Main benefits
- Target audience
Keep the tone professional but engaging."
}]
Segunda Respuesta:
La Cafetera XP5000 ofrece café de calidad barista con su sistema de presión de 15 bares y control preciso de temperatura. Perfecta para los entusiastas del café, esta máquina cuenta con un molinillo incorporado y ajustes programables. El depósito de agua de 1.8L y el diseño de doble salida permiten preparar dos tazas simultáneamente.
Análisis: Mejor, pero podría tener más atractivo emocional y un formato más estructurado.
Prompt Final (Versión 3):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in luxury kitchen appliances. Write in a persuasive, premium style that combines technical expertise with emotional appeal."
},
{
"role": "user",
"content": '''Write a product description for a premium coffee maker using this structure:
Opening: Emotional hook about perfect coffee
Features: 3-4 key technical specifications with benefits
Practical Use: Daily usage scenario
Target: Ideal user profile
Example Format:
[Emotional Hook]
Technical Specs:
• [Spec 1]: [Benefit]
• [Spec 2]: [Benefit]
[Usage Scenario]
[Target Customer]
Keep it under 150 words.'''
}]
Respuesta Final:
Transforme su ritual matutino en una experiencia de calidad de café con la Cafetera XP5000.Especificaciones Técnicas:
• Sistema italiano de presión de 15 bares: Extrae el máximo sabor y una crema perfecta
• Control de temperatura PrecisionPro: Mantiene la temperatura óptima de preparación de 93°C
• Molinillo de muelas cerámico integrado: Preserva los aceites aromáticos para un sabor superior
• Depósito de doble zona de 1.8L: Sirve múltiples tazas manteniendo la frescura del aguaYa sea que tenga prisa para ir al trabajo o esté disfrutando de un domingo tranquilo, el temporizador programable y la pantalla táctil intuitiva aseguran que su taza perfecta esté lista cuando lo necesite.Diseñada para entusiastas del café exigentes que aprecian tanto la excelencia técnica como la belleza estética en sus electrodomésticos de cocina.
Análisis Final: Esta versión combina exitosamente detalles técnicos con atractivo emocional, utiliza un formato claro y se dirige directamente al público objetivo. El proceso iterativo ayudó a refinar el prompt para generar contenido más estructurado, detallado y atractivo.
Cada iteración se construyó sobre la versión anterior mediante:
- La adición de un contexto de sistema más específico para guiar el rol y tono de la IA
- La inclusión de requisitos estructurales claros y ejemplos de formato
- El equilibrio entre especificaciones técnicas y atractivo emocional
- La incorporación de criterios específicos de evaluación
5.1.5 Reflexiones Finales sobre la Creación de Prompts Efectivos
La clave para una ingeniería de prompts efectiva reside en tres pilares fundamentales: claridad, contexto y experimentación. Exploremos cada uno de estos en detalle:
La claridad se trata de una comunicación precisa con el modelo de IA. Esto significa usar lenguaje inequívoco, formato estructurado e instrucciones específicas que no dejen espacio para malinterpretaciones. Cada palabra en tu prompt debe tener un propósito.
El contexto proporciona el trasfondo y marco necesarios para que el modelo comprenda tus requisitos. Esto incluye establecer mensajes de sistema apropiados que definan el rol de la IA, proporcionar ejemplos relevantes que demuestren las salidas deseadas y establecer cualquier conocimiento específico del dominio necesario para la tarea.
La experimentación implica pruebas sistemáticas y refinamiento de tus prompts. Esto significa probar diferentes enfoques, analizar los resultados y realizar mejoras incrementales basadas en lo que funciona mejor.
Al combinar estos elementos - proporcionar instrucciones claras, establecer un contexto adecuado con mensajes de sistema, incluir ejemplos ilustrativos y refinar iterativamente tu entrada - desbloquearás todo el potencial de los modelos de lenguaje de OpenAI. Estas estrategias trabajan juntas para asegurar que el modelo no solo entienda tu intención, sino que pueda producir consistentemente respuestas de alta calidad y específicas que cumplan con tus necesidades específicas.
A medida que ganes experiencia con la ingeniería de prompts, desarrollarás una comprensión intuitiva de cómo ajustes sutiles pueden mejorar dramáticamente las salidas. Pequeños cambios en la redacción, estructura o contexto pueden llevar a resultados significativamente diferentes. Este proceso de aprendizaje es acumulativo - cada experimento te enseña algo nuevo sobre cómo el modelo interpreta y responde a diferentes tipos de entradas. Con práctica continua y atención al detalle, la creación de prompts efectivos se convertirá en una parte natural de tu flujo de trabajo, permitiéndote construir aplicaciones cada vez más sofisticadas y eficientes que aprovechen las capacidades de la IA al máximo.
5.1 Creación de Prompts Efectivos
¡Bienvenido al fascinante mundo de la ingeniería de prompts! Este capítulo explora técnicas avanzadas para comunicarse efectivamente con los modelos de OpenAI, una habilidad crucial en el panorama actual impulsado por la IA. La ingeniería de prompts es tanto un arte como una ciencia - se trata de elaborar entradas que guíen a los modelos de IA para generar resultados que no solo sean útiles y precisos, sino que estén perfectamente alineados con tus objetivos previstos. Este proceso va mucho más allá de simplemente hacer preguntas; requiere una comprensión profunda del establecimiento del contexto, el refinamiento de consultas y el uso estratégico de instrucciones del sistema para moldear el comportamiento del modelo.
Piensa en la ingeniería de prompts como dirigir una orquesta - cada instrucción que proporcionas es como una nota musical que contribuye a la sinfonía final. Necesitas considerar cuidadosamente el tono, el tiempo y la disposición de tus prompts para crear resultados armoniosos. Esto incluye entender cómo usar los ajustes de temperatura para controlar la aleatoriedad, saber cuándo aplicar mensajes del sistema para ajustar la personalidad y dominar el arte del aprendizaje mediante ejemplos.
En las próximas secciones, descubrirás cómo dominar la creación de prompts para lograr resultados extraordinarios. Cubriremos todo, desde la sintaxis básica hasta técnicas avanzadas que pueden transformar tus prompts en herramientas poderosas. Ya sea que estés desarrollando una plataforma educativa que necesite adaptar su estilo de enseñanza a diferentes estudiantes, creando un asistente de escritura sofisticado que pueda adaptarse a varios requisitos de tono y estilo, o construyendo un sistema de atención al cliente que necesite mantener la consistencia en las interacciones, aprenderás las estrategias exactas necesarias para lograr estos objetivos.
Exploraremos cómo usar patrones de prompt, razonamiento en cadena y formas de superar las limitaciones comunes de los modelos de lenguaje. Aprenderás a reconocer cuándo un prompt no está funcionando de manera óptima y cómo diagnosticar y solucionar problemas comunes. A través de ejemplos prácticos y aplicaciones del mundo real, desarrollarás una comprensión intuitiva de lo que hace que los prompts sean efectivos.
Comencemos nuestro viaje examinando uno de los aspectos más fundamentales y cruciales de la ingeniería de prompts: Creación de Prompts Efectivos.
La creación de prompts efectivos es tanto un arte como una ciencia, que requiere un delicado equilibrio entre la precisión técnica y la intuición creativa. Como un maestro artesano que selecciona cuidadosamente sus herramientas, los ingenieros de prompts deben elegir sus palabras y estructuras con intención. Un prompt bien elaborado sirve como un plano integral, proporcionando al modelo de IA todo el contexto, las restricciones y la orientación necesarios para producir una excelente respuesta.
Piensa en la creación de prompts como escribir una receta detallada - cada instrucción importa, y el orden y la claridad de esas instrucciones impactan directamente en el resultado final. El arte radica en comprender los matices del lenguaje natural y cómo formular solicitudes de manera que resuenen con el entrenamiento del modelo. La ciencia implica comprender los aspectos técnicos de cómo los modelos de lenguaje procesan la información y responden a diferentes tipos de entradas.
Aquí hay varios elementos clave que contribuyen a un prompt sólido:
5.1.1 Claridad y Especificidad
Cuanto más claro y específico sea tu prompt, más probable será que el modelo entienda exactamente lo que estás pidiendo. Un prompt bien elaborado actúa como un mapa detallado, guiando a la IA hacia tu destino deseado. Los prompts vagos o ambiguos a menudo resultan en respuestas poco enfocadas o irrelevantes, como dar indicaciones poco claras a un conductor. Al crear un prompt, debes:
Ser explícito sobre tus requisitos
Indica claramente lo que quieres que haga el modelo, incluyendo cualquier parámetro o condición específica. Esto significa ser detallado y preciso en tus instrucciones, sin dejar espacio para la ambigüedad. Al elaborar tu prompt, considera estos aspectos:
- Parámetros: Define exactamente qué variables o condiciones quieres que el modelo considere. Por ejemplo, especifica el conteo de palabras, formato, estilo, tono o nivel técnico.
- Límites del tema: Describe claramente el alcance del tema que quieres cubrir, incluyendo lo que debe incluirse y lo que debe excluirse.
- Formato de salida: Detalla cómo quieres que se presente la información, ya sea en párrafos, viñetas o una estructura específica.
- Público objetivo: Especifica para quién es el contenido, ya que esto ayuda al modelo a ajustar su lenguaje y complejidad apropiadamente.
Por ejemplo, en lugar de pedir "Escribe sobre gatos", especifica "Escribe una explicación de 300 palabras sobre los comportamientos de caza de los gatos domésticos, centrándote en sus técnicas de acecho, preferencias de presas y tasas de éxito. Incluye ejemplos del mundo real, cita investigaciones relevantes cuando sea posible y asegúrate de que el contenido sea accesible para una audiencia general con conocimientos básicos sobre el comportamiento felino."
Este nivel de especificidad ayuda al modelo a entender exactamente lo que estás buscando y elimina las conjeturas. Es como proporcionar un plano detallado en lugar de un boceto aproximado - cuanto más específico seas, mejor podrá el modelo adaptar su respuesta a tus necesidades.
Ejemplo de Ser Explícito Sobre los Requisitos:
Prompt Ineficaz:
"Escribe una publicación de blog sobre energía sostenible."
Este prompt carece de requisitos específicos y deja demasiado espacio para la interpretación.
Prompt Eficaz con Requisitos Explícitos:
"Escribe una publicación de blog de 1000 palabras sobre soluciones de energía renovable para edificios residenciales urbanos, con las siguientes especificaciones:
- Requisitos de Contenido:
- Enfócate en soluciones solares, eólicas y geotérmicas
- Incluye costos de instalación y cálculos de ROI
- Discute incentivos gubernamentales y beneficios fiscales
- Aborda desafíos comunes de implementación
- Nivel de Detalle Técnico:
- Adecuado para propietarios con conocimientos técnicos básicos
- Incluye explicaciones simplificadas de conceptos técnicos
- Proporciona ejemplos prácticos y casos de estudio
- Estructura:
- Comienza con un resumen ejecutivo (100 palabras)
- Incluye 4-5 secciones principales con subtítulos
- Termina con recomendaciones accionables
- Incluye una sección de recursos
- Estilo y Tono:
- Profesional pero conversacional
- Usa analogías para explicar conceptos complejos
- Incluye descripciones de visualizaciones de datos
- Mantén un tono optimista pero realista
Esta versión mejorada describe claramente todos los requisitos, ayudando al modelo a generar contenido que coincida precisamente con el propósito, la audiencia y el formato previstos. Los requisitos explícitos actúan como una lista de verificación integral que guía la respuesta del modelo, asegurando que no se pasen por alto aspectos importantes.
Incluir información de contexto relevante
Proporciona contexto que ayude al modelo a entender el alcance y la perspectiva necesaria. Esto significa suministrar detalles cruciales que enmarquen la pregunta o tarea apropiadamente. Aquí está lo que debes considerar:
- Conocimiento del Dominio: Incluye términos específicos de la industria, jerga técnica o conceptos especializados que sean relevantes para tu consulta. Por ejemplo, al preguntar sobre patrones de desarrollo de software, especifica si estás trabajando en un paradigma de programación o estilo arquitectónico particular.
- Contexto Histórico: Cuando sea aplicable, proporciona eventos importantes de fondo, decisiones previas o contexto evolutivo que pueda influir en la respuesta. Por ejemplo, si preguntas sobre una tecnología, menciona qué versión o era te interesa.
- Estado Actual: Comparte información sobre tu situación actual, incluyendo cualquier solución existente, restricciones o desafíos específicos que estés enfrentando. Esto ayuda al modelo a entender tu punto de partida y adaptar su respuesta en consecuencia.
- Prerrequisitos: Menciona cualquier concepto fundamental o suposición que el modelo deba considerar. Por ejemplo, si se discuten matemáticas avanzadas, especifica qué conceptos básicos se pueden asumir como conocidos.
- Especificaciones del Marco: Cuando trabajes dentro de metodologías o marcos específicos, nómbralos explícitamente y cualquier aspecto particular que sea relevante para tu consulta.
Este contexto detallado asegura que la respuesta del modelo se alinee con tu caso de uso específico y nivel de experiencia, evitando respuestas genéricas o desalineadas. Piensa en ello como proporcionar una imagen completa en lugar de solo una instantánea - cuanto más contexto relevante proporciones, más específica y útil será la respuesta.
Ejemplo de Incluir Información de Contexto:
Consulta Ineficaz:
"¿Puedes explicar cómo optimizar este modelo de aprendizaje automático?"
Esta consulta carece de información de contexto crucial, haciendo imposible proporcionar una respuesta específica.
Consulta Eficaz con Información de Antecedentes:
"Estoy trabajando en la optimización de una red neuronal convolucional para clasificación de imágenes usando PyTorch. El modelo actualmente tiene 5 capas convolucionales y está siendo entrenado con un conjunto de datos de 50,000 imágenes médicas de rayos X (resolución 1024x1024). Está alcanzando un 85% de precisión pero tarda 12 horas en entrenarse en una NVIDIA RTX 3080. El modelo está experimentando sobreajuste después de la época 30, y estamos usando una tasa de aprendizaje de 0.001 con el optimizador Adam. ¿Puedes sugerir estrategias específicas de optimización para este escenario?"
Esta versión mejorada proporciona información esencial de antecedentes que incluye:
- Marco Técnico: Especifica el uso de PyTorch y la arquitectura CNN
- Estado Actual: Detalles sobre precisión, tiempo de entrenamiento y hardware específico
- Contexto del Problema: Identifica el problema de sobreajuste y los hiperparámetros actuales
- Características del Conjunto de Datos: Información sobre el tipo de datos, tamaño y dimensiones
- Configuración Existente: Detalles sobre la arquitectura del modelo y la configuración del entrenamiento
Con esta información de antecedentes completa, el modelo puede proporcionar sugerencias específicas de optimización adaptadas al escenario exacto en lugar de consejos genéricos.
Especificar el formato o estructura deseada
Define cómo quieres que se presente la información en tu prompt para garantizar una organización y claridad óptimas. El formato que especifiques actúa como un plano estructural que guía al modelo de IA en la organización de su respuesta. Este elemento crítico de la ingeniería de prompts puede impactar significativamente en la usabilidad y efectividad del resultado.
Considera estos enfoques clave de formato:
- Estructura del Documento:
- Solicita jerarquías específicas de secciones (secciones principales, subsecciones)
- Especifica si deseas un resumen ejecutivo o conclusión
- Indica si necesitas una tabla de contenidos
- Define el nivel de detalle para cada sección
- Organización del Contenido:
- Viñetas para información concisa y fácil de escanear
- Listas numeradas para pasos secuenciales o elementos priorizados
- Párrafos para explicaciones detalladas
- Tablas para datos comparativos
- Encabezados y subencabezados para una navegación clara
- Elementos de Formato:
- Texto en negrita o cursiva para énfasis
- Bloques de citas para citaciones
- Bloques de código para contenido técnico
- Niveles de sangría para información jerárquica
Por ejemplo, podrías solicitar: "Presenta la información en tres secciones principales, cada una con un encabezado descriptivo, seguida de 2-3 párrafos de explicación y un resumen con viñetas. Incluye ejemplos del mundo real en citas en bloque, y termina cada sección con conclusiones clave en negrita."
Este nivel de especificación de formato ayuda a asegurar que la respuesta no solo sea informativa sino que también esté estructurada de una manera que la haga inmediatamente útil y procesable para tus necesidades específicas. Recuerda que cuanto más preciso seas sobre el formato deseado, más probable es que recibas una respuesta que cumpla con tus requisitos organizativos.
Ejemplo de Especificación de Formato y Estructura:
Prompt Ineficaz:
"Escribe sobre las mejores prácticas en desarrollo de software."
Este prompt carece de especificaciones de formato, potencialmente llevando a una respuesta desestructurada.
Prompt Eficaz con Especificaciones de Formato:
"Crea una guía completa sobre las mejores prácticas en desarrollo de software con la siguiente estructura:
- Diseño del Documento:
- Comienza con un resumen ejecutivo de 150 palabras
- Incluye una tabla de contenidos con hipervínculos
- Organiza el contenido en 5 secciones principales
- Termina con una sección de conclusiones clave
- Formato de Sección:
- Comienza cada sección con un encabezado h2 descriptivo
- Incluye 2-3 subsecciones con encabezados h3
- Proporciona ejemplos prácticos en bloques de código
- Termina cada sección con un resumen en viñetas
- Presentación del Contenido:
- Usa tablas para comparar diferentes enfoques
- Incluye listas numeradas para instrucciones paso a paso
- Presenta las mejores prácticas en cuadros destacados
- Añade descripciones de diagramas relevantes cuando sea necesario
- Formato de Texto:
- Resalta términos clave en negrita
- Usa cursiva para terminología técnica
- Formatea fragmentos de código en monoespaciado
- Incluye saltos de párrafo claros entre conceptos
Esta versión mejorada describe claramente la estructura del documento, los requisitos de formato y el estilo de presentación, asegurando una respuesta bien organizada y fácilmente navegable que comunica efectivamente la información.
Los requisitos específicos de formato ayudan al modelo a crear un documento consistente y profesional que:
- Mantiene una jerarquía clara de información
- Utiliza el formato apropiado para diferentes tipos de contenido
- Asegura una presentación consistente en todo el documento
- Hace que el contenido sea fácil de escanear y digerir
Definir restricciones o limitaciones
Establece límites claros para la respuesta definiendo explícitamente parámetros que controlen el alcance y la naturaleza del resultado. Estas restricciones actúan como guías que orientan al modelo hacia la producción exacta de lo que necesitas. Aquí están los tipos clave de restricciones a considerar:
- Restricciones de Contenido:
- Límites de palabras o caracteres
- Temas específicos a cubrir o evitar
- Secciones o elementos requeridos
- Profundidad de cobertura para cada tema
- Restricciones de Presentación:
- Nivel de complejidad técnica (por ejemplo, "amigable para principiantes" o "nivel experto")
- Tono y estilo (por ejemplo, formal, conversacional, académico)
- Preferencias de idioma (por ejemplo, inglés americano, inglés británico)
- Requisitos de formato
- Restricciones Relacionadas con la Audiencia:
- Nivel de experiencia del público objetivo
- Consideraciones culturales
- Contenido apropiado para la edad
- Terminología específica de la industria
Por ejemplo, en lugar de simplemente solicitar "Escribe sobre inteligencia artificial", podrías especificar: "Escribe una explicación de 500 palabras sobre inteligencia artificial para estudiantes de secundaria, usando analogías simples, evitando jerga técnica y centrándote en aplicaciones del mundo real en la vida cotidiana."
Estas restricciones ayudan a prevenir que el modelo proporcione información excesiva o irrelevante mientras aseguran que la respuesta coincida precisamente con tus requisitos. Considera especificar parámetros como "Mantén la explicación a nivel de secundaria", "Usa un tono profesional pero amigable" o "Céntrate solo en aplicaciones prácticas en lugar de conceptos teóricos". Al establecer estos límites desde el principio, recibirás respuestas más enfocadas, relevantes y útiles mientras evitas complejidad innecesaria o información tangencial.
Ejemplo de Definición de Restricciones y Limitaciones:
Prompt Ineficaz:
"Escribe un artículo sobre energía renovable."
Este prompt carece de restricciones específicas, lo que potencialmente resulta en contenido demasiado amplio o desalineado con las necesidades.
Prompt Eficaz con Restricciones Claras:
"Escribe un artículo sobre energía renovable con estas restricciones específicas:
- Alcance del Contenido:
- Longitud máxima: 1,200 palabras
- Enfócate solo en energía solar y eólica
- Excluye especificaciones técnicas y detalles de ingeniería
- Incluye solo estadísticas verificadas de los últimos 5 años
- Nivel Técnico:
- Escribe para una audiencia general sin conocimientos técnicos
- Define cualquier término específico de la industria
- Usa analogías para explicar conceptos complejos
- Evita jerga de ingeniería y fórmulas matemáticas
- Enfoque Geográfico:
- Limita los ejemplos a implementaciones en Norteamérica
- Incluye solo USD para referencias de costos
- Haz referencia a códigos y regulaciones de construcción locales
- Céntrate en aplicaciones residenciales
- Tono y Estilo:
- Mantén un tono optimista pero realista
- Usa voz activa en todo el texto
- Incluye historias de éxito del mundo real
- Termina con recomendaciones prácticas
Esta versión mejorada define claramente límites que:
- Establecen parámetros específicos de contenido
- Fijan el nivel técnico apropiado
- Definen la relevancia geográfica
- Especifican requisitos de estilo de escritura
Proporcionar estas restricciones detalladas asegura que la respuesta estará precisamente adaptada a tus necesidades mientras evita contenido irrelevante o fuera de alcance.
5.1.2 Establecimiento de Contexto y Rol
El uso de un mensaje de sistema junto con tu prompt es una técnica poderosa que puede mejorar dramáticamente la relevancia y el tono de la respuesta. Los mensajes de sistema actúan como una capa fundamental de instrucción que moldea cómo el asistente de IA interpreta y responde a los prompts subsiguientes. Así como un director proporciona a los actores sus antecedentes de personaje antes de filmar, los mensajes de sistema proporcionan a la IA su contexto y rol esencial. Esta configuración fundamental determina cómo la IA abordará cada interacción subsiguiente.
Los mensajes de sistema cumplen múltiples funciones cruciales que moldean fundamentalmente cómo opera un asistente de IA:
- Establecen el rol del asistente (por ejemplo, "Eres un matemático experto") - Esto define el nivel de experiencia y la perspectiva de la IA, similar a establecer los antecedentes de un personaje en una obra. Por ejemplo, cuando se establece como matemático, la IA abordará los problemas rigurosamente, usará terminología apropiada y formulará explicaciones a través de una lente matemática. Este establecimiento de rol asegura que las respuestas mantengan experiencia y autoridad consistente en el campo designado.
- Definen parámetros de comportamiento (por ejemplo, "Proporciona respuestas concisas y técnicas") - Esto moldea no solo lo que dice la IA, sino cómo lo dice, controlando factores como la verbosidad, formalidad y profundidad técnica. Estos parámetros pueden instruir a la IA para ser más casual o formal, proporcionar explicaciones detalladas o resúmenes breves, o ajustar su complejidad de lenguaje según la audiencia. Por ejemplo, el mismo concepto podría explicarse de manera diferente a un niño versus un profesional en el campo.
- Establecen límites de conocimiento (por ejemplo, "Céntrate solo en investigación posterior a 2020") - Esto ayuda a asegurar que las respuestas se mantengan dentro de límites de información relevantes y actuales, evitando información desactualizada o irrelevante. Los límites de conocimiento pueden ser temporales (enfocándose en períodos específicos), geográficos (limitándose a ciertas regiones o países), o temáticos (restringiéndose a áreas temáticas o metodologías específicas). Esto es particularmente importante cuando se trata de campos que evolucionan rápidamente donde la información más antigua podría estar obsoleta o cuando se requiere el cumplimiento de estándares particulares.
Al elaborar cuidadosamente estos mensajes de sistema, puedes asegurar que las respuestas del asistente estén consistentemente alineadas con tus necesidades específicas, mantengan el nivel apropiado de experiencia y comuniquen en el tono y estilo deseados.
Piensa en ello como programar la personalidad y el marco de conocimiento de la IA - cada interacción subsiguiente será filtrada a través de esta lente. Esto es particularmente valioso cuando se construyen aplicaciones que requieren patrones de interacción consistentes o dominios de conocimiento especializados, ya que mantiene la coherencia a través de múltiples intercambios y asegura que los usuarios reciban respuestas apropiadamente adaptadas en todo momento.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
import json
from typing import Dict, List
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def create_chat_completion(
system_message: str,
user_message: str,
model: str = "gpt-4",
temperature: float = 0.6,
max_tokens: int = 150
) -> Dict:
"""
Create a chat completion using the OpenAI API.
Args:
system_message (str): The system message that sets the context
user_message (str): The user's input message
model (str): The GPT model to use
temperature (float): Controls randomness (0.0-1.0)
max_tokens (int): Maximum tokens in the response
Returns:
Dict: The API response
"""
try:
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message}
],
max_tokens=max_tokens,
temperature=temperature
)
return response
except Exception as e:
print(f"Error occurred: {str(e)}")
return None
# Example usage
system_msg = """You are a friendly and knowledgeable programming tutor.
Focus on providing clear, concise explanations with examples."""
user_msg = "Can you explain the difference between mutable and immutable data types in Python?"
# Get the response
response = create_chat_completion(system_msg, user_msg)
# Handle the response
if response:
answer = response["choices"][0]["message"]["content"]
print("AI Tutor's Response:")
print("-" * 50)
print(answer)
else:
print("Failed to get response from API")
Desglose del Código:
- Importaciones y Configuración:
- Se agregaron sugerencias de tipo con el módulo
typing
para mejorar la documentación del código - Se organizaron las importaciones por biblioteca estándar y paquetes de terceros
- Se agregaron sugerencias de tipo con el módulo
- Definición de Función:
- Se creó una función reutilizable
create_chat_completion
con documentación adecuada - Se agregaron sugerencias de tipo para parámetros y valor de retorno
- Se incluyó manejo de errores con bloque try-except
- Se creó una función reutilizable
- Parámetros:
- Se hicieron configurables el modelo, temperatura y max_tokens con valores predeterminados
- Se separaron los mensajes del sistema y usuario para mayor claridad
- Manejo de Errores:
- Se agregó captura y reporte básico de errores
- Incluye manejo elegante de fallos
- Formato de Salida:
- Se agregó separación visual clara de la respuesta
- Se mejoró la legibilidad con impresión estructurada
En este ejemplo, el mensaje del sistema configura al asistente como un tutor de programación, influyendo así en el estilo y detalle de la respuesta.
5.1.3 Proporcionando Ejemplos e Instrucciones Dentro del Prompt
Incluir ejemplos e instrucciones adicionales dentro de tu prompt es una técnica poderosa que puede mejorar significativamente la calidad y precisión de las respuestas de la IA. Este enfoque, a menudo llamado "aprendizaje con pocos ejemplos" o "aprendizaje por demostración", ayuda a la IA a entender tus expectativas a través de demostraciones concretas. Cuando proporcionas ejemplos específicos, creas una plantilla clara que muestra a la IA exactamente cómo quieres que la información sea estructurada y presentada. Esta precisión es particularmente valiosa cuando se trata de solicitudes complejas o matizadas donde las instrucciones abstractas por sí solas podrían ser insuficientes.
Este enfoque cumple múltiples propósitos y ofrece varios beneficios clave:
- Ambigüedad Reducida
- Los ejemplos sirven como demostraciones prácticas que minimizan la malinterpretación
- Las plantillas visuales ayudan a establecer patrones claros para que la IA siga
- Los ejemplos concretos conectan la brecha entre conceptos abstractos y el resultado deseado
- Aprendizaje Mejorado
- La IA puede hacer coincidencias de patrones contra los ejemplos proporcionados
- Múltiples ejemplos ayudan a demostrar variaciones y rangos aceptables
- Los contextos del mundo real ayudan a fundamentar la comprensión de la IA
Los ejemplos actúan como demostraciones prácticas que reducen la ambigüedad y la mala comunicación. En lugar de depender únicamente de instrucciones abstractas, la IA puede ver precisamente cómo luce el éxito. Este enfoque de aprendizaje visual es similar a cómo los humanos a menudo aprenden mejor a través de la demostración en lugar de la instrucción pura. Las instrucciones adicionales dentro del prompt pueden establecer parámetros específicos para el tono, formato, longitud o complejidad - actuando como guías que mantienen la respuesta alineada con tus expectativas.
La efectividad de los ejemplos puede mejorarse aún más mediante una presentación estratégica:
- Consistencia de Formato
- Usar formato consistente en todos los ejemplos
- Resaltar elementos clave que deben replicarse
- Mostrar estructura y organización clara
Por ejemplo, si estás solicitando una descripción de producto, podrías incluir un ejemplo que muestre el estilo de escritura deseado, los elementos clave a incluir y el formato preferido. Este ejemplo podría demostrar características específicas como viñetas, especificaciones técnicas o declaraciones de beneficios.
El modelo de IA puede entonces usar este punto de referencia integral para generar contenido similar que coincida precisamente con tus necesidades. Este enfoque es particularmente efectivo cuando necesitas mantener una voz de marca consistente, precisión técnica o convenciones de formato específicas a través de múltiples resultados.
Ejemplo:
import openai
import os
from dotenv import load_dotenv
from typing import Dict, Optional
# Load environment variables
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def send_thank_you_email(
customer_name: str,
order_number: str,
tracking_link: str,
temperature: float = 0.5
) -> Optional[str]:
"""
Generate a personalized thank you email for a customer's purchase.
Args:
customer_name (str): The customer's name
order_number (str): The order reference number
tracking_link (str): The order tracking URL
temperature (float): Controls response randomness (0.0-1.0)
Returns:
Optional[str]: Generated email text or None if generation fails
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{
"role": "system",
"content": "You are an expert writing assistant specializing in warm, professional customer communications."
},
{
"role": "user",
"content": f"""Generate a thank you email with these requirements:
- Use customer name: {customer_name}
- Include order number: {order_number}
- Include tracking link: {tracking_link}
- Keep tone warm and professional
- Maximum length: 4 sentences
Example format:
Dear [Name],
Thank you for your purchase! Your order #[Number] is on its way.
You can track your package here: [Link]
We appreciate your business!"""
}
],
max_tokens=200,
temperature=temperature
)
return response["choices"][0]["message"]["content"]
except Exception as e:
print(f"Error generating email: {str(e)}")
return None
# Example usage
def main():
# Test parameters
customer = "Maria Garcia"
order = "ORD-12345"
tracking = "https://tracking.example.com/ORD-12345"
# Generate email
email_text = send_thank_you_email(customer, order, tracking)
if email_text:
print("Generated Email:")
print("-" * 50)
print(email_text)
else:
print("Failed to generate email")
if __name__ == "__main__":
main()
Desglose del Código:
- Importaciones y Configuración
- Utiliza sugerencias de tipo para mejorar la documentación del código
- Incluye manejo de variables de entorno para la seguridad de la clave API
- Organiza las importaciones de manera lógica
- Estructura de la Función Principal
- Crea una función dedicada para la generación de correos
- Utiliza sugerencias de tipo para parámetros y valor de retorno
- Implementa un manejo adecuado de errores
- Devuelve Optional[str] para manejar posibles fallos
- Parámetros y Configuración
- Toma detalles específicos del cliente como parámetros
- Incluye configuración personalizable de temperatura
- Utiliza f-strings para un formato de cadenas limpio
- Integración de API
- Mensajes estructurados del sistema y usuario
- Requisitos claros de formato en el prompt
- Plantilla de ejemplo incluida para consistencia
- Manejo de Errores y Pruebas
- Implementa bloque try-except para llamadas a la API
- Incluye ejemplo de uso en la función main()
- Proporciona mensajes de error claros
Aquí, el prompt incluye un formato de ejemplo, lo que ayuda al modelo a entender exactamente qué tipo de correo esperas.
5.1.4 Refinamiento Iterativo
La ingeniería de prompts es un proceso iterativo que requiere paciencia, experimentación y atención minuciosa al detalle. Como un escultor refinando su obra, comienzas con un borrador básico del prompt y gradualmente lo moldeas hasta conseguir algo más preciso y efectivo. Este proceso típicamente involucra múltiples rondas de pruebas y refinamiento, donde cada iteración te acerca más al resultado deseado.
El enfoque iterativo es un método sistemático que sigue estos pasos esenciales:
- Desarrollo Inicial
- Comienza con un prompt básico que delinee claramente tus requisitos principales - esto significa identificar los elementos clave que necesitas que la IA aborde
- Mantenlo simple pero lo suficientemente preciso para comunicar tu intención básica, evitando complejidad innecesaria que podría confundir al modelo
- Enfócate en establecer una base clara que pueda ser desarrollada en iteraciones posteriores
- Pruebas y Análisis
- Ejecuta tu prompt múltiples veces con diferentes entradas para entender su consistencia y fiabilidad en varios escenarios
- Documenta tanto las salidas exitosas como las no exitosas, prestando especial atención a casos límite y respuestas inesperadas
- Identifica patrones en las respuestas que necesiten mejora, como errores consistentes, malentendidos o desviaciones de los resultados deseados
- Crea una forma sistemática de evaluar la calidad de las respuestas según tus criterios específicos
- Refinamiento
- Agrega detalles específicos para abordar cualquier brecha o malentendido descubierto durante las pruebas, siendo preciso sobre lo que necesita cambiar
- Incluye ejemplos si la interpretación del modelo no coincide con tu intención, mostrando exactamente qué tipo de salida estás buscando
- Incorpora restricciones para prevenir salidas no deseadas, como especificar requisitos de formato o agregar condiciones límite
- Considera agregar información específica del contexto que ayude al modelo a entender mejor el dominio o caso de uso
Consejos para un Refinamiento Iterativo Efectivo:
- Revisión Sistemática: Desarrolla un enfoque metódico para analizar las salidas, quizás usando una lista de verificación o sistema de puntuación para evaluar la calidad de las respuestas según tus criterios. Esto podría incluir:
- Crear una rúbrica de evaluación detallada con métricas específicas
- Rastrear errores comunes y sus frecuencias
- Medir cuantitativamente la relevancia y precisión de las respuestas
- Restricciones Estratégicas: Implementa restricciones cuidadosas a través de parámetros como temperatura, tokens máximos o secuencias de parada. Estos pueden ayudar a guiar al modelo hacia salidas más precisas y controladas. Considera:
- Usar temperaturas bajas (0.1-0.3) para respuestas basadas en hechos
- Establecer temperaturas altas (0.7-0.9) para tareas creativas
- Ajustar los tokens máximos según la longitud deseada de la respuesta
- Pruebas Exhaustivas: Realiza pruebas exhaustivas en varios escenarios y casos límite. Esto ayuda a asegurar que tu prompt sea robusto y pueda manejar diferentes tipos de entradas efectivamente. Los aspectos importantes incluyen:
- Probar con datos y formatos de entrada diversos
- Validar respuestas en diferentes contextos
- Verificar la consistencia en escenarios desafiantes
Aquí hay un ejemplo práctico de refinamiento iterativo en acción:
Prompt Inicial (Versión 1):
messages=[{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Generate a product description for a coffee maker."
}]
Respuesta Inicial:
Esta cafetera prepara un café delicioso. Tiene múltiples configuraciones y es fácil de usar. La máquina viene con garantía y está fabricada con materiales duraderos.
Análisis: La respuesta es demasiado genérica, carece de características específicas y no logra captar la atención del lector.
Prompt Refinado (Versión 2):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in kitchen appliances."
},
{
"role": "user",
"content": "Write a product description for a premium coffee maker. Include:
- Key technical specifications
- Main benefits
- Target audience
Keep the tone professional but engaging."
}]
Segunda Respuesta:
La Cafetera XP5000 ofrece café de calidad barista con su sistema de presión de 15 bares y control preciso de temperatura. Perfecta para los entusiastas del café, esta máquina cuenta con un molinillo incorporado y ajustes programables. El depósito de agua de 1.8L y el diseño de doble salida permiten preparar dos tazas simultáneamente.
Análisis: Mejor, pero podría tener más atractivo emocional y un formato más estructurado.
Prompt Final (Versión 3):
messages=[{
"role": "system",
"content": "You are a professional product copywriter specializing in luxury kitchen appliances. Write in a persuasive, premium style that combines technical expertise with emotional appeal."
},
{
"role": "user",
"content": '''Write a product description for a premium coffee maker using this structure:
Opening: Emotional hook about perfect coffee
Features: 3-4 key technical specifications with benefits
Practical Use: Daily usage scenario
Target: Ideal user profile
Example Format:
[Emotional Hook]
Technical Specs:
• [Spec 1]: [Benefit]
• [Spec 2]: [Benefit]
[Usage Scenario]
[Target Customer]
Keep it under 150 words.'''
}]
Respuesta Final:
Transforme su ritual matutino en una experiencia de calidad de café con la Cafetera XP5000.Especificaciones Técnicas:
• Sistema italiano de presión de 15 bares: Extrae el máximo sabor y una crema perfecta
• Control de temperatura PrecisionPro: Mantiene la temperatura óptima de preparación de 93°C
• Molinillo de muelas cerámico integrado: Preserva los aceites aromáticos para un sabor superior
• Depósito de doble zona de 1.8L: Sirve múltiples tazas manteniendo la frescura del aguaYa sea que tenga prisa para ir al trabajo o esté disfrutando de un domingo tranquilo, el temporizador programable y la pantalla táctil intuitiva aseguran que su taza perfecta esté lista cuando lo necesite.Diseñada para entusiastas del café exigentes que aprecian tanto la excelencia técnica como la belleza estética en sus electrodomésticos de cocina.
Análisis Final: Esta versión combina exitosamente detalles técnicos con atractivo emocional, utiliza un formato claro y se dirige directamente al público objetivo. El proceso iterativo ayudó a refinar el prompt para generar contenido más estructurado, detallado y atractivo.
Cada iteración se construyó sobre la versión anterior mediante:
- La adición de un contexto de sistema más específico para guiar el rol y tono de la IA
- La inclusión de requisitos estructurales claros y ejemplos de formato
- El equilibrio entre especificaciones técnicas y atractivo emocional
- La incorporación de criterios específicos de evaluación
5.1.5 Reflexiones Finales sobre la Creación de Prompts Efectivos
La clave para una ingeniería de prompts efectiva reside en tres pilares fundamentales: claridad, contexto y experimentación. Exploremos cada uno de estos en detalle:
La claridad se trata de una comunicación precisa con el modelo de IA. Esto significa usar lenguaje inequívoco, formato estructurado e instrucciones específicas que no dejen espacio para malinterpretaciones. Cada palabra en tu prompt debe tener un propósito.
El contexto proporciona el trasfondo y marco necesarios para que el modelo comprenda tus requisitos. Esto incluye establecer mensajes de sistema apropiados que definan el rol de la IA, proporcionar ejemplos relevantes que demuestren las salidas deseadas y establecer cualquier conocimiento específico del dominio necesario para la tarea.
La experimentación implica pruebas sistemáticas y refinamiento de tus prompts. Esto significa probar diferentes enfoques, analizar los resultados y realizar mejoras incrementales basadas en lo que funciona mejor.
Al combinar estos elementos - proporcionar instrucciones claras, establecer un contexto adecuado con mensajes de sistema, incluir ejemplos ilustrativos y refinar iterativamente tu entrada - desbloquearás todo el potencial de los modelos de lenguaje de OpenAI. Estas estrategias trabajan juntas para asegurar que el modelo no solo entienda tu intención, sino que pueda producir consistentemente respuestas de alta calidad y específicas que cumplan con tus necesidades específicas.
A medida que ganes experiencia con la ingeniería de prompts, desarrollarás una comprensión intuitiva de cómo ajustes sutiles pueden mejorar dramáticamente las salidas. Pequeños cambios en la redacción, estructura o contexto pueden llevar a resultados significativamente diferentes. Este proceso de aprendizaje es acumulativo - cada experimento te enseña algo nuevo sobre cómo el modelo interpreta y responde a diferentes tipos de entradas. Con práctica continua y atención al detalle, la creación de prompts efectivos se convertirá en una parte natural de tu flujo de trabajo, permitiéndote construir aplicaciones cada vez más sofisticadas y eficientes que aprovechen las capacidades de la IA al máximo.