--- layout: default --- # Prompt Templates
**ChatPromptTemplate** permite reutilizar prompts con variables dinámicas y la notación abreviada de roles
```typescript import { ChatPromptTemplate } from "@langchain/core/prompts"; const template = ChatPromptTemplate.fromMessages([ ["system", "Eres un experto en {topic}"], // ← shorthand de SystemMessage ["human", "{question}"] // ← shorthand de HumanMessage ]); const prompt = await template.invoke({ topic: "JavaScript", question: "¿Qué es async/await?" }); const response = await model.invoke(prompt); ```
💡 Los templates son útiles para reutilización, testing y separar prompts de la lógica. Pero para casos simples, puedes usar mensajes directamente.