Volver a la página principal
martes 24 febrero 2026
2

Cómo usar Prompt Templates en LangChain

En este artículo te voy a explicar, paso a paso y desde mi experiencia personal, cómo usar Prompt Templates en LangChain, con ejemplos prácticos en Python y buenas prácticas que aplico en entornos reales.

¿Qué es un Prompt Template en LangChain?

Un PromptTemplate es básicamente una plantilla reutilizable para generar prompts dinámicos.

En lugar de hacer esto:

prompt = f"Explica qué es {concepto} en términos sencillos"

Con LangChain hacemos esto:

from langchain_core.prompts import PromptTemplate

template = PromptTemplate.from_template(
    "Explica qué es {concepto} en términos sencillos"
)

prompt = template.invoke({"concepto": "inteligencia artificial"})

La diferencia parece pequeña… pero en proyectos grandes es enorme. 🔥

Ventajas principales:

  • Reutilización de prompts
  • Separación entre lógica y texto
  • Mayor mantenibilidad
  • Menos errores en producción
  • Integración directa con cadenas (Chains)

Antes de usar Prompt Templates, necesitas instalar LangChain:

pip install langchain openai

Si usas OpenAI:

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o-mini",
    temperature=0.7
)
Consejo personal: siempre configuro la temperatura dependiendo del caso de uso. Para generación creativa uso 0.7–0.9, para tareas técnicas 0–0.3.

Crear una plantilla simple

from langchain_core.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["tema"],
    template="Escribe un artículo corto sobre {tema}"
)

resultado = prompt.invoke({"tema": "ciberseguridad"})
print(resultado)

Aquí definimos:

  • input_variables: variables dinámicas
  • template: el texto base con placeholders

Sencillo, limpio y reutilizable.

Si trabajas con modelos como GPT-4 o GPT-3.5, lo ideal es usar ChatPromptTemplate.

Yo personalmente lo uso casi siempre porque permite estructurar mejor los roles.

Ejemplo práctico:

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "Eres un experto en programación."),
    ("human", "Explícame qué es {concepto} en términos simples.")
])

formatted_prompt = prompt.invoke({"concepto": "API REST"})

Aquí tenemos:

  • system → define comportamiento
  • human → pregunta del usuario

Este patrón mejora muchísimo la calidad de respuesta. 💡

En versiones recientes de LangChain usamos el operador | para encadenar:

chain = prompt | llm

respuesta = chain.invoke({"concepto": "Machine Learning"})
print(respuesta.content)

Esto es elegante, limpio y modular.

Personalmente, me encanta este enfoque porque hace el código mucho más legible.

Una funcionalidad que me parece increíblemente útil es partial.

Permite fijar variables una sola vez.

prompt = PromptTemplate(
    template="Traduce el siguiente texto al {idioma}: {texto}",
    input_variables=["idioma", "texto"]
)

prompt_es = prompt.partial(idioma="español")

resultado = prompt_es.invoke({"texto": "Hello world"})

Ahora no necesitas pasar idioma cada vez.

En proyectos grandes esto reduce muchísimo el código repetitivo. 🚀

Otra técnica potente es combinar templates con ejemplos.

from langchain_core.prompts import FewShotPromptTemplate
from langchain_core.prompts import PromptTemplate

ejemplos = [
    {"pregunta": "2+2", "respuesta": "4"},
    {"pregunta": "3+5", "respuesta": "8"},
]

ejemplo_prompt = PromptTemplate(
    input_variables=["pregunta", "respuesta"],
    template="Pregunta: {pregunta}\nRespuesta: {respuesta}"
)

few_shot_prompt = FewShotPromptTemplate(
    examples=ejemplos,
    example_prompt=ejemplo_prompt,
    prefix="Resuelve las siguientes operaciones:",
    suffix="Pregunta: {input}\nRespuesta:",
    input_variables=["input"]
)

Este enfoque mejora muchísimo la precisión en tareas estructuradas.

Yo lo uso bastante en clasificación y generación estructurada.

Después de varios proyectos reales, estas son mis recomendaciones:

1️⃣ Sé explícito en el rol del sistema

Un buen mensaje system mejora radicalmente el output.

2️⃣ No abuses de variables

Demasiadas variables hacen el prompt difícil de mantener.

3️⃣ Versiona tus prompts

Guarda versiones en archivos .txt o .jinja cuando el prompt crece mucho.

4️⃣ Prueba con temperatura baja en tareas técnicas

Evita variabilidad innecesaria.

Desde mi experiencia, estos son los fallos más frecuentes:

  • ❌ Olvidar declarar input_variables
  • ❌ Pasar variables con nombre incorrecto
  • ❌ Mezclar PromptTemplate con ChatPromptTemplate sin necesidad
  • ❌ No separar rol system y human

Si evitas estos errores, ya estás por encima del 80% de los desarrolladores que empiezan con LangChain. 😉

Usa PromptTemplate cuando:

  • El prompt tiene variables dinámicas
  • Vas a reutilizarlo
  • Estás creando chains complejas

No lo necesitas cuando:

  • Estás haciendo una prueba rápida
  • El prompt es estático

Desde que incorporé Prompt Templates en LangChain a mi flujo de trabajo, mi código es mucho más limpio, escalable y profesional.

Si estás desarrollando aplicaciones con LLMs, dominar esta herramienta no es opcional… es fundamental. 🔥

Te recomiendo empezar con ejemplos simples y luego avanzar hacia:

  • ChatPromptTemplate
  • FewShotPromptTemplate
  • Chains complejas
  • Agentes

Y sobre todo… experimenta. En el mundo de los LLM, la práctica es lo que realmente marca la diferencia. 🚀

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer