B2BB2B LLM
Visión empresarial

Cómo crear un corredor de límite de tarifas neutral para proveedores para API LLM multimodelo

Una arquitectura práctica para normalizar las cuotas de proveedores, reservar capacidad de solicitudes y tokens, hacer cumplir la equidad de los inquilinos y manejar respuestas 429 y 503 sin multiplicar los reintentos entre SDK y puertas de enlace.

Cuando varios equipos comparten varios proveedores de LLM, la limitación de tasas deja de ser un detalle de integración del proveedor. Se convierte en un problema de capacidad compartida. Un proveedor puede limitar las solicitudes y los tokens de entrada, otro puede separar los tokens de entrada y de salida, y un tercero puede aplicar cuotas a nivel de proyecto o en una ventana de gasto móvil. Un bucle de reintento dentro de cada SDK no puede coordinar esas restricciones entre inquilinos, aplicaciones, claves de socios y rutas modelo.

La solución práctica es un corredor de límite de tasa central en la puerta de enlace. El corredor estima la demanda, reserva capacidad antes del envío, pone en cola o rechaza el trabajo de acuerdo con la política y concilia la reserva con el uso real una vez completado. Luego, las respuestas de los proveedores refinan la visión del corredor sobre la capacidad disponible en lugar de desencadenar tormentas de reintentos independientes.

Esta arquitectura es útil para cualquier LLM empresarial API que necesite un rendimiento predecible en equipos internos, aplicaciones de producción, agentes de automatización o socios externos.

Por qué los límites de tarifas de los proveedores no se pueden reducir a solicitudes por minuto

Hecho: Las cuotas de proveedores utilizan diferentes dimensiones y alcances. Las dimensiones comunes incluyen solicitudes por minuto, tokens de entrada por minuto, tokens de salida por minuto, tokens totales, solicitudes por día, simultaneidad, ventanas de gasto y límites de aceleración o rampa. El mismo proveedor puede exponer diferentes límites para una organización, proyecto, espacio de trabajo, modelo o API producto.

Por ejemplo, la documentación del proveedor describe combinaciones como:

  • Límites de solicitudes y tokens con capacidad restante e información de restablecimiento en los encabezados de respuesta.
  • Límites de token de entrada y token de salida separados para las API de mensajes.
  • Cuotas a nivel de proyecto en lugar de cuotas adjuntas a API claves individuales.
  • Límites de solicitudes diarias que se restablecen en un momento definido por el proveedor.
  • Ventanas progresivas basadas en el gasto que pueden rechazar el tráfico incluso cuando las tasas de solicitudes y tokens parecen aceptables.
  • Límites de aceleración que reaccionan ante un fuerte aumento del tráfico, incluso cuando el uso en estado estable está por debajo de la cuota publicada.

Una puerta de enlace que almacena solo un número llamado proveedor RPM eventualmente admitirá en exceso el tráfico en una dimensión o infrautilizará la capacidad en otra. Tampoco puede explicar si el rechazo se debió a una política de inquilino, una cuota de proyecto de proveedor, un límite diario o una respuesta de sobrecarga.

Arquitectura de referencia para un corredor de límite de tasa

Coloque el intermediario en la ruta de solicitud antes del adaptador del proveedor. Cada solicitud debe pasar por el mismo flujo de reserva, independientemente de si llegó a través de una clave SDK, un servicio interno, un agente de automatización o una clave de socio API.

  1. Normalizar identidad. Resuelva la organización, el inquilino, el equipo, la aplicación, el entorno, el socio, la clave API, la ruta del modelo y la clase de carga de trabajo.
  2. Estimar la demanda. Calcule los tokens de entrada esperados, los tokens de salida máximos, el gasto estimado y cualquier costo de simultaneidad.
  3. Evaluar la política. Verificar los presupuestos de los inquilinos, los plazos de las colas, la elegibilidad de las rutas, la prioridad y las reglas alternativas.
  4. Reservar capacidad. Reservar capacidad de forma atómica en los depósitos internos y orientados al proveedor relevantes.
  5. Envío. Envíe la solicitud solo después de que la reserva se realice correctamente.
  6. Conciliar. Reemplace las estimaciones con el uso real, libere las reservas no utilizadas y registre los encabezados de los proveedores y la clasificación de las respuestas.
  7. Decidir la siguiente acción. Devolver el resultado, poner en cola el trabajo, volver a intentarlo de forma centralizada, retroceder o rechazarlo según el contrato de carga de trabajo.

El servicio de reservas debe ser escalable horizontalmente, pero su decisión debe ser atómica para cada solicitud. Un contador distribuido que permita a dos trabajadores observar la misma capacidad restante puede recrear el problema del proveedor 429 dentro de la puerta de enlace.

