programming 10 min • advanced

OpenAI en Tiempo Real a Gran Escala: Control de Tasa Consciente de Tokens y un Enrutador de Modelo de Tres Niveles

Un manual práctico para construir experiencias de chat y voz de baja latencia en la API de OpenAI: abarcando TTFT, HTTP/3/WebRTC, encabezados de límite de tasa, procesamiento por lotes, SLOs y costos con GPT-4o, GPT-4.1 y la serie o

Por AI Research Team
OpenAI en Tiempo Real a Gran Escala: Control de Tasa Consciente de Tokens y un Enrutador de Modelo de Tres Niveles

OpenAI Realtime a Escala: Streaming, Control de Tasa Consciente de Tokens y un Enrutador de Modelo de Tres Niveles

Un manual práctico para construir experiencias de chat y voz de baja latencia en la API de OpenAI—cubriendo TTFT, HTTP/3/WebRTC, encabezados de límite de tasa, agrupación, SLOs, y costo con GPT‑4o, GPT‑4.1, y la serie o.

Si tu aplicación todavía trata las llamadas LLM como solicitudes REST ordinarias, estás dejando el rendimiento, y la confianza del usuario, sobre la mesa. Los productos en tiempo real en la plataforma de OpenAI viven o mueren por el tiempo hasta el primer token, la latencia de cola y la estricta adherencia a las cuotas basadas en tokens. El camino más rápido hacia una experiencia receptiva no es un servidor más grande; es iniciar el streaming pronto, elegir el transporte correcto, marcar el ritmo basándose en tokens en lugar de solicitudes, y enrutar a través de un portafolio de modelos de varios niveles que equilibra calidad, costo y velocidad.

Lo que sigue es una guía de campo para construir y operar experiencias de chat y voz de baja latencia en la API de OpenAI a escala de producción.

Por qué “en tiempo real en OpenAI” es diferente

OpenAI aplica límites de tasa a través de múltiples dimensiones—solicitudes por minuto (RPM), tokens por minuto (TPM), presupuestos diarios y límites específicos de modalidad—con límites que se aplican tanto al alcance de la organización como al proyecto. Algunas familias de modelos comparten límites agrupados. Los modelos de contexto largo pueden tener cuotas separadas también. Cada respuesta incluye encabezados de límite de tasa que exponen los límites actuales, el presupuesto restante y los tiempos de reinicio tanto para solicitudes como para tokens. Estas mecánicas hacen que el control consciente de tokens—no solo el conteo de solicitudes—sea obligatorio para cualquier sistema de producción.

El streaming introduce su propia semántica. La API de Respuestas puede transmitir tokens a través de eventos enviados por el servidor (SSE), mientras que la API en Tiempo Real ofrece sesiones bidireccionales de baja latencia para interacciones de voz y multimodales a través de WebRTC o WebSocket. Las sesiones en tiempo real son con estado, emiten eventos de ciclo de vida y contenido, e imponen restricciones: una duración máxima de la sesión (60 minutos), una selección de voz fija una vez que se emite cualquier audio, y límites de tamaño para fragmentos de audio enviados a través de WebSocket.

El cumplimiento y la seguridad también moldean la arquitectura. Las claves estándar de la API nunca deben exponerse en entornos cliente. Las sesiones de tiempo real en navegadores y móviles deben usar secretos de cliente de corta duración con un TTL configurable. Operacionalmente, los equipos deben integrar el Estado y Changelog de OpenAI en los procesos de despliegue para que las implementaciones se pausen automáticamente durante incidentes y cambios de modelo.

Mide lo que importa: TTFT, colas y cargas reproducibles ⏱️

La latencia de extremo a extremo debe descomponerse y ser evaluada bajo condiciones repetibles:

  • Descompón la latencia en red (DNS, conexión, apretón de manos TLS/QUIC, RTT), tiempo hasta el primer token (TTFT) o primer cuadro de audio, y tiempo hasta el último token/cuadro.
  • Rastrea p50/p95/p99 para cada dimensión. Las colas—no las medianas—gobiernan la experiencia del usuario y la capacidad.
  • Para streaming, mide el TTFT en el primer evento SSE para texto o el primer delta de output_text/output_audio en sesiones en tiempo real.
  • Captura el rendimiento con solicitudes por segundo, tasas de generación de tokens por segundo, utilización RPM/TPM y conteos de sesiones concurrentes bajo carga sostenida.
  • Clasifica los errores por 429 (limitado por tasa), 5xx (fallos del proveedor), tiempos de espera y fallos de aplicación/herramienta, y registra todos los encabezados x-ratelimit para control adaptativo.

