En sistemas que usan LLM, hay 15 pasos entre "funciona" y "confiable en producción". La automatización de marketing genera markdown con Claude API, la segmentación de viajes de clientes usa GPT — pero cuando cambias el prompt, ¿cómo garantizas que no creaste una regresión? En ingeniería de software, versionado, cobertura de tests y CI/CD son estándar; en operaciones LLM sin esa disciplina, cada deployment es una apuesta.

Herramientas como Promptfoo y LangSmith proporcionan esa disciplina: versionado de prompts, evaluación determinística, A/B testing, tracking de métricas. Este artículo muestra cómo construir control de calidad en un sistema LLM production — a nivel de infraestructura, no solo código.

La Ilusión de que el Prompt No Es Software

La mayoría de los equipos tratan el prompt como un "archivo de configuración" — editor en UI, documentación en Notion, texto hardcoded en un nodo de workflow de n8n. En realidad, el prompt es una especificación ejecutable que define el comportamiento del sistema. Pero no hay versionado, no hay diff, no hay rollback.

Un cambio de commit con mensaje "fix typo" puede alterar el tono del output del modelo y degradar las métricas. Especialmente en escenarios de salida estructurada (JSON schema, frontmatter markdown, query SQL), una sola palabra rompiendo el formato causa errores en cadena. Ejemplo: escribir OUTPUT FORMAT: JSON en lugar de OUTPUT FORMAT: Valid JSON hace que el modelo a veces agregue párrafos de explicación — falla en el parser downstream, alertas se disparan, 3 horas de debugging.

La disciplina de versionado debe responder estas preguntas:

  • ¿Qué versión del prompt está en producción ahora?
  • ¿Cuál es la diferencia de rendimiento entre la versión de hace 2 semanas y la actual?
  • ¿Qué variante en el A/B test aumentó la conversión un 8%?

Si no puedes responder estas preguntas, no estás haciendo "operaciones de IA" — estás ejecutando experimentos manuales.

Pipeline de Evaluación: Tres Capas para Medir el Output

Evaluar output de LLM parece subjetivo, pero en sistemas production es posible construir métricas determinísticas. La evaluación funciona en tres capas: sintaxis, semántica, resultado de negocio.

Capa de sintaxis — conformidad de formato:

  • ¿Se parsea el JSON?
  • ¿Es válido el frontmatter markdown?
  • ¿Están presentes los campos esperados?

En Promptfoo se controla con assertions javascript:

assert: [
  {
    type: "javascript",
    value: "JSON.parse(output).title.length <= 60"
  },
  {
    type: "is-json",
    value: true
  }
]

Capa de semántica — calidad del contenido:

  • ¿La respuesta es relevante al tema? (similitud de embeddings, cosine distance > 0.85)
  • ¿Contiene palabras prohibidas? (regex, token filtering)
  • ¿Es el tono correcto? (modelo clasificador, sentiment score)

Evaluador personalizado en LangSmith:

from langsmith import evaluate

def check_brand_compliance(run, example):
    forbidden = ["experto", "líder", "revolucionario"]
    output = run.outputs["text"].lower()
    violations = [w for w in forbidden if w in output]
    return {"score": 0 if violations else 1, "violations": violations}

evaluate(
    dataset_name="marketing_blog_posts",
    evaluators=[check_brand_compliance]
)

Capa de resultado de negocio — impacto real:

  • ¿Cambió el CTR?
  • ¿Bajó la conversión?
  • ¿Subió la tasa de rebote?

Esta capa se conecta con telemetría de producción — en un sistema de Primera Parte: Datos y Arquitectura de Medición, la versión del prompt se agrega como metadata al tracking de eventos, se une en BigQuery, y un modelo dbt calcula el conversion rate de cada versión.

Promptfoo: Construir un Suite de Tests Determinístico

Promptfoo es un framework de evaluación que corre localmente, basado en YAML. El objetivo: validar cada cambio de prompt con una suite de regresión antes de desplegar.

Configuración simple:

prompts:
  - file://prompts/marketing_blog_v1.md
  - file://prompts/marketing_blog_v2.md

providers:
  - anthropic:messages:claude-3-5-sonnet-20241022

tests:
  - vars:
      topic: "Server-side GTM"
      category: "tech"
    assert:
      - type: is-json
      - type: javascript
        value: "output.title.length <= 60"
      - type: similar
        value: "arquitectura de tracking server-side"
        threshold: 0.8
      - type: not-contains
        value: "revolucionario"

Con promptfoo eval se prueban todas las variantes, devolviendo una tabla de métricas:

PromptPass RateLatencia PromedioCosto
v192%2.3s$0.012
v298%2.1s$0.014

v2 mejoró el pass rate pero el costo subió 17% — el token count está aumentando, hay que investigar. Sin ver este tradeoff, hubieras desplegado v2 y el presupuesto mensual se habría reventado.

A/B Testing: Comparar Variantes de Prompts en Producción

La suite de evaluación devolvió verde, ahora necesitas tráfico real. El A/B testing en sistemas LLM se configura así:

  1. Ruteo de variantes — selecciona la versión del prompt según el ID de usuario/sesión (split %)
  2. Etiquetado de metadata — agrega prompt_version a cada llamada a API
  3. Tracking de métricas — mantén la información de variante en los eventos downstream
  4. Significancia estadística — cuando haya suficiente muestra (min 385 observaciones por variante, confianza 95%), toma una decisión

Ejemplo en workflow n8n:

// Selección de variante A/B
const userId = $json.user_id;
const variant = (userId % 100 < 50) ? 'v1' : 'v2';
const promptUrl = `https://raw.githubusercontent.com/roibase/prompts/main/${variant}.md`;

// Agrega metadata a la llamada a API
return {
  json: {
    prompt: await fetch(promptUrl).then(r => r.text()),
    metadata: {
      prompt_version: variant,
      experiment_id: 'blog_tone_test_2026_05'
    }
  }
};

Análisis en BigQuery:

SELECT
  metadata.value:prompt_version AS variant,
  COUNT(DISTINCT user_id) AS users,
  AVG(session_duration_sec) AS avg_duration,
  SUM(conversion) / COUNT(*) AS cvr
FROM events
WHERE experiment_id = 'blog_tone_test_2026_05'
  AND event_date >= '2026-05-01'
GROUP BY 1

Resultado: la variante v2 aumentó el CVR de 0.042 a 0.051 (+21%), p-value 0.003 — confianza para llevar a producción.

LangSmith: Observabilidad y Detección de Regresiones a Largo Plazo

Promptfoo es testing local, LangSmith es observabilidad en producción. Cada llamada a LLM queda registrada: input, output, latencia, token count, versión del modelo, versión del prompt.

La ventaja de LangSmith es el tracking de métricas a largo plazo. Un bug en la versión del prompt de hace 3 meses se descubre hoy por feedback — vuelves a la traza, ves el diff input/output, encuentras qué versión era ese día, y haces rollback.

Ejemplo de traza:

{
  "run_id": "abc123",
  "prompt_version": "v2.1",
  "model": "claude-3-5-sonnet-20241022",
  "input": {"topic": "Server-side GTM", "category": "tech"},
  "output": "---\ntitle: \"Server-Side GTM...\"",
  "latency_ms": 2341,
  "tokens": {"input": 1842, "output": 1523},
  "cost_usd": 0.0137,
  "feedback": {"score": 4, "comment": "el título es demasiado largo"}
}

Loop de feedback: cada editor asigna 1-5 puntos a cada blog, LangSmith vincula esos puntajes a las trazas, el reporte semanal alerta "la versión v2.3 bajó el score promedio a 3.2". Rollback inmediato → ves el diff del prompt → identificas el problema → lo arreglas.

Gestión de Datasets: Mantener el Golden Set Bajo Control de Versiones

El corazón del pipeline de evaluación es el golden dataset — pares conocidos de input/output, la referencia del comportamiento esperado. Mantener este dataset en Notion, actualizarlo manualmente en Google Sheets es riesgo de regresión.

El dataset de LangSmith se controla por versión:

from langsmith import Client

client = Client()

dataset = client.create_dataset("marketing_blog_golden_v3")

# Agregar ejemplos golden
examples = [
    {
        "inputs": {"topic": "Server-side GTM", "category": "tech"},
        "outputs": {"title": "Server-Side GTM: Medición Post-Cookie"},
        "metadata": {"expected_h2_count": 5, "expected_word_count": 1500}
    },
    # 50+ ejemplos...
]

for ex in examples:
    client.create_example(**ex, dataset_id=dataset.id)

Antes de cada cambio de prompt, prueba contra este dataset. Si el pass rate baja, no despliegues. Agrega nuevo edge case al dataset (bugs que encuentras en producción) para evitar regresiones.

Tradeoff: Métricas Determinísticas vs Output Creativo

La fortaleza del LLM es ser no-determinístico — mismo input, output diferente. Pero en sistemas production eso es un riesgo: el usuario ve diferente markdown cada vez que recarga, algunos con errores.

Menor temperatura da más determinismo pero output menos creativo. El tradeoff es:

  • Temperatura 0: ideal para eval suite, output monótono en producción
  • Temperatura 0.3-0.5: variedad razonable, aún consistente
  • Temperatura 0.7+: creativo pero sorpresas en producción incluso si la suite pasó

Solución: temperatura 0 en eval, 0.4 en producción, golden set con 5 outputs aceptables por cada input (control de rango).

Otro tradeoff: latencia vs calidad. Prompts más largos dan mejor output pero el costo de input tokens sube, latencia aumenta. En Promptfoo, si la latencia excede 2.5s, disparar alerta — la experiencia del usuario se degrada.

Checklist de Producción: Antes de Desplegar un Sistema LLM

Lista de verificación previa al despliegue:

  • Prompt en repo git, historial de commits limpio
  • Suite de evaluación Promptfoo con pass rate > 95%
  • Golden dataset mín 50 ejemplos
  • Plan de A/B test listo, tamaño de muestra calculado
  • LangSmith tracing habilitado, API key en producción
  • Loop de feedback configurado (puntuación de editores, join en BigQuery)
  • Procedimiento de rollback definido (qué métrica hace que vuelvas atrás automáticamente)
  • Monitoreo de costo — threshold diario de gasto en tokens $X
  • SLA de latencia — p95 < 3s

Sin completar esta lista, decir que ofreces "servicio de IA" es prematuro. Sin versionado, evaluación y observabilidad, cada despliegue de LLM en producción arriesga el rendimiento anterior — eso no es progreso, es caos controlado.


El versionado de prompts es cuestión de disciplina — no para ir más rápido, sino para ser confiable. En tácticas como Generative Engine Optimization, la calidad del output se vincula directamente al resultado de negocio. Sin un pipeline de evaluación, cada despliegue pone en riesgo el rendimiento anterior. Promptfoo proporciona seguridad local, LangSmith visibilidad en producción. Juntos elevan las operaciones LLM al estándar de la ingeniería de software.