Utilice un modelo de cuota canónico sin ocultar las diferencias entre proveedores

Defina un modelo canónico que pueda representar restricciones específicas del proveedor en lugar de forzar a cada proveedor a realizar una sola abstracción.

DimensiónQué controlaAcción típica del intermediario
SolicitudesNúmero de envíos en un período de tiempoReservar una unidad de solicitud
Tokens de entradaRendimiento de avisos y contextoReserva de tokens de avisos estimados
Tokens de salidaRendimiento de generaciónReserve el máximo solicitado o limitado por políticas
Total de tokensUso combinado de aviso y finalizaciónReserva un total específico del proveedor
Solicitudes diariasCuota de solicitudes a largo plazoRechazar o redirigir cuando se agote el grupo diario
Ventana de gastoCosto durante un intervalo continuoReserva el costo estimado con un margen de seguridad
SimultaneidadSolicitudes activas al mismo tiempoAdquirir un contrato de arrendamiento hasta su finalización o tiempo de espera
Tasa de rampaAumento del tráfico en un intervalo cortoLimitar la entrada incluso cuando los segmentos tengan espacio

Represente cada límite como un depósito con un alcance, capacidad, regla de recarga o restablecimiento, unidad y fuente. Un depósito de proyecto de proveedor puede contener solicitudes y tokens de entrada. Un depósito de espacio de trabajo puede contener tokens de salida. Una política interna de socios podría agregar límites de gasto y simultaneidad. La decisión de admisión es exitosa solo si todas las reservas requeridas se realizan correctamente.

No trate los encabezados de los proveedores como una fuente completa de verdad. Utilícelos para corregir las estimaciones del corredor, pero conserve un modelo configurado para límites que no estén expuestos en cada respuesta. Los nombres de los encabezados, la disponibilidad y la semántica de restablecimiento varían según el proveedor y la ruta.

Reserva tokens antes del envío y luego concílialos

La reserva de tokens es la diferencia más importante entre un corredor y un contenedor de reintento. El corredor necesita una estimación de la demanda antes de enviar la solicitud.

Para los tokens de entrada, realice una estimación a partir de los mensajes serializados, las definiciones de herramientas, el esquema de salida estructurada y cualquier contexto recuperado. Para los tokens de salida, utilice el máximo de solicitud cuando esté disponible, o una estimación específica del modelo y la carga de trabajo cuando el cliente no proporcione una. Mantenga el presupuesto adjunto a la reserva para poder compararlo con el uso real más adelante.

Un registro de reserva simple puede contener:

  • Un ID de solicitud y reserva único.
  • Inquilino, aplicación, API clave, ruta y clase de carga de trabajo.
  • Tokens de entrada estimados, tokens de salida, tokens totales y gasto.
  • Cada segmento cobrado por la reserva.
  • Hora de creación, hora de vencimiento, fecha límite de cola y clave de idempotencia.
  • Uso real final y monto liberado o cobrado durante la conciliación.

Las estimaciones conservadoras reducen las respuestas del proveedor 429, pero pueden bloquear la capacidad. Mida el error de estimación por modelo, ruta, familia de indicaciones, duración del contexto y modo de salida estructurada. Luego ajuste las estimaciones utilizando correcciones limitadas en lugar de permitir que una única solicitud inusual distorsione todo el modelo.

La transmisión requiere una política específica. Puede reservar la asignación de salida máxima y liberar la parte no utilizada cuando finalice la transmisión, o reservar capacidad de salida en incrementos más pequeños a medida que lleguen los tokens. Es más fácil razonar sobre el primer enfoque; el segundo puede mejorar la utilización, pero requiere un manejo confiable de cancelación, tiempo de espera y desconexión.

Aplicar cuotas jerárquicamente

La capacidad debe comprobarse desde la política más limitada hasta el recurso compartido más amplio. Una jerarquía típica es:

  1. API clave o identidad de servicio.
  2. Aplicación y entorno.
  3. Inquilino del equipo o del cliente.
  4. Cuenta de socio o revendedor.
  5. Espacio de trabajo o subcuenta del proveedor.
  6. Proyecto u organización proveedora.
  7. Modelo y ruta.

Por lo tanto, una solicitud de una aplicación de socio puede necesitar cuatro reservas exitosas: la política de simultaneidad del socio, el presupuesto del token del inquilino del cliente, la asignación de ruta de la puerta de enlace y la cuota disponible del proyecto del proveedor. Si alguna reserva falla, libere las reservas ya adquiridas y aplique la decisión del depósito fallido.