Los marcos de evaluación deben usar conjuntos de datos reproducibles y plantillas de mensajes, incluyendo presupuestos de tokens determinísticos calculados por adelantado con un tokenizador como tiktoken. Las pruebas de inmersión que duran decenas de minutos—o mejor, horas—revelan arranques en frío, recolección de basura y picos de las colas. Al probar la voz en tiempo real, inyecta pérdida de paquetes y fluctuación para revelar los contribuyentes de cola a nivel de transporte. El análisis posterior a la prueba debe seguir los principios de “cola a escala”: identificar efectos multiplicativos de cola a través de la red, modelo, herramientas y subsistemas de recuperación, no solo en un único componente.

Domando la latencia: transmite pronto, reduce el contexto y elige el transporte correcto

El streaming es la forma más efectiva de reducir la latencia percibida. Para texto, SSE transmite tokens a medida que se generan, adelantando la primera pintura incluso cuando el tiempo total de finalización no cambia. Para voz, las sesiones en tiempo real producen audio de manera incremental y mantienen ágiles los turnos conversacionales.

En el lado de los mensajes, todo lo que hace que el modelo piense menos—y más pronto—da dividendos:

  • Minimiza los preámbulos y el contexto histórico; elimina duplicados agresivamente.
  • Restringe la recuperación solo a los trozos relevantes top-k y pre-computa resúmenes para documentos largos.
  • Limita las salidas con max_output_tokens y secuencias de parada. Para esquemas impulsados por la UI, prefiere Salidas Estructuradas basadas en JSON Schema para mantener las respuestas concisas y analizables.
  • Usa llamadas a funciones solo para invocación de herramientas y efectos secundarios. Mantén los esquemas de herramientas pequeños, activa parallel_tool_calls solo cuando son independientes, y guía el comportamiento con tool_choice o allowed_tools.

La elección del transporte importa, especialmente en las colas. HTTP/2 persistente reduce el overhead del apretón de manos y habilita multiplexación, mientras que HTTP/3 sobre QUIC a menudo reduce el p95/p99 en redes con pérdidas eliminando el bloqueo de cabeza de línea. Para clientes en streaming, usa lectores de eventos eficientes, reconecta en fallos transitorios y construye bucles de lectura/escritura sensibles a la contrapresión para evitar la hinchazón del buffer durante ráfagas.

Rendimiento y cuotas: marca el ritmo por tokens, no solo por solicitudes

Tu verdadero límite es el que golpeas primero, ya sea RPM o TPM. La plataforma divulga ambos a través de encabezados en cada respuesta:

  • x-ratelimit-limit-requests / x-ratelimit-remaining-requests / x-ratelimit-reset-requests
  • x-ratelimit-limit-tokens / x-ratelimit-remaining-tokens / x-ratelimit-reset-tokens

Los sistemas de producción deben estimar el uso de tokens antes del despacho: calcula los tokens de entrada proyectados a partir de mensajes, herramientas y contexto recuperado, luego agrega los max_output_tokens solicitados. Una heurística conservadora es marcar el ritmo según el máximo de entrada y salida solicitada, lo que se alinea con cómo los limitadores de tasa a menudo cuentan por solicitud. Aplica cubos de fuga/token tanto en solicitudes como en tokens; las colas deben rastrear ambos.

Cuando te limiten (429), retrocede exponencialmente con fluctuación aleatoria y adapta el ritmo a los encabezados restantes y de reinicio en lugar de pausas fijas. Limita los reintentos porque cada intento grava el presupuesto por minuto. Las ráfagas que parecen ajustarse a las matemáticas a nivel de minuto aún pueden activar la aplicación sub-minuto, así que deja espacio libre. En sistemas multitenant, separa grupos de prioridad para que el tráfico interactivo nunca se quede sin recursos y reserva una fracción de capacidad para absorber picos.

