La integración de modelos de lenguaje grandes (LLMs) en sistemas distribuidos de producción introduce desafíos fundamentales que van más allá de la mera selección del modelo. Este artículo aborda la complejidad de migrar un agente autónomo de construcción web de un proveedor de LLM a otro, destacando que las diferencias en la implementación de características aparentemente estándar (como el caching o la invocación de herramientas) pueden tener un impacto profundo en el rendimiento, el costo y la fiabilidad. El problema fundamental de la computación que se resuelve es cómo construir sistemas robustos y eficientes que encapsulen la lógica de negocio, mientras se abstraen de las idiosincrasias de los servicios de terceros, especialmente en un dominio tan volátil como el de los LLMs.

La relevancia de este problema es creciente, ya que cada vez más empresas adoptan arquitecturas basadas en agentes LLM para automatizar tareas complejas. La experiencia de Ploy subraya la necesidad de una ingeniería de sistemas rigurosa y una comprensión profunda de las capas de abstracción, incluso cuando se trabaja con APIs de alto nivel. La "interoperabilidad" entre LLMs de diferentes proveedores no es trivial y requiere una adaptación activa de la infraestructura circundante.

Arquitectura del Sistema

El sistema de Ploy opera un agente autónomo que planifica, lee código, escribe componentes, genera imágenes y evalúa su propio trabajo para construir sitios web. Este agente interactúa con un modelo de lenguaje grande (LLM) como su "cerebro" principal. La arquitectura se basa en un bucle de interacción donde el LLM recibe un prompt, invoca herramientas (como code(read) o code(write)) para interactuar con el codebase real, y genera una respuesta. La comunicación con los LLMs se realiza a través de un SDK universal (Vercel AI SDK), que abstrae las APIs de los proveedores.

Las decisiones de diseño clave giran en torno a la gestión de las interacciones con el LLM. Esto incluye un "eval harness" que ejecuta el agente contra casos de prueba y utiliza un "visual judge" para puntuar el trabajo. La invocación de herramientas se gestiona mediante esquemas que definen los parámetros esperados. La optimización de costos y latencia se logra a través de un sistema de "prompt caching". La migración reveló que las implementaciones de estos componentes (evaluación, tool calling, caching) son profundamente específicas del proveedor. Por ejemplo, la gestión de parámetros opcionales en las llamadas a herramientas y la estrategia de claves y particionamiento del caché son fundamentales para el rendimiento y el costo. La "reasoning replay" del LLM también es un componente crítico, y su implementación puede variar entre proveedores (referencias a IDs de servidor vs. blobs autocontenidos).

Flujo de Evaluación de Agente LLM

  1. 1 Ejecutar Agente El agente LLM se ejecuta contra un 'fixture workspace' real.
  2. 2 Generar Salida El agente construye o edita un sitio web, invocando herramientas.
  3. 3 Puntuar con Juez Visual Un juez visual realiza verificaciones binarias contra un diseño de referencia.
  4. 4 Verificar Contenido/Herramientas Chequeos de contenido, trayectoria de herramientas y aserciones de archivos.
  5. 5 Triaje de Fallos Cada caso fallido se tria con su traza completa (llamadas a herramientas, tex...

Flujo de Caching de Prompts en GPT-5.6 Sol

  1. 1 Solicitud de Prompt El agente envía una solicitud de prompt al LLM.
  2. 2 Hash de Prompt Head + Key Se calcula un hash del encabezado del prompt y la 'prompt_cache_key'.
  3. 3 Dirigir a Nodo de Caché La solicitud se dirige a un nodo de caché específico (limitado a ~15 req/min ...
  4. 4 Buscar Entradas de Caché El nodo busca entradas de caché (A: estático, B: contexto, C: sesión).
  5. 5 Servir o Escribir Si hay un hit, se sirve; si no, se procesa y se escribe una nueva entrada.
CapaTecnologíaJustificación
compute GPT-5.6 Sol Modelo de lenguaje grande (LLM) principal para el agente autónomo de construcción web. Proporciona capacidades de razonamiento, generación de código y toma de decisiones. vs Claude Opus 4.8, Claude Sonnet 5
compute Claude Opus 4.8 Modelo de lenguaje grande (LLM) incumbente, reemplazado por GPT-5.6 Sol. Sirvió como base para el diseño inicial del agente y la suite de evaluación. vs GPT-5.6 Sol, Claude Sonnet 5
orchestration Vercel AI SDK SDK universal para interactuar con diferentes proveedores de LLM, proporcionando una capa de abstracción para la comunicación con los modelos.
storage Prompt Cache (OpenAI) Mecanismo para almacenar y reutilizar partes de prompts repetitivos, reduciendo latencia y costos. Requiere configuración explícita de `prompt_cache_breakpoint` y `prompt_cache_key`. vs Prompt Cache (Anthropic) Clave de caché con ámbito por 'workspaceId' y prompts divididos en capas con breakpoints.
observability Eval Harness Suite de evaluación para probar el agente LLM contra casos de uso reales, puntuando la calidad de las construcciones y triando fallos mediante trazas completas. Ajustado para soportar llamadas paralelas a herramientas y lecturas de archivos por lotes de GPT-5.6.

Trade-offs

Ganancias
  • Tiempo de construcción (wall-clock time)
  • Costo por construcción
  • Tokens de salida
  • Calidad visual (visual score)
Costes
  • Complejidad de configuración de caché
  • Compartición de prefijos de prompt entre workspaces (costo fijo por workspace)
  • Tendencia de GPT-5.6 a diseños genéricos sin dirección explícita
// Before: 25 keys, every one carrying an invented value
{ "action": "read", "file_paths": [...], "offset": 0, "timeout": 120000, ... }

// After: 25 keys, 4 real values, 21 explicit nulls (stripped before the tool runs)
{ "action": "read", "file_paths": [...], "offset": null, "timeout": null, ... }
Transformación de un parámetro opcional en un esquema JSON para que el LLM pueda indicar explícitamente su ausencia con `null`, en lugar de inventar un valor. Esto se aplica en el límite del proveedor para modelos OpenAI.

Fundamentos Teóricos

Este caso de estudio resuena con los principios de diseño de sistemas distribuidos y la gestión de dependencias de terceros. Conceptos como la "ley de la transparencia" de Lamport, que enfatiza la importancia de la visibilidad y la comprensión de los sistemas subyacentes, son directamente aplicables. Aunque no hay un paper único que prediga este problema específico de LLMs, la necesidad de diseñar para la robustez frente a la variabilidad de los componentes es un tema recurrente en la investigación de sistemas tolerantes a fallos (por ejemplo, los trabajos de Leslie Lamport sobre consenso y sistemas distribuidos).

La gestión de caché, tal como se describe, se relaciona con los principios de localidad de referencia y las estrategias de invalidación de caché, temas ampliamente estudiados en la arquitectura de computadoras y bases de datos. La diferencia entre el caching implícito basado en prefijos y el caching explícito con claves y particiones es un ejemplo de cómo las decisiones de diseño a bajo nivel impactan la eficiencia a nivel de sistema, un concepto explorado en papers sobre optimización de rendimiento y sistemas de memoria jerárquica.