Límites de tasa
Los límites de tasa de OfoxAI garantizan la estabilidad de la plataforma. Conozca las reglas de limitación y optimice su estrategia de llamadas.
Límites predeterminados
OfoxAI funciona con pago por uso, todos los usuarios comparten una estrategia de tasa unificada:
| Elemento | Cuota |
|---|---|
| RPM (solicitudes/minuto) | 100 (agregado por equipo) |
| TPM (tokens/minuto) | Sin límite |
Agregación a nivel de equipo: el RPM se calcula de forma acumulada para toda la organización (equipo). Varias API Keys del mismo equipo comparten una única cuota, lo que evita desde la raíz que la suma de varias Keys rompa los límites de los proveedores upstream. Si necesita una cuota de RPM más alta, contacte a [email protected] para solicitar un ajuste.
Rate Limit Header
Cada respuesta API incluye información sobre los límites de tasa:
x-ratelimit-limit-requests: 100
x-ratelimit-remaining-requests: 95
x-ratelimit-reset-requests: 12s| Header | Descripción |
|---|---|
x-ratelimit-limit-requests | Valor del límite RPM |
x-ratelimit-remaining-requests | Solicitudes restantes |
x-ratelimit-reset-requests | Tiempo de reinicio del límite |
Manejo del error 429
Cuando se alcanza el límite de tasa, la API devuelve 429 Too Many Requests:
from openai import RateLimitError
import time
try:
response = client.chat.completions.create(...)
except RateLimitError as e:
retry_after = float(e.response.headers.get("retry-after", 1))
print(f"Límite alcanzado, esperando {retry_after}s...")
time.sleep(retry_after)Estrategias de optimización
1. Use Prompt Caching
Para system prompts repetidos, habilitar la caché puede reducir el consumo de tokens:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
# El system prompt largo se almacena en caché automáticamente
{"role": "system", "content": "Eres un profesional de...(texto largo omitido)"},
{"role": "user", "content": "Pregunta del usuario"}
]
)Más detalles en Caché de prompts.
2. Procesamiento por lotes
Combine múltiples solicitudes cortas en una sola:
# No recomendado: enviar una solicitud independiente por cada pregunta
for question in questions:
client.chat.completions.create(messages=[{"role": "user", "content": question}])
# Recomendado: combinar en una sola solicitud
combined = "\n".join(f"{i+1}. {q}" for i, q in enumerate(questions))
client.chat.completions.create(
messages=[{"role": "user", "content": f"Responda las siguientes preguntas en orden:\n{combined}"}]
)3. Elija el modelo adecuado
Para modelos recomendados, consulta el Mercado de modelos .
4. Controle max_tokens
Establezca un límite razonable de max_tokens para evitar consumo innecesario de tokens:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Resume en una frase"}],
max_tokens=100 # Limitar longitud de salida
)5. Use respaldo de modelos
Cuando el modelo principal alcanza el límite, cambie automáticamente a un modelo alternativo:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[...],
extra_body={
"provider": {
"fallback": ["anthropic/claude-sonnet-4.6", "google/gemini-3.1-flash-lite-preview"]
}
}
)Más detalles en Respaldo automático.