La agrupación tiene un lugar, pero solo cuando no se requiere inmediatez. La API de Lote es ideal para grandes trabajos en segundo plano, desplazando la ejecución fuera de ventanas de límite de tasa síncronas y a menudo reduciendo el costo, a expensas de colas más largas. Dentro de flujos síncronos, la agrupación puede mejorar marginalmente el rendimiento cuando RPM es el cuello de botella y existe margen TPM—sin embargo, retrasa la primera salida para todos los elementos y empeora las colas, así que evítalo para UX interactivo. Las incrustaciones son un mejor candidato para la agrupación porque sus salidas no se transmiten a los usuarios.

Voz en tiempo real en la práctica: WebRTC vs WebSocket y restricciones de sesión

Para la voz en navegadores y móviles, WebRTC es la ruta recomendada. Ofrece captura/reproducción de medios nativos, buffers de fluctuación adaptativos y atravesamiento NAT. Hay dos flujos seguros de conexión:

  • Unificado: tu servidor intercambia SDP con OpenAI usando una clave de API estándar del lado del servidor.
  • Cliente-directo: tu servidor emite un secreto de cliente de corta duración con configuración de sesión por defecto y TTL; el navegador envía su SDP directamente a OpenAI usando esa credencial efímera.

En ambos casos, el navegador agrega una pista de micrófono local y recibe una transmisión de audio remota. La API de Tiempo Real puede manejar la detección de turnos (detección de actividad de voz por defecto) y requiere elegir salida de texto o audio para cada respuesta. Una vez que el modelo emite audio en una sesión, no puedes cambiar la selección de voz. Las sesiones se limitan a 60 minutos.

En servidores, WebSocket es una buena opción cuando necesitas controlar el fragmentado de audio codificado en base64 o hacer tu propia mezcla/transcodificación. Respeta los límites de tamaño por fragmento documentados, especialmente cuando la detección de actividad de voz está deshabilitada y comprometes manualmente los buffers. SIP está disponible para integraciones de telefonía directas.

Para TTFT de voz, mide desde el inicio del habla hasta el primer delta de output_text/audio. En pruebas de carga, agrega pérdida de paquetes y fluctuación para exponer el comportamiento de las colas y afina los tamaños de los buffers y la configuración de VAD.

Elige y enruta modelos por calidad, costo y velocidad

La selección de modelos establece tu línea base para latencia y costo:

  • GPT‑4o: un buque insignia versátil para entrada de texto e imagen, ventana de contexto de 128K tokens y precios estándar de alrededor de $2.50 por millón de tokens de entrada y $10 por millón de tokens de salida. Las entradas en caché reducen el costo.
  • GPT‑4o mini: contexto similar a precios materialmente más bajos—aproximadamente $0.15 por millón de entrada y $0.60 por millón de salida—haciéndolo el predeterminado para clasificación de alto rendimiento, extracción y razonamiento simple.
  • GPT‑4.1: “el más inteligente no razona,” contexto muy grande en el orden de un millón de tokens, fuerte seguimiento de instrucciones y uso de herramientas; adecuado cuando debes preservar contextos largos sin pasos de razonamiento explícitos.
  • serie o (o3, o1-pro): razonamiento más profundo con presupuestos de cómputo más grandes y ventanas de aproximadamente 200K tokens. Espera mayor latencia y, para o1-pro, precios muy altos por token y sin streaming. Los tokens de razonamiento ocupan contexto y se facturan como tokens de salida.

En la práctica, un enrutador de tres niveles equilibra calidad, latencia y costo:

  • Nivel 1: Envía tareas rutinarias y bien definidas a GPT‑4o mini.
  • Nivel 2: Escala tareas ambiguas o de mayor importancia a GPT‑4o o GPT‑4.1.
  • Nivel 3: Reserva o3 o o1-pro para los casos más difíciles con un valor comercial explícito.