Para ser justos, utilice colas justas ponderadas o round robin deficitario en lugar de permitir que el trabajador que llegue primero consuma el grupo compartido. Asigne ponderaciones más altas al tráfico de producción y ponderaciones más bajas a los trabajos en segundo plano, preservando al mismo tiempo los créditos en ráfaga para cada inquilino. La partición estricta es más fácil de explicar, pero puede dejar capacidad inactiva cuando un inquilino está en silencio. El uso compartido ponderado generalmente utiliza la capacidad de manera más eficiente, siempre que los inquilinos ruidosos tengan límites de ráfaga acotados.

Diseñar colas en torno a contratos de cargas de trabajo

Una cola no es automáticamente una característica de confiabilidad. Puede convertir un 429 visible en un retraso invisible de diez minutos. Cada clase de cola necesita una fecha límite, un comportamiento de cancelación, una profundidad máxima y una acción de sobrecarga.

  • Interactivo: Plazo corto, cola pequeña, rechazo predecible o degradación del modelo cuando la capacidad no está disponible.
  • Antecedentes de producción: Fecha límite más larga, cola duradera, clave de idempotencia y presupuesto de reintento controlado.
  • Socio: Cuotas específicas de inquilinos, metadatos de respuesta publicados y sin acceso al estado de cola de otro inquilino.
  • Batchable: Ejecución retrasada, cola más grande y enrutamiento opcional a un lote de proveedor API cuando la carga de trabajo lo permite.

La admisión a la cola debería devolver una decisión clara. Dependiendo del contrato API, exponga un 429 o una respuesta de sobrecarga específica de la puerta de enlace con un valor de reintento posterior, un identificador de cola y un código de motivo. No prometa un tiempo de finalización a menos que el sistema pueda hacer cumplir esa promesa.

El procesamiento por lotes puede eliminar el trabajo no interactivo de la capacidad síncrona, pero cambia el tiempo de resultados, el comportamiento de reintento, la cancelación y la conciliación. Trátelo como una ruta de ejecución separada en lugar de simplemente colocar solicitudes sincrónicas en una cola muy larga. Para cargas de trabajo en segundo plano, compare las compensaciones operativas con las políticas de control de costos de AI API y las operaciones por lotes existentes.

Centralizar el manejo de reintentos y sobrecargas

Hecho: Las respuestas de límite de velocidad temporal suelen utilizar HTTP 429, mientras que las condiciones de sobrecarga del proveedor pueden utilizar 503 o un código de error específico del proveedor. Algunos proveedores devuelven un encabezado Retry-After y la documentación del proveedor recomienda respetarlo cuando esté presente. Una rampa de tráfico rápida también puede producir un comportamiento de aceleración o desaceleración sin el agotamiento normal del cubo.

Recomendación: Trate el reintento posterior como un límite inferior, no como una sugerencia opcional. Pause el alcance del proveedor afectado hasta ese momento, agregue jitter limitado para evitar reactivaciones sincronizadas y deje que el agente decida qué solicitudes en cola pueden usar la capacidad recuperada.

Cuando Retry-After está ausente o no es válido, utilice un retroceso exponencial limitado con fluctuación. Mantenga el presupuesto de reintento en el intermediario, no por separado en cada SDK y adaptador de proveedor. De lo contrario, una solicitud lógica puede producir un reintento de puerta de enlace, un reintento SDK, un reintento de cliente HTTP y una repetición del lado del proveedor.

Clasificar errores antes de volver a intentarlo:

  • Capacidad reintentable: 429 temporal o respuesta de cuota transitoria documentada.
  • Sobrecarga reintentable: 503 temporal o señal de sobrecarga de proveedor equivalente.
  • Error de política que no se puede reintentar: Cuota diaria, límite de gasto, proyecto deshabilitado o límite de inquilinos.
  • Error de solicitud no reintentable: Esquema no válido, parámetro no admitido, error de autenticación o entrada con formato incorrecto.
  • Error en la fecha límite: Una solicitud cuyo usuario restante o fecha límite de flujo de trabajo es más corto que el siguiente intento seguro.

La alternativa es una decisión independiente. Un proveedor diferente puede tener diferentes comportamientos de salida, precios, latencia, residencia o límites de contexto. Utilice el respaldo solo cuando la política de ruta confirme que el contrato de carga de trabajo puede tolerar esas diferencias.

Exponer decisiones y medir la saturación

Los equipos no pueden solucionar problemas de limitación si la puerta de enlace devuelve solo un 429 genérico. Devuelve metadatos seguros, como el límite aplicable, la capacidad restante, el tiempo de reinicio, la decisión de la cola, la clase de carga de trabajo y el motivo del rechazo. Evite exponer el uso de otro inquilino o las credenciales sin procesar del proveedor.

