📚 CLASE: Creación de plantillas de prompts en LangChain
━━━━━━━━━━━━━━━━━━
🎯 IDEA PRINCIPAL
Las plantillas de prompts permiten construir instrucciones reutilizables para modelos de IA, sustituyendo valores variables según cada solicitud.
Con LangChain puedes separar las instrucciones de la lógica de tu aplicación, mantener respuestas más consistentes y conectar los prompts con modelos, parsers y otros componentes.
━━━━━━━━━━━━━━━━━━
⚡ RESUMEN ULTRA RÁPIDO
🔵 PromptTemplate construye prompts de texto a partir de variables dinámicas.
🔵 ChatPromptTemplate organiza mensajes con roles como system y human.
🟢 Las variables se escriben entre llaves, por ejemplo {tema} o {pregunta}.
🟡 invoke() recibe los valores y genera el prompt listo para enviar al modelo.
🟣 Las plantillas reutilizables facilitan mantener, probar y modificar instrucciones sin duplicar código.
━━━━━━━━━━━━━━━━━━
🔑 LO IMPORTANTE
🔵 PromptTemplate.from_template() crea una plantilla sencilla a partir de un texto.
🔵 ChatPromptTemplate.from_messages() permite definir una secuencia de mensajes con diferentes roles.
🟡 Las variables de entrada se detectan a partir de los marcadores presentes en la plantilla.
🟢 Utiliza partial() para completar anticipadamente variables que no necesitas cambiar en cada solicitud.
🟡 MessagesPlaceholder permite insertar el historial de conversación en una plantilla de chat.
🔴 Si falta una variable obligatoria, el formato del prompt puede fallar durante la ejecución.
🔴 No confundas una plantilla con el modelo: la plantilla prepara las instrucciones, pero no genera la respuesta por sí sola.
🔴 Evita aceptar plantillas Jinja2 de fuentes no confiables; para entradas de usuarios, prefiere variables explícitas y formatos sencillos.
━━━━━━━━━━━━━━━━━━
🧩 MODELO MENTAL
🔵 Plantilla + variables → Prompt final → Modelo → Respuesta.
🟢 Define una instrucción que puedas reutilizar.
🟢 Identifica qué partes deben cambiar en cada ejecución.
🟢 Proporciona los valores requeridos.
🟢 Envía el resultado al modelo y evalúa la respuesta.
━━━━━━━━━━━━━━━━━━
🚀 ACCIONES PARA HOY
🟢 Instala LangChain Core en tu entorno virtual:
pip install -U langchain-core
🟢 Crea un archivo Python e importa la clase:
from langchain_core.prompts import ChatPromptTemplate
🟢 Construye una plantilla para explicar conceptos de programación:
prompt = ChatPromptTemplate.from_messages([("system", "Eres un tutor de Python para principiantes."), ("human", "Explícame {concepto} con un ejemplo práctico.")])
🟢 Ejecuta la plantilla con una variable:
resultado = prompt.invoke({"concepto": "funciones"})
🟢 Inspecciona los mensajes generados:
print(resultado.messages)
🟢 Cambia el valor de concepto por «clases», «funciones» y «API» sin modificar la plantilla.
🟢 Prueba una entrada sin la variable requerida y observa el error.
🟢 Cuando funcione, conecta la plantilla a un modelo de chat mediante una cadena como prompt | modelo.
━━━━━━━━━━━━━━━━━━
🟣 VENTAJA PROFESIONAL
🟣 Aporte experto: organiza los prompts por responsabilidad, por ejemplo, clasificación, extracción de datos o generación de respuestas.
🟣 Centraliza las instrucciones para corregir el comportamiento del asistente sin buscar textos duplicados en todo el proyecto.
🟣 En tu aplicación financiera, reutiliza una plantilla para clasificar descripciones de gastos mediante variables como {descripcion} y {moneda}.
🟣 Crea pruebas con entradas normales, ambiguas y vacías para verificar que la plantilla genera el contexto esperado.
🟣 Mantén las reglas de negocio y las validaciones fuera del prompt: las instrucciones de IA no sustituyen las comprobaciones del código.
━━━━━━━━━━━━━━━━━━
📝 CIERRE
Un principiante escribe un prompt distinto para cada petición; un profesional crea plantillas reutilizables, controla sus variables y prueba sus resultados.
🟢 Reto: construye una plantilla que explique cualquier concepto de Python con una definición breve, un ejemplo y un ejercicio práctico. Después, reutilízala con cinco conceptos diferentes.