Controla promociones y retrocesos con criterios de aceptación y evaluación canaria en tráfico grabado. Bajo presión de cuota o incidentes, degrada con gracia cambiando a un modelo más barato/pequeño con mensajes claros para el usuario. En flujos de herramientas intensivos, reduce el consumo de tokens minimizando esquemas de herramientas, restringiendo el comportamiento mediante tool_choice o allowed_tools, y habilitando parallel_tool_calls solo cuando acciones duplicadas/contradictorias son imposibles.

RAG y preprocesamiento para eficiencia de tokens

Los presupuestos de tokens dominan tanto el costo como la latencia, por lo que tu pila RAG debería ser diseñada para la frugalidad:

  • Agrupa incrustaciones hasta el punto que los techos TPM lo permitan para aumentar el rendimiento sin dañar la interactividad.
  • Ajusta las consultas a la base de datos vectorial para un bajo p95 y colócalas junto a los servidores de aplicaciones para reducir RTT.
  • Fragmenta documentos con tamaños de ventana alineados con los límites del modelo y los alcances de las preguntas; usa un top-k conservador con eliminación de duplicados para evitar la sobre-recuperación.
  • Mantén resúmenes precomputados para documentos muy grandes para inyectar un contexto conciso y relevante.
  • Comprime los mensajes, almacena en caché los prefijos de plantilla estática y aplica políticas de truncamiento explícitas.
  • Limita las completaciones a través de max_output_tokens y usa Salidas Estructuradas para respuestas de forma fija de las que depende la UI.

Patrones de confiabilidad bajo carga

La resiliencia comienza con el limitador de tasa. En los 429, implementa retrocesos exponenciales con fluctuación aleatoria y entiende que la aplicación sub-minuto significa que “con ráfagas pero dentro de los 60 segundos” aún puede estrangular. Cada intento fallido aún consume presupuesto, así que limita los reintentos. En errores 5xx o tiempos de espera, mantén los reintentos acotados e idempotentes.

Los cortacircuitos deben activarse rápidamente ante anomalías sostenidas del proveedor o de red, fallando de forma abierta en respuestas en caché, características degradadas o modelos de retroceso dependiendo de la superficie. Usa claves de idempotencia y deduplicación a nivel de aplicación alrededor de cualquier operación de herramientas con efectos secundarios para evitar repeticiones accidentales. Transmite resultados parciales progresivamente; cuando el finish_reason indica truncamiento, ofrece una interacción “continuar” para que los usuarios puedan recuperar el resto sin volver a enviar el mensaje completo. Limita las llamadas a herramientas y solicita al modelo que continúe con resultados parciales cuando las dependencias expiren.

Observabilidad, SLOs y control de costos

No puedes controlar lo que no puedes ver. Instrumenta el trazado por solicitud para capturar:

  • Tiempo de tokenización
  • Establecimiento de conexión y detalles de apretón de manos
  • TTFT y duraciones de streaming
  • Latencias de llamadas a herramientas y tiempos de recuperación
  • Sobrecarga de renderizado del lado del cliente

Para contabilidad de costos, extrae tokens de mensaje, completación y totales de las respuestas API y multiplícalos por las tarifas por token actuales para el modelo seleccionado y el nivel de procesamiento, aplicando descuentos de entrada en caché donde sea relevante. Define SLOs por superficie (chat vs voz) que incluyen:

  • Objetivos p95 de TTFT (sub-segundo para chat; unos cientos de milisegundos al primer audio para voz)
  • Latencia de extremo a extremo p95 (a menudo de uno a tres segundos para chat)
  • Tasas de error por clase (por ejemplo, por debajo de uno a dos por ciento excluyendo errores de usuario)
  • Límites de costo medianos por interacción exitosa

Alerta sobre violaciones de SLO de una manera que permita a los ingenieros de turno de guardia profundizar por modelo, ruta, cliente y región. Para planificación de capacidad, pronostica necesidades RPM/TPM/concurrencia a partir de distribuciones históricas de tokens con margen para picos. Antes de los despliegues, simula políticas de enrutamiento multi-modelo en tráfico grabado para estimar el costo y la latencia combinados. Mantente atento al Estado y Changelog de la plataforma para capturar incidentes y cambios radicales temprano.

