Saltar al contenido
← Cuaderno

Arquitectura de Agentes & Optimización

Decision Models: Desacoplando la Decisión de la Generación en Flotas de Agentes de IA

Por qué usar un LLM de 70B para enrutar tareas o elegir herramientas destruye tu latencia y costes, y cómo resolverlo con modelos decisores de 2B a sub-30ms y $0.04/M.

Fecha
9 oct 2026
Lectura
8 min
Resultado
Latencia Sub-30ms • 98% Ahorro de Tokens • Cero Fallos de Parsing • Coste $0 Local

En el ecosistema de automatización y agentes autónomos de 2026, un patrón de diseño habitual se ha convertido silenciosamente en el mayor agujero negro de presupuesto y latencia de los equipos de ingeniería: utilizar grandes modelos de lenguaje generativos (LLMs) como simples enrutadores condicionales.

Cuando un agente recibe una petición de un usuario o un webhook de entrada, el sistema necesita tomar decisiones discretas:

  • ¿Esta consulta pertenece a soporte técnico, facturación o preventa?
  • ¿Debe ejecutarse la herramienta MCP query_database, fetch_api o human_escalation?
  • ¿Cumple el output del agente los guardrails de seguridad antes de enviarse al cliente?

En la mayoría de implementaciones, la solución estándar consiste en invocar a un modelo frontera de razonamiento (Claude 3.5 Sonnet, GPT-4o o un modelo open-weights de 70B) con un prompt de 800 tokens que termina con una instrucción del tipo: “Elige entre [A, B, C] y responde únicamente en formato JSON con la clave ‘route’”.

Este enfoque es un error arquitectónico de primer orden. En este artículo de trinchera en YesWeLab (@Yeswelab_OU) analizamos la emergencia de los Decision Models (Modelos Decisores), cómo transforman radicalmente la eficiencia de nuestros agentes y cómo implementar la estrategia Dual Track para operar a escala con coste mínimo o nulo.


1. La Anatomía del Fallo: El Coste de Quemar Tokens Generativos

Tratar un problema de clasificación finita como una tarea de generación de texto libre introduce cuatro penalizaciones severas en cualquier infraestructura de producción:

[ FLUJO TRADICIONAL CON LLM GENERATIVO ]
Entrada ──► Prompt Enorme (800 tok) ──► LLM 70B (Autoregresivo) ──► Genera JSON ──► JSON.parse()
                                        • Latencia: 1.200 - 2.500 ms
                                        • Coste: $3,00 - $15,00 / 1M tokens
                                        • Riesgo: JSON truncado, claves erróneas, alucinación
  1. Latencia Inaceptable (Overhead Autorregresivo): Un LLM generativo produce texto token a token mediante muestreo probabilístico secuencial. Para devolver un simple "route": "billing", el modelo debe procesar el contexto, activar capas masivas de atención y generar decenas de tokens de envoltorio JSON. Esto añade entre 800 ms y 2.500 ms en cada bifurcación del pipeline.
  2. Despilfarro Económico: Pagar entre $2,50 y $15,00 por millón de tokens en un modelo frontier para evaluar una decisión que un árbol de clasificación o un clasificador lineal podría resolver es insostenible cuando se procesan cientos de miles de eventos al día.
  3. Fragilidad de Parsing: A pesar de los esquemas estructurados (structured outputs), los modelos generativos pueden sufrir fallos de parsing bajo carga, saturación de tokens de salida o inserción de comentarios inesperados que rompen la ejecución del workflow.
  4. Ausencia de Calibración Matemática: Un LLM que responde "billing" no te dice de forma nativa cuán seguro está. La temperatura y el muestreo top-p enmascaran la confianza real del modelo, obligando a realizar llamadas adicionales para estimar incertidumbre.

2. ¿Qué es un Decision Model y Cómo Funciona?

Un Decision Model (Modelo Decisor) es una arquitectura optimizada exclusivamente para proyectar una entrada hacia una distribución de probabilidad sobre un conjunto discreto y prefijado de clases o decisiones.

