Has escrito el mismo prompt de extracción 47 veces. Datos diferentes, misma estructura. Sabes que esto es ineficiente, pero escalar una biblioteca de prompts se siente como una infraestructura de la que nadie habla.
Esto es lo que realmente está sucediendo: estás tratando los prompts como scripts únicos en lugar de componentes. Las plantillas solucionan eso, y son más simples de lo que crees.
Por Qué las Plantillas Superan al Copiar y Pegar Prompts
En el momento en que reutilizas un prompt dos veces, tienes un problema de plantillas. No porque la reutilización sea mala, sino porque la reutilización manual es costosa y falla cuando los modelos se actualizan.
Las plantillas te permiten:
- Versionar un prompt funcional una vez, no 47 veces
- Cambiar el comportamiento del modelo en todas las instancias a la vez
- Probar variaciones contra una línea base sin duplicación manual
- Incorporar compañeros de equipo sin explicar tu filosofía de prompts
- Auditar qué versiones se están ejecutando y dónde
En AlgoVesta, mantenemos plantillas para la extracción de datos de mercado, validación de señales y justificación de operaciones. Cuando Claude lanzó Sonnet 4 en febrero de 2025, actualizamos 3 plantillas. Sin plantillas, habríamos necesitado localizar y actualizar más de 200 instancias de prompts dispersas en scripts de Python.
La Anatomía de una Buena Plantilla
Una plantilla de producción tiene cuatro partes: la directiva, los marcadores de posición de variables, el formato de salida y el manejo de fallos.
{{DIRECTIVE}}
Contexto:
{{DATA}}
Instrucciones:
- {{CONSTRAINT_1}}
- {{CONSTRAINT_2}}
Formato de salida:
{{OUTPUT_SCHEMA}}
Si no puedes completar la tarea, responde con: {{FALLBACK}}
Nota el fallback explícito. Claude a veces se niega a realizar tareas de extracción cuando los datos son ambiguos. Decirle qué devolver en lugar de negarse previene interrupciones en el pipeline.
Ejemplo Real: Plantilla de Extracción de Entidades
Mal enfoque (sin plantilla):
# Esto existe en 3 archivos diferentes, modificado ligeramente cada vez
Extrae todos los nombres de empresas de este texto y devuélvelos como un array JSON.
Texto: {{text}}
Salida: El 60% de las ejecuciones funcionan. A veces Claude devuelve una lista. A veces markdown. A veces se niega porque la instrucción es demasiado vaga.
Plantilla mejorada:
Eres un sistema de extracción de entidades. Tu tarea es identificar todos los nombres de empresas mencionados en el texto proporcionado y devolverlos como un objeto JSON estructurado.
Texto a analizar:
{{INPUT_TEXT}}
Requisitos:
- Incluye solo nombres de empresas explícitamente mencionados, no referencias genéricas (ej. "la startup" no cuenta)
- Devuelve resultados en formato JSON válido
- Si un nombre de empresa aparece varias veces, inclúyelo solo una vez
- Si no se mencionan empresas, devuelve un array vacío
Formato de salida (estricto):
{
"companies": [
{
"name": "string",
"context": "breve extracto donde se menciona" r/> }
] r/>}
Si el texto es demasiado confuso o no contiene referencias a empresas, responde con: {"companies": [], "note": "No se encontraron referencias claras de empresas"}
Esta versión pasa el 94% de las ejecuciones porque:
- Define qué cuenta como una empresa (no referencias genéricas)
- Especifica el formato de salida antes de pedir la salida
- Maneja el caso límite (no se encontraron empresas) explícitamente
- Incluye fragmentos de contexto, haciendo los resultados más verificables
Almacenamiento de Plantillas: Elige tu Nivel de Fricción
Necesitas tres cosas: control de versiones, sustitución de variables y seguimiento de cambios. Cómo implementes eso depende del tamaño de tu equipo.
Solo o equipo pequeño (menos de 5 ingenieros):
Almacena las plantillas en un archivo JSON en tu repositorio.
{
"templates": {
"entity_extraction_v2": {
"created": "2025-02-15",
"model": "claude-sonnet-4",
"prompt": "Eres un sistema de extracción de entidades...",
"variables": ["INPUT_TEXT"],
"output_schema": {...},
"notes": "Actualizado Feb 2025: se añadió campo de contexto a los resultados" r/> } r/> } r/>}
Cárgalo en tiempo de ejecución, sustituye variables, envía a la API. El control de versiones maneja el historial automáticamente.
Equipo más grande o muchos servicios (5+ ingenieros, múltiples productos):
Usa una herramienta de gestión de plantillas. Anthropic Prompt Caching funciona aquí: almacena la plantilla en la caché, cambia variables en tiempo de inferencia. Langchain tiene PromptTemplate. Braintrust y Humanloop ofrecen gestión de plantillas SaaS con análisis integrados.
El costo real no es la herramienta. Es la disciplina de no crear variantes ad-hoc. Cada ingeniero necesita revisar la biblioteca primero.
Variación de Plantillas Sin Dispersión de Plantillas
Te encontrarás necesitando ligeras variaciones: extracción con tono más estricto, extracción para otro idioma, extracción que devuelva campos diferentes.
No crees cinco plantillas. Crea una plantilla con parámetros opcionales.
Eres un sistema de extracción de entidades{{LANGUAGE_SPEC}}.{{TONE}}
Texto a analizar:
{{INPUT_TEXT}}
Extrae {{ENTITY_TYPES}}.
{{OPTIONAL_CONSTRAINT}}
Formato de salida:
{{OUTPUT_SCHEMA}}
Uso:
prompt = template.format(
LANGUAGE_SPEC=" especializado en documentos financieros",
TONE="Sé preciso; las referencias ambiguas deben ser excluidas.",
ENTITY_TYPES=" nombres de empresas, símbolos de cotización y objetivos de adquisición",
OPTIONAL_CONSTRAINT="",
INPUT_TEXT=doc,
OUTPUT_SCHEMA=json_schema
)
Esto previene la multiplicación de plantillas manteniendo las variaciones explícitas.
Qué Hacer Esta Semana
Identifica tus dos prompts de mayor uso. Sácalos ambos. Si son más del 80% similares, mézclalos en una plantilla parametrizada y almacénala en un archivo JSON en la raíz de tu repositorio como prompts.json. Actualiza el código que llama a esos prompts para cargar la plantilla y sustituir variables en lugar de codificar el texto del prompt.
Eso es todo. Acabas de eliminar un futuro punto de mantenimiento y ganaste la capacidad de versionar tus prompts de la misma manera que versionas el código.