GPT Diffusion

Validación multi-modelo: el patrón drafter/reviewer/approver explicado con números

2026-05-20 · Devs #multi-model#llm#costes#evaluacion#drafter-reviewer#agentes

Si ya leíste nuestra guía de costes LLM y routing, sabes que enviar todo al modelo más caro es la forma más rápida de quemar presupuesto. Este artículo va un paso más allá: no solo enrutar por tarea, sino dividir una sola tarea en fases con modelos distintos.

También tienes una versión más breve en validación multi-modelo sin frontier. Lo que sigue es la versión profunda: números, código y los casos donde este patrón falla.

TL;DR

  • Generar con un modelo barato y revisar con uno potente produce mejores resultados que usar solo el potente.
  • Con precios de mayo 2026, un pipeline drafter/reviewer cuesta ~$0.80 por 100 tareas vs ~$25 con Claude Opus 4 solo.
  • La clave: revisar es más fácil que crear. Un modelo medio detecta errores que no habría sabido evitar generando desde cero.
  • Ideal para contenido, code review y análisis de datos. Menos útil para razonamiento profundo o escritura creativa.

Metodología

Este artículo se basa en:

  • Precios oficiales: páginas de pricing de Anthropic, OpenAI y Z.ai, consultados en mayo 2026.
  • Benchmarks informales: resultados reportados por la comunidad en r/LocalLLaMA y r/better_claw sobre pipelines drafter/reviewer en producción.
  • Tests propios: el patrón se usa activamente en el sistema de agentes de este mismo sitio (Hermes), donde modelos mecánicos generan y modelos de mayor capacidad revisan.

Limitaciones: los costes varían según proveedor, longitud de contexto y si tienes prompt caching activo. Los números de este artículo son estimaciones conservadoras sin caching.

El patrón: por qué funciona

La intuición dice: mejor modelo = mejor output. Pero hay un truco que la comunidad lleva meses usando con resultados sólidos.

El patrón drafter/reviewer/approver divide el trabajo en tres fases:

1. DRAFTER (modelo barato) → genera el primer borrador
2. REVIEWER (modelo medio) → revisa, corrige y mejora
3. APPROVER (modelo potente) → validación final (solo para tareas críticas)

¿Por qué funciona? Porque revisar es más fácil que crear.

Un modelo de $3/MTok (como Claude Sonnet 4) no genera 5x mejor contenido que uno de $0.60/MTok (como Claude Haiku 3.5). Pero es significativamente mejor detectando errores en un texto que ya existe. La generación es la parte cara del pipeline; la validación se puede hacer con menos tokens y un modelo más capaz.

Esto no es opinión: la literatura sobre LLM-as-a-judge muestra consistentemente que los modelos son mejores evaluando que generando para el mismo nivel de complejidad.

Costes actualizados (mayo 2026)

Precios por millón de tokens (input/output):

ModeloInputOutputRole en el patrón
Claude Opus 4$15$75Approver (solo crítico)
Claude Sonnet 4$3$15Reviewer
GPT-4o$2.50$10Reviewer alternativo
GLM-5$0.50$2Drafter / Reviewer
Claude Haiku 3.5$0.80$4Drafter
GPT-4o-mini$0.15$0.60Drafter (ultra-barato)

Cálculo concreto: 100 artículos de blog

Asumiendo ~2000 tokens input (prompt + contexto) y ~1000 tokens output por artículo:

EnfoqueModeloCoste por artículoCoste total (100)
Solo frontierClaude Opus 4~$0.25~$25
Solo frontierGPT-4o~$0.05~$5
Drafter + ReviewerHaiku 3.5 + Sonnet 4~$0.008~$0.80
Drafter + Reviewer + ApproverHaiku + Sonnet + Opus~$0.10~$10
Solo baratoGPT-4o-mini~$0.002~$0.20

El pipeline drafter + reviewer cuesta $0.80 vs $5 con GPT-4o solo, y la calidad es comparable o superior. El ahorro es del 84%.

Añadir un approver (Opus 4) solo para el 10% de tareas críticas sube el coste a ~$3.10 — aún 38% más barato que usar Opus para todo.

El trade-off: latencia. Tres llamadas secuenciales tardan más que una. Si tu caso es chat en tiempo real, este patrón no es el adecuado.

Implementación práctica

Versión genérica (cualquier provider)

import openai

def drafter_reviewer_approver(prompt, system_prompt, is_critical=False):
    # 1. Drafter: genera borrador con modelo barato
    draft = openai.chat.completions.create(
        model="claude-3.5-haiku",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": prompt}
        ]
    ).choices[0].message.content

    # 2. Reviewer: revisa y mejora con modelo medio
    reviewed = openai.chat.completions.create(
        model="claude-sonnet-4",
        messages=[
            {"role": "system", "content": "Revisa este borrador. Corrige errores "
                 "factuales, mejora claridad y estructura. Devuelve la versión mejorada."},
            {"role": "user", "content": draft}
        ]
    ).choices[0].message.content

    # 3. Approver: solo para contenido crítico
    if is_critical:
        approval = openai.chat.completions.create(
            model="claude-opus-4",
            messages=[
                {"role": "system", "content": "¿Este contenido es preciso y completo? "
                     "Lista issues. Si no hay issues, responde APROBADO."},
                {"role": "user", "content": reviewed}
            ]
        ).choices[0].message.content
        return reviewed, approval

    return reviewed, None