[ FLUJO CON DECISION MODEL (SUB-30MS) ]
Entrada ──► Embedding / Forward Pass ──► Cabeza Clasificadora / Softmax ──► Probabilidades Calibradas
                                         • Latencia: 15 - 30 ms
                                         • Coste: $0.04 / 1M tokens (o $0 local)
                                         • Resultado: {"billing": 0.94, "tech": 0.04, "sales": 0.02}

A diferencia de los modelos de chat:

  • No genera texto: No hay decodificación autorregresiva token a token. El modelo realiza un único paso hacia adelante (forward pass) a través de los pesos.
  • Salida de Probabilidades Calibradas: En lugar de devolver texto, devuelve un vector de puntuaciones de certeza normalizadas (softmax) para cada una de las opciones disponibles.
  • Evaluación de Confianza: Si la clase predicha tiene una confianza del 95%, el sistema ejecuta la rama inmediatamente. Si la confianza máxima no supera un umbral de seguridad (por ejemplo, 65%), el orquestador puede escalar de forma segura la decisión a un modelo frontier más pesado o a un operador humano.

3. La Avalancha de Octubre 2026: El Ecosistema se Estandariza

En los últimos días, los principales actores del sector han consolidado esta arquitectura mediante lanzamientos coordinados de pesos abiertos y APIs dedicadas:

Proveedor / ModeloArquitecturaLatencia TípicaCoste por 1M TokensLicencia / Despliegue
AWS Strands Decider 2B2.1B parámetros especializados18 – 28 ms (GPU local)$0,00 (Homelab/vLLM)Pesos Abiertos (Apache 2.0)
Cloudflare Clef / Clef-flashModelo de decisión compacto25 – 45 ms (Edge)Nivel Workers AI ServerlessApache 2.0 / Hugging Face
Perplexity pplx-decider-v1-27bFine-tune Qwen 27B calibrado60 – 90 ms$0,04 / 1M input tokensAPI Comercial Calibrada
OpenAI Decisions API (Preview)Motor de enrutado discreto70 – 110 msEn tarificación reducidaAPI Cloud Pro/Enterprise

La llegada de Strands Decider 2B por parte del equipo de AWS Strands Agents y de Clef por Cloudflare marca un hito: ya no es necesario recurrir a trucos de prompting o micro-modelos BERT artesanales. Existen pesos de última generación listos para operar como directores de tráfico en cualquier cluster de agentes.


4. Filosofía Dual Track en YesWeLab

En YesWeLab aplicamos siempre nuestro principio rector: “Show, Don’t Sell” a través del marco Dual Track.

                                 [ EVENTO O PETICIÓN ]
                                          │
                    ┌─────────────────────┴─────────────────────┐
                    ▼                                           ▼
      [ TRACK A: DIY / OPEN SOURCE ]               [ TRACK B: FAST-TRACK SAAS ]
   • Modelo: Strands Decider 2B local          • Modelo: Cloudflare Clef (Workers AI)
   • Motor: vLLM / llama.cpp en homelab        • O Perplexity Decisions API ($0.04/M)
   • Latencia: ~22 ms                          • Latencia: ~40 ms global edge
   • Coste: $0 / mes                           • Coste: Céntimos para millones de hits
   • Privacidad: 100% On-Premise               • Cero gestión de infraestructura

Track A (DIY / Open Source / Coste $0)

Para builders, entornos soberanos y homelabs locales:

  • Descargamos los pesos de Strands Decider 2B.
  • Desplegamos el servicio en vLLM o llama.cpp consumiendo menos de 2.5 GB de VRAM (incluso en CPU moderna con cuantización FP8 o INT4).
  • Exponemos un endpoint ultraligero que n8n o nuestros agentes locales de Hermes invocan antes de cada llamada a herramientas MCP.

Track B (Fast-Track SaaS / Escalado Empresarial)

