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.
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:
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.
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.
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:
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:
Un buen mensaje system mejora radicalmente el output.
Demasiadas variables hacen el prompt difícil de mantener.
Guarda versiones en archivos .txt o .jinja cuando el prompt crece mucho.
Evita variabilidad innecesaria.
Desde mi experiencia, estos son los fallos más frecuentes:
input_variables
Si evitas estos errores, ya estás por encima del 80% de los desarrolladores que empiezan con LangChain. 😉
Usa PromptTemplate cuando:
No lo necesitas cuando:
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
Y sobre todo… experimenta. En el mundo de los LLM, la práctica es lo que realmente marca la diferencia. 🚀
Jorge García
Fullstack developer