Guía de Solución de Errores en APIs de IA
Trabajar con APIs de inteligencia artificial implica encontrarse con errores. Esta guía te ayuda a diagnosticar y solucionar los problemas más comunes.
Si estás aprendiendo a usar APIs de IA, el curso de Claude Code te enseña las mejores prácticas para evitar estos errores.
Errores de Autenticación (401/403)
Error 401: Unauthorized
Mensaje: "Invalid API key" o "Authentication failed"
Causas:
- API key incorrecta o expirada
- Key no configurada en variables de entorno
- Formato incorrecto del header
Solución:
# Verificar que la key está configurada
echo $OPENAI_API_KEY
echo $ANTHROPIC_API_KEY
# Verificar formato correcto
# OpenAI: "Bearer sk-..."
# Claude: "x-api-key: sk-ant-..."Consulta nuestro tutorial de Claude API para configurar correctamente tu API key.
Error 403: Forbidden
Causas:
- Sin permisos para el modelo/endpoint
- Región no soportada
- Cuenta suspendida
Solución: Verifica el estado de tu cuenta en el dashboard del proveedor.
Errores de Rate Limit (429)
Error 429: Too Many Requests
Mensaje: "Rate limit exceeded"
Causas:
- Demasiadas peticiones por minuto
- Exceso de tokens por minuto
- Tier de uso bajo
Solución:
import time
from tenacity import retry, wait_exponential, stop_after_attempt
@retry(wait=wait_exponential(min=1, max=60), stop=stop_after_attempt(5))
def call_api(prompt):
return client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}]
)Errores de Cuota (402/insufficient_quota)
Error: Insufficient Quota
Causas:
- Sin créditos en la cuenta
- Límite de gasto alcanzado
- Método de pago inválido
Solución:
- Verifica saldo en el dashboard
- Añade créditos o actualiza método de pago
- Aumenta límites de gasto si es necesario
Consulta nuestra guía de precios de APIs de IA para planificar tu presupuesto.
Errores de Timeout
Error: Request Timeout
Causas:
- Prompt muy largo procesándose
- Problemas de red
- Servidor sobrecargado
Solución:
import httpx
client = anthropic.Anthropic(
timeout=httpx.Timeout(300.0, connect=10.0) # 5 min timeout
)Errores de Contenido
Content Policy Violation
Mensaje: "Content blocked by safety filters"
Causas:
- Prompt contiene contenido prohibido
- Modelo detecta intención maliciosa
- Filtros de seguridad muy estrictos
Solución:
- Reformula el prompt de forma más neutral
- Evita palabras clave sensibles
- Ajusta safety settings si la API lo permite
Errores de Formato
Error 400: Bad Request
Causas comunes:
- JSON malformado
- Parámetros faltantes o inválidos
- Modelo no existe
Ejemplo de validación:
def validate_request(messages, model, max_tokens):
if not messages:
raise ValueError("Messages cannot be empty")
if max_tokens < 1 or max_tokens > 4096:
raise ValueError("max_tokens must be 1-4096")
valid_models = ["claude-3-5-sonnet-20241022", "gpt-4-turbo"]
if model not in valid_models:
raise ValueError(f"Invalid model: {model}")Errores Específicos por Proveedor
OpenAI
| Error | Solución |
|---|---|
| context_length_exceeded | Reduce el prompt o usa modelo con más contexto |
| model_not_found | Verifica nombre exacto del modelo |
| billing_hard_limit_reached | Aumenta límite en billing settings |
Para comparar OpenAI con otras opciones, revisa nuestra comparativa OpenAI vs Claude API.
Anthropic (Claude)
| Error | Solución |
|---|---|
| overloaded_error | Retry con backoff exponencial |
| invalid_request_error | Verifica formato de mensajes |
Google (Gemini)
| Error | Solución |
|---|---|
| SAFETY_BLOCK | Ajusta safety_settings |
| RECITATION | Reformula para evitar copia directa |
Patrón de Manejo de Errores Robusto
import anthropic
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def safe_api_call(prompt, max_retries=3):
for attempt in range(max_retries):
try:
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
except anthropic.RateLimitError:
wait = 2 ** attempt
logger.warning(f"Rate limit, waiting {wait}s")
time.sleep(wait)
except anthropic.AuthenticationError:
logger.error("Invalid API key")
raise
except anthropic.APIError as e:
logger.error(f"API error: {e}")
if attempt == max_retries - 1:
raise
raise Exception("Max retries exceeded")Conclusión
La mayoría de errores en APIs de IA tienen soluciones simples. Implementa manejo de errores robusto desde el inicio y ahorra horas de debugging.
Para una visión general de todas las APIs disponibles, consulta nuestra guía completa de APIs de IA. Y si quieres dominar estas herramientas, no te pierdas el curso de Claude Code.