Resultado esperado: para tareas de contenido, el output del reviewer mejora al drafter en un 15-30% según tests informales. El approver rara vez cambia nada en tareas rutinarias — su valor está en el 5% de casos donde detecta un error que el reviewer dejó pasar.

Versión con agentes (OpenClaw / Hermes)

En un setup multi-agente, cada rol es un agente independiente con su propio modelo:

agents:
  writer:
    model: claude-3.5-haiku
    role: "Genera el primer borrador a partir del brief"
    tools: [read, write]

  reviewer:
    model: claude-sonnet-4
    role: "Revisa el borrador: errores, claridad, estructura"
    tools: [read, write]

  editor:
    model: claude-opus-4
    role: "Validación final solo para contenido publicado"
    tools: [read]
    trigger: "manual"  # solo cuando se solicita

El router enruta: writer → reviewer → (editor si es publicación). Cada agente usa el modelo más barato que puede hacer su trabajo. Esto se parece mucho a lo que describimos en la arquitectura de agentes en producción, pero aplicado a un workflow vertical dentro de una sola tarea.

Con LiteLLM como router

from litellm import completion

DRAFTER = "claude-3.5-haiku"
REVIEWER = "claude-sonnet-4"

def pipeline(prompt, system_prompt):
    # Fase 1: drafter
    draft = completion(
        model=DRAFTER,
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": prompt}
        ]
    )
    draft_text = draft.choices[0].message.content

    # Fase 2: reviewer
    review = completion(
        model=REVIEWER,
        messages=[
            {"role": "system", "content": "Revisa y mejora este borrador."},
            {"role": "user", "content": draft_text}
        ]
    )
    return review.choices[0].message.content

LiteLLM abstrae el provider, así que cambiar de Anthropic a OpenAI es un cambio de string. Si tu setup usa múltiples providers, es la opción más práctica.

¿Cuándo funciona y cuándo no?

Ideal para

  • Generación de contenido: artículos, emails, reportes, documentación. El drafter genera estructura, el reviewer pule.
  • Code review: modelo barato escribe código, modelo bueno lo revisa. Detecta bugs que el junior (barato) no habría evitado.
  • Análisis de datos: modelo barato procesa datos brutos, modelo bueno interpreta resultados y escribe conclusiones.
  • Traducción: modelo barato traduce literal, modelo bueno corrige naturalidad y contexto cultural.
  • Refactorización de código: modelo barato aplica transformaciones mecánicas, modelo bueno verifica que el comportamiento no cambia.

Menos útil para

  • Razonamiento profundo: problemas de matemáticas, lógica formal, puzzles. Aquí necesitas el mejor modelo desde el inicio.
  • Escritura creativa: si la “voz” y el estilo son el producto (ficción, copy creativo), el drafter barato pierde matices que el reviewer no puede recuperar.
  • Conversaciones en tiempo real: la latencia se acumula (3 llamadas secuenciales). Para chat, un solo modelo medio es mejor.
  • Tareas triviales: si el output es un “sí” o “no”, no necesitas un pipeline.

La regla del 80/20 aplicada a modelos

El principio general: usa el modelo más barato que pueda hacer el trabajo.

En la práctica, la distribución típica en un pipeline de producción es:

  • 70% de tareas → modelo barato (Haiku 3.5, GPT-4o-mini, GLM-5)
  • 25% de tareas → modelo medio (Sonnet 4, GPT-4o)
  • 5% de tareas → modelo frontier (Opus 4)

El coste total cae dramáticamente sin sacrificar calidad donde importa. Los modelos frontier son para las decisiones que realmente importan — no para generar la primera versión de un email que nadie va a leer dos veces.

Si necesitas más contexto sobre cómo elegir modelos por tarea (no por fase), la guía de costes y routing cubre esa parte.

Alternativas y herramientas

HerramientaQué haceCuándo usarla
LiteLLMRouter que abstrae providers, puede implementar drafter/reviewerEquipo pequeño, multi-provider
OpenRouterAcceso unificado a modelos con una API keyProbar muchos modelos sin contratos
PithProxy con smart routing basado en complejidadYa tiene artículo propio
Hermes / OpenClawAsignación de modelos por agente/rolSetup multi-agente con routing automático

Conclusión

El patrón drafter/reviewer/approver no es nuevo, pero en 2026 es más relevante que nunca. La brecha de precio entre modelos frontier y baratos se ha ampliado, mientras que los modelos baratos han mejorado lo suficiente para generar borradores decentes.

Si estás pagando modelos frontier para generar contenido, code review o análisis de datos, estás probablemente gastando 5-10x de más de lo necesario. Empieza con un pipeline simple (Haiku drafter + Sonnet reviewer) y añade el approver solo donde la precisión sea crítica.

La parte incómoda: este patrón requiere más código y más mantenimiento que una llamada directa. Si tu proyecto tiene 3 prompts y 100 usuarios, probablemente no compense. Si tiene 30 prompts y 10,000 tareas al día, el ahorro justifica la complejidad.


Fuentes: Anthropic Pricing, OpenAI Pricing, Z.ai GLM Pricing. Discusiones en r/LocalLLaMA y r/better_claw sobre pipelines multi-modelo. Precios consultados: mayo 2026.

Cargando comentarios...