Una nota sobre restricciones de cliente/tiempo de ejecución: los navegadores a menudo no exponen ciertos encabezados via CORS (por ejemplo, Retry-After), lo que hace que el ritmo del lado del cliente sea poco fiable. Maneja el estrangulamiento del lado del servidor donde los encabezados x-ratelimit están disponibles. Los SDKs oficiales pueden devolver respuestas sin procesar con encabezados (por ejemplo, a través de un patrón “con respuesta sin procesar” en Python), lo que ayuda a centralizar el control de admisión. En el servidor, solo apuesta cuando las llamadas son idempotentes y cancela las solicitudes redundantes rápidamente para evitar violaciones de políticas y cargos duplicados.

Multiinquilino, equidad y controles de abuso

En un entorno compartido, la equidad es una característica arquitectónica, no una ocurrencia tardía:

  • Aplica presupuestos por inquilino para tokens y solicitudes por minuto y por día, con límites por nivel de plan y tolerancias de ráfaga.
  • Aíslate con cubos y colas separadas por nivel de inquilino para que los vecinos ruidosos no puedan dejar sin recursos a otros.
  • Reserva una porción de capacidad para tráfico interactivo y asegúrate de mínimos para cada nivel.
  • Protege contra el abuso y negación de servicio: limita la creación de conexiones (especialmente para WebRTC/WebSocket en tiempo real), requiere secretos de cliente de corta duración para cualquier uso de tiempo real en navegador/móvil, limita tamaños de mensaje y aplica moderación/filtros consistentes con las políticas de la plataforma.

Disciplina de pruebas y despliegue

Prueba con el tráfico que esperas, no el tráfico que deseas haber tenido. Las pruebas de carga deben reflejar mezclas de producción de tamaños de mensaje, probabilidades de invocación de herramientas y comportamiento de recuperación. Incrementa gradualmente hasta el pico y mantenlo el tiempo suficiente para exponer colas en estado steady-state. Las pruebas de inmersión durante horas descubren fugas de memoria, dinámicas de escalado automático, inicios en frío sin servidor y fluctuación a largo plazo. Las pruebas de caos deben inyectar ráfagas de 429, fallos 5xx, demoras DNS, pérdidas de paquetes/jitter de WebRTC y paradas de herramientas.

Escribe SLOs de aceptación y límites de presupuesto. Ejemplos: p95 TTFT que se sienta instantáneo en chat y casi instantáneo en voz, extremo a extremo p95 por debajo de unos pocos segundos para chat, umbrales de error ajustados y techos de costo medianos explícitos. Fija instantáneas del modelo donde estén disponibles para preservar la reproducibilidad. Trata cualquier cambio en la versión del modelo o reglas de enrutamiento como una promoción que requiere evaluación de regresión en tráfico grabado.

La conclusión

Ganar en tiempo real en la API de OpenAI significa ingeniería para las colas. Lo esencial es directo pero inflexible: transmite temprano y siempre; reduce mensajes y contexto recuperado; limita salidas; minimiza la carga de herramientas; y marca el ritmo por tokens tanto como por solicitudes usando los encabezados de límite de tasa de la plataforma. Para experiencias de voz y multimodales, prefiere WebRTC en tiempo real en navegadores y WebSocket en servidores, y respeta las restricciones de sesión y fragmento. Enruta a través de una pila de modelos de tres niveles—mini para tareas rutinarias, 4o/4.1 para calidad, serie o para los casos más difíciles—con canarios, promociones claras y degradación graciosa. Construye confiabilidad en retrocesos con fluctuación aleatoria, idempotencia, cortacircuitos y facilidades de respuesta parcial. Extiende la observabilidad desde apretones de manos hasta llamadas a herramientas y costos de tokens, y simula políticas de enrutamiento antes del despliegue. Haz el trabajo aburrido en pruebas—carga, inmersión, caos—y tu aplicación se sentirá rápida cuando más importa, manteniéndose dentro de las cuotas y manteniendo los costos predecibles a medida que el tráfico aumenta 🚀

Guía rápida de transporte

