Error 401: qué hacer cuando falla llama-3.3-70b-instruct
Un 401 significa que la autenticación falló: la solicitud no lleva API Key, o la clave no es válida, ha sido eliminada o ha caducado.
401 Unauthorized significa que la solicitud no lleva credenciales válidas. El gateway no pudo identificar al llamante, así que la petición nunca llega al modelo upstream. Revisar la cabecera Authorization y el estado de la key es el único camino.
llama-3.3-70b-instruct lo ofrece Meta. Todo en esta página — causas, soluciones y datos medidos — se recopila del comportamiento real de este modelo en la capa de gateway.
En esta pasarela, el desencadenante más común es: Falta la cabecera Authorization. La primera acción recomendada es: Envía la cabecera como Authorization: Bearer seguida de tu clave.
Causas habituales
- Falta la cabecera Authorization
- La clave está mal escrita o tiene espacios sobrantes
- La clave se eliminó o desactivó en la página Tokens
- Se usó por error una clave de otra plataforma
Cómo solucionarlo
- Envía la cabecera como Authorization: Bearer seguida de tu clave
- Genera una clave nueva en la página Tokens
- Comprueba que no uses una clave de otro servicio
- Verifica la clave con una solicitud curl mínima
Reintento con retroceso exponencial
El siguiente código reintenta cuando llama-3.3-70b-instruct devuelve 401: hasta 5 intentos, con espera creciente y jitter aleatorio para que las llamadas concurrentes no reintenten a la vez. Lee la URL base y la API key de variables de entorno, nunca las escribas fijas.
import os, time, random
import requests
BASE = os.getenv("OPENAI_BASE_URL") # e.g. https://<your-gateway>/v1
KEY = os.getenv("OPENAI_API_KEY")
MODEL = 'llama-3.3-70b-instruct'
def chat(messages, retries=5):
"""Retry with exponential backoff + jitter."""
for i in range(retries):
try:
r = requests.post(
BASE + "/chat/completions",
headers={"Authorization": "Bearer " + KEY},
json={"model": MODEL, "messages": messages, "stream": True},
timeout=60,
)
if r.status_code == 429 or r.status_code >= 500:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
continue
r.raise_for_status()
return r.json()
except requests.exceptions.Timeout:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
raise RuntimeError("gave up after " + str(retries) + " retries")
print(chat([{"role": "user", "content": "hello"}]))Datos clave de este modelo
| Endpoint de API | https://api.airai.cc/v1 |
|---|---|
| Compatible con OpenAI | OpenAI-compatible |
| Proveedor | Meta |
|---|---|
| Contexto | 128K |
| Capacidades | Tools, Files, Open Weights |
| Formatos de API | openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search |
| Fórmula de facturación | p * 0 + c * 0 |
Preguntas frecuentes
¿Qué nivel de concurrencia es seguro?
Baja primero la concurrencia: la mayoría de los problemas de rendimiento desaparecen. Este modelo tiene una ventana de contexto de 128K y es de Meta. Un contexto de 128K implica que las entradas largas aumentan la latencia del primer token. Empieza con concurrencia baja, observa unos minutos y luego escala. Suaviza los picos con lotes o una cola: es más estable que subir la concurrencia sobre la marcha.
401 sigue apareciendo en llama-3.3-70b-instruct: ¿problema del modelo o de mi cuenta?
Este error no depende de la capacidad del modelo, es a nivel de gateway. Las etiquetas de capacidad de este modelo son Tools, Files, Open Weights. Decide primero si es a nivel de cuenta o de modelo; el tratamiento es completamente distinto.
¿Provocará el reintento que la solicitud se ejecute dos veces?
Reintentar es el primer paso más eficaz. Con la tarificación p * 0 + c * 0, las peticiones fallidas no cuentan en el uso. Usa backoff exponencial para los errores reintentables y devuelve el error de inmediato para el resto.
¿Puede un max_tokens demasiado alto provocar 401?
Es un problema de configuración del cliente; el servidor no necesita cambios. Las etiquetas de capacidades son Tools, Files, Open Weights y de ahí derivan los límites de parámetros. Para errores de parámetros, falla rápido en lugar de gastar reintentos. Trunca o resume las entradas largas: reduce 401 de forma notable.
Otros errores de este modelo
- llama-3.3-70b-instruct: error 429 — causas y soluciones
- llama-3.3-70b-instruct: error timeout — causas y soluciones
- llama-3.3-70b-instruct: error 500 — causas y soluciones
- llama-3.3-70b-instruct: error 502 — causas y soluciones
- llama-3.3-70b-instruct: error 503 — causas y soluciones
- llama-3.3-70b-instruct: error 504 — causas y soluciones
- llama-3.3-70b-instruct: error 403 — causas y soluciones
- llama-3.3-70b-instruct: error 400 — causas y soluciones
Otros modelos con el mismo error
- gpt-5
- claude-opus-5
- gemini-2.5-pro
- deepseek-v4-pro
- grok-4.3
- qvq-max
- qwq-32b
- glm-5
- MiniMax-M3
- kimi-k3
- hy3
- doubao-seed-evolving
- mimo-v2.5
- gpt-4o
- claude-opus-4-6
- gemini-2.5-flash
Datos actualizados: 2026-10-10 18:35