Como mínimo, monitoree:

  • Tasa de éxito y rechazo de reservas por inquilino, ruta y segmento.
  • Profundidad de la cola, tiempo de espera de la cola, vencimientos de plazos y cancelaciones.
  • Tasas de proveedor 429 y 503, frecuencia de reintento posterior y tasa de rechazos graduales.
  • Uso de token estimado versus real y capacidad desperdiciada por exceso de reservas.
  • Saturación de simultaneidad y porcentaje de capacidad consumida por cada inquilino.
  • Reintentos por solicitud lógica y frecuencia de respaldo.
  • Cuota diaria y margen de margen de gasto.

Las pruebas de carga deben incluir tráfico en ráfagas, solicitudes de contexto prolongado, solicitudes de salida máxima, desconexiones de transmisión, agotamiento de la cuota diaria, respuestas de los proveedores 429 y 503 y un inquilino ruidoso que compite con el tráfico de producción. Valide no solo si las solicitudes finalmente se completan, sino también si los plazos de la cola, la equidad y los presupuestos de reintento permanecen intactos.

Lista de verificación de implementación

  • Defina dimensiones canónicas sin descartar los límites específicos del proveedor.
  • Asigne a cada solicitud un inquilino normalizado, una ruta, una clase de carga de trabajo y una clave de idempotencia.
  • Estime y reserve entradas, salidas, tokens totales, gastos, solicitudes y simultaneidad antes del envío.
  • Haga que las reservas de varios depósitos sean atómicas y caduque las reservas abandonadas de forma segura.
  • Concilie el uso real del proveedor y los encabezados de respuesta después de cada intento.
  • Utilice equidad ponderada, créditos en ráfaga y clases de prioridad explícitas.
  • Asignar a cada cola una fecha límite, una profundidad máxima y una acción de sobrecarga.
  • Centralizar los reintentos y respetar los valores de reintento posterior del proveedor.
  • Separe los errores de capacidad temporales de los errores permanentes de política y solicitud.
  • Publicar metadatos de limitación y supervisar la saturación por inquilino y ruta.
  • Pruebe el agotamiento de la cuota del proveedor, los límites de rampa, la transmisión, el respaldo y el comportamiento de vecinos ruidosos.

Conclusión

Una puerta de enlace multimodelo debe administrar la cuota del proveedor como capacidad de infraestructura compartida, no como una colección de configuraciones SDK independientes. Un corredor de límite de tarifas neutral para el proveedor brinda a los equipos de la plataforma una vía de admisión, una política de equidad, un presupuesto de reintento y un lugar para conciliar las estimaciones con la realidad.

El diseño requiere más que un depósito de tokens genérico. Debe representar solicitudes, tokens de entrada y salida, cuotas diarias, ventanas de gasto, simultaneidad, alcance del proveedor y tasa de rampa. Una vez que esas dimensiones son explícitas, la puerta de enlace puede tomar decisiones predecibles: enviar ahora, hacer cola con una fecha límite, deshacerse del trabajo, volver a intentarlo de forma centralizada o utilizar un respaldo seguro para el contrato. Así es como el control del rendimiento se convierte en una capacidad operativa en lugar de una fuente recurrente de incidentes de producción 429 y 503.

Lectura relacionada

FAQ

Preguntas frecuentes

¿La limitación de velocidad debería ocurrir en cada adaptador de proveedor o solo en la puerta de enlace?
La puerta de enlace debe tomar la decisión de admisión autorizada porque puede ver todos los inquilinos, aplicaciones, claves, rutas y reintentos. Los adaptadores de proveedores aún deben traducir encabezados, errores y dimensiones de cuota específicos del proveedor al modelo canónico del corredor.
¿Debería el corredor reservar el máximo número de tokens de salida posibles?
Por lo general, conviene reservar un máximo acotado o un presupuesto calibrado antes del envío y conciliar la reserva una vez finalizado. Las reservas máximas reducen el riesgo del proveedor 429, pero pueden desperdiciar capacidad, por lo que debe medir el error de estimación y ajustar los límites por modelo y carga de trabajo.
¿Cuándo se deben poner en cola las solicitudes excedentes en lugar de rechazarlas?
La cola funciona cuando su fecha límite puede tolerar la espera y la cola tiene un límite de capacidad explícito. Las solicitudes interactivas con plazos cortos normalmente deben descartarse, degradarse o enrutarse de manera diferente en lugar de ocultarse detrás de una cola ilimitada.
¿Un 429 siempre significa que se debe volver a intentar la solicitud?
No. Vuelva a intentar solo respuestas de capacidad temporal que sean seguras dentro de la fecha límite de solicitud y vuelva a intentar el presupuesto. El agotamiento de las cuotas diarias, los límites de gasto, las solicitudes no válidas, los errores de autenticación y los proyectos deshabilitados generalmente requieren un rechazo o una acción política en lugar de intentos repetidos.