Para empresas que requieren alta disponibilidad sin gestionar servidores:

  • Despliegue en Cloudflare Workers AI con Clef-flash o integración de Perplexity Decisions API.
  • Clasificación en el borde de la red (edge) para filtrar spam, enrutar webhooks a colas Kafka/SQS y proteger el presupuesto de APIs externas.

5. Implementación Práctica: Router Determinista con Fallback Seguro

A continuación se muestra un ejemplo real de implementación de un enrutador de herramientas para agentes en Python, combinando un modelo decisor local con un umbral de confianza (confidence gate):

import httpx
from typing import Dict, List, Tuple

DECIDER_ENDPOINT = "http://localhost:8000/v1/decide"
CONFIDENCE_THRESHOLD = 0.70

AVAILABLE_ROUTES = [
    "route_sql_query",      # Consultas analíticas a base de datos
    "route_knowledge_mcp",  # Búsqueda en documentación RAG
    "route_code_sandbox",   # Ejecución de scripts en contenedor
    "route_escalate_human"  # Casos ambiguos o de alto riesgo
]

def route_agent_task(prompt: str) -> Tuple[str, float]:
    """
    Evalúa la intención mediante un Decision Model discreto.
    Retorna la ruta seleccionada y su puntuación de confianza calibrada.
    """
    payload = {
        "input": prompt,
        "options": AVAILABLE_ROUTES
    }
    
    # 1. Llamada ultrarrápida al modelo decisor (latencia típica: ~22ms)
    response = httpx.post(DECIDER_ENDPOINT, json=payload, timeout=2.0)
    data = response.json()
    
    # data["probabilities"] contiene { "route_sql_query": 0.92, ... }
    probabilities: Dict[str, float] = data["probabilities"]
    best_route = max(probabilities, key=probabilities.get)
    confidence = probabilities[best_route]
    
    # 2. Gate de seguridad por calibración
    if confidence < CONFIDENCE_THRESHOLD:
        print(f"⚠️ Confianza baja ({confidence:.2f}). Escalando a modelo frontera...")
        return "route_escalate_human", confidence
        
    return best_route, confidence

# Ejemplo de uso en trinchera:
if __name__ == "__main__":
    task = "¿Cuántos usuarios nuevos se registraron ayer en la tabla de facturación?"
    selected_route, score = route_agent_task(task)
    print(f"✓ Ruta elegida: {selected_route} con certeza {score*100:.1f}%")
    # Salida: ✓ Ruta elegida: route_sql_query con certeza 94.6% (Tiempo: 24ms)

6. Reglas de Trinchera para Arquitectos de Automatización

Si estás diseñando flotas de agentes autónomos, pipelines en n8n o servidores MCP, aplica estas tres reglas desde el primer día:

  1. Nunca uses un modelo generativo para una pregunta de respuesta cerrada: Si las opciones de salida caben en una lista enumerada (Enum), un Decision Model es siempre la elección correcta técnica y económicamente.
  2. Aprovecha el Confidence Gate: Utiliza la probabilidad devuelta para implementar una arquitectura piramidal. Deja que el 90% de las decisiones de alta certeza las resuelva el modelo de 2B a coste cero, y reserva los tokens de modelos frontera exclusivamente para el 10% de casos ambiguos.
  3. Mide la latencia acumulada (Time to Action): En flotas multi-agente donde un supervisor delega en tres sub-agentes y estos a su vez eligen herramientas, recortar 1.200 ms en cada bifurcación reduce el tiempo total de ejecución de 6 segundos a menos de 500 ms.

La madurez de los agentes de IA en producción no consiste en añadir modelos más grandes a problemas sencillos, sino en desacoplar cada eslabón de la cadena de cómputo para utilizar la herramienta exacta que el problema exige.

#Strands Decider 2B#Cloudflare Clef#Perplexity Decisions API#vLLM#n8n v1.88+#Model Context Protocol (MCP)#Python