Desarrollar aplicaciones empresariales con LLM y APIs: arquitectura, herramientas, seguridad y operación · Módulo 5: Entrega de producto
Optimizar latencia, coste y experiencia
Optimización basada en perfiles, reducción de trabajo, selección de modelo por tarea, caché segura y presupuestos de uso.
Objetivo de aprendizaje
Mejorar latencia, coste y experiencia mediante medición y experimentos que mantengan las propiedades de calidad y seguridad requeridas.
Optimizar una aplicación LLM no significa elegir siempre el modelo más pequeño ni recortar contexto hasta que responda rápido. Significa reducir trabajo innecesario sin degradar las propiedades que importan.
La optimización empieza después de medir.
Perfila el recorrido
Descompón:
autenticación → datos → RAG → modelo → tools → validación → persistencia → render
Mide cada fase.
Para interfaces conversacionales distingue:
- tiempo hasta primer resultado;
- tiempo hasta respuesta completa;
- tiempo hasta efecto confirmado.
Usa percentiles. La media oculta colas largas.
Reduce llamadas antes de abaratar llamadas
Pregúntate:
- ¿esta llamada LLM es necesaria?
- ¿puede resolverlo una regla?
- ¿puedo reutilizar resultado?
- ¿puedo paralelizar dependencias independientes?
- ¿puedo limitar salida?
- ¿estoy reenviando contexto redundante?
- ¿necesito un modelo de máxima capacidad para esta tarea?
La mayor reducción de coste suele venir de eliminar trabajo, no solo de cambiar tarifas.
Selecciona modelo por tarea
Construye una matriz con:
- calidad;
- latencia;
- coste;
- capacidad de tools;
- structured outputs;
- contexto;
- modalidad;
- política de datos.
Las capacidades y precios son volátiles. No incrustes una decisión eterna en código.
Ejecuta evals por tarea antes de cambiar.
Usa streaming cuando mejora experiencia
El streaming puede reducir percepción de espera en prosa, pero no siempre es apropiado.
Si la aplicación necesita validar una estructura completa antes de mostrarla, quizás sea mejor esperar. Si el usuario lee una respuesta larga, mostrar tokens progresivamente puede ser útil.
No confundas «primer token rápido» con «tarea completada rápido».
Cachea con cuidado
Una cache necesita:
- clave;
- identidad;
- tenant;
- versión;
- permisos;
- expiración;
- invalidación.
No cachees resultados sensibles solo por similitud semántica sin considerar autorización.
Los cambios de fuente, modelo o política pueden invalidar entradas.
Controla coste completo
Registra:
- input tokens;
- output tokens;
- tools;
- retrieval;
- reranking;
- retries;
- almacenamiento;
- revisión humana;
- infraestructura.
El coste del modelo es solo una parte.
Diseña presupuestos
Puedes establecer:
- presupuesto por usuario;
- por tarea;
- por job;
- por día;
- límite de reintentos;
- longitud máxima;
- número máximo de tools.
Cuando el presupuesto se agota, el sistema debe degradar de forma segura: pedir confirmación, pasar a asíncrono o rechazar.
Protege la experiencia
Muestra estados reales:
- preparando;
- esperando herramienta;
- procesando job;
- requiere revisión;
- error recuperable.
No simules progreso.
Permite cancelar cuando la semántica sea clara y conserva borradores si aporta valor.
Construye perfiles de rendimiento
No compares solo una media global.
Segmenta por:
- tarea;
- tamaño;
- modelo;
- uso de tools;
- RAG;
- usuario;
- error.
Una tarea simple puede tener p95 excelente mientras una extracción larga degrada la experiencia.
Separa latencia de red, modelo y aplicación
Instrumenta:
- DNS/conexión si es relevante;
- cola;
- proveedor;
- retrieval;
- tool;
- validación;
- persistencia.
Optimizar el frontend no arregla un reranker lento.
Usa concurrencia solo cuando existe independencia
Puedes paralelizar:
- dos búsquedas independientes;
- varias fuentes sin dependencia.
No paralelices pasos que necesitan resultado anterior.
La concurrencia puede aumentar rate limits y coste. Mide.
Controla prompts y contexto
Elimina:
- instrucciones repetidas;
- historial irrelevante;
- chunks duplicados;
- campos nunca usados.
Pero conserva evidencia y reglas críticas.
Evalúa batching cuando el producto lo permita
Tareas offline pueden agruparse o enviarse mediante mecanismos asíncronos si el proveedor los ofrece.
No es adecuado para una interacción que necesita respuesta inmediata.
Mide coste marginal
Pregunta cuánto cuesta:
- una consulta;
- una revisión;
- una herramienta;
- un retry;
- un caso fallido.
El coste medio puede ocultar una minoría muy cara.
Diseña degradación económica
Si un usuario alcanza presupuesto:
- reduce funciones no críticas;
- pasa a cola;
- solicita confirmación;
- bloquea.
No cambies silenciosamente a una opción de menor calidad si afecta el contrato.
Optimiza UX con feedback real
Mide:
- abandono;
- reintentos del usuario;
- ediciones;
- tiempo hasta completar tarea.
La percepción de velocidad es importante, pero el objetivo final es completar el trabajo correctamente.
Ejercicio
Elige dos optimizaciones y formula hipótesis:
«Reducir el contexto redundante un 30 % disminuirá coste y p95 sin degradar groundedness».
Ejecuta baseline y candidata con la misma batería. Documenta:
- calidad;
- latencia;
- coste;
- errores;
- experiencia;
- regresiones.
Resultado de la lección
Debes terminar con una política de optimización basada en datos. La aplicación será más eficiente porque hace menos trabajo innecesario, no porque haya eliminado controles esenciales.