InterfazMejor paraNotas
SSE (API de Respuestas)Transmisión de texto en aplicaciones web y servidorMide TTFT en el primer evento; reutiliza conexiones HTTP/2/3; maneja reconexión y contrapresión
WebRTC en tiempo realVoz en navegador/móvilMedios nativos, VAD/detección de turnos, atravesamiento NAT; sesiones de 60 minutos; voz fija una vez que el audio es emitido; seguro con secretos de cliente o flujo unificado de servidor
WebSocket en tiempo realVoz/multimodal en el lado del servidorControl directo sobre fragmentos de audio en base64; respeta los límites de tamaño por fragmento; escucha deltas de output_text/audio
SIPIntegraciones telefónicasConectividad telefónica directa; se alinea con la semántica de voz en tiempo real

Fuentes y Referencias

platform.openai.com
Rate limits | OpenAI API Details RPM/TPM quotas and x‑ratelimit headers used for token‑aware pacing and adaptive control.
platform.openai.com
Pricing | OpenAI API Provides per‑token pricing and cached‑input discounts referenced in model selection and cost control.
platform.openai.com
GPT‑4o Model | OpenAI API Supports claims about GPT‑4o capabilities, context window, and its use as a versatile default.
platform.openai.com
GPT‑4o mini Model | OpenAI API Supports the lower pricing and suitability of GPT‑4o mini for high‑throughput tasks and fallbacks.
platform.openai.com
GPT‑4.1 Model | OpenAI API Supports the large context window and improved instruction‑following/tool use for GPT‑4.1.
platform.openai.com
o3 Model | OpenAI API Provides context on o‑series reasoning behavior and when to reserve it for hard cases.
platform.openai.com
o1‑pro Model | OpenAI API Documents that o1‑pro has higher costs and no streaming, informing router design and UX constraints.
platform.openai.com
Structured model outputs | OpenAI API Backs recommendations for JSON Schema‑based outputs to constrain and parse responses.
platform.openai.com
Function calling | OpenAI API Supports guidance on minimizing tool schemas, using tool_choice/allowed_tools, and parallel_tool_calls.
platform.openai.com
Realtime API — Build low‑latency LLM applications Describes Realtime session semantics, constraints, and low‑latency streaming behavior.
platform.openai.com
Realtime API with WebRTC | OpenAI API Details browser/mobile integration, turn detection, and session setup flows.
platform.openai.com
Realtime API with WebSocket | OpenAI API Supports server‑side audio chunking, per‑chunk size limits, and delta event handling.
platform.openai.com
Realtime | API Reference Provides canonical parameters and event types for Realtime sessions and call creation.
platform.openai.com
Client Secrets | API Reference (Realtime) Documents short‑lived client secrets and TTLs for secure browser/mobile sessions.
platform.openai.com
Realtime conversations | OpenAI API Supports guidance on turn detection, voice behavior, and response modalities.
platform.openai.com
Responses API Reference Covers SSE token streaming, finish_reason semantics, and headers for pacing/retries.
platform.openai.com
Embeddings API Reference Supports batching recommendations for non‑interactive embedding workloads.
platform.openai.com
Batches API Reference Backs guidance on shifting large workloads off the synchronous path to reduce rate‑limit pressure.
github.com
tiktoken (Tokenization library) Supports deterministic token budgeting for admission control and benchmarking.
status.openai.com
OpenAI Status Used for operational readiness and rollout control during incidents.
platform.openai.com
OpenAI Platform Changelog Informs controlled rollouts and awareness of breaking API/model changes.
www.rfc-editor.org
RFC 9114 — HTTP/3 Supports claims about QUIC’s tail‑latency benefits and head‑of‑line blocking avoidance.
developer.mozilla.org
MDN — Server‑Sent Events Background for SSE streaming behavior, TTFT measurement point, and reconnection handling.
nodejs.org
Node.js Streams — Backpressure Supports recommendations to implement backpressure‑aware read/write loops for streaming clients.
opentelemetry.io
OpenTelemetry Documentation Backs per‑request tracing recommendations across network, model, and tool stages.
research.google
Tail at Scale (Dean & Barroso) Grounds the focus on tail latency analysis and multiplicative tail contributors.
github.com
Retry-After header not exposed to browsers (GitHub issue) Supports the claim that browsers often don’t expose Retry‑After, motivating server‑side pacing.

Ad space (disabled)