Buenas prácticas para producción
Qué debes configurar correctamente antes de que una integración gestione tráfico real.
Fiabilidad
- Reintenta los códigos adecuados.
429,500,502,503,529con espera exponencial y variación aleatoria. Nunca reintentes a ciegas400,401,402o403. - Establece tiempos de espera. Una generación larga puede tardar varios minutos sin que haya ningún problema; un socket bloqueado no debería bloquear también tu proceso de trabajo. 120 s es un límite razonable para las llamadas sin streaming.
- Limita la concurrencia con un semáforo en lugar de lanzar todas las solicitudes y reintentar las rechazadas.
- Ten un modelo de respaldo. Si tu modelo principal está sobrecargado, recurrir a uno más pequeño es mejor que devolver un error.
Coste
- Configura
max_tokensen cada llamada. Es un límite de gasto, no una sugerencia. - Selecciona el modelo según la tarea; consulta Control de costes.
- Activa el almacenamiento en caché de prompts para obtener prefijos estables.
- Registra
usagepor solicitud con una etiqueta de tarea para poder atribuir el gasto más adelante.
Seguridad
- Las claves deben estar en variables de entorno o en un gestor de secretos: nunca en el repositorio ni en un paquete de código del cliente.
- Una clave por servicio, para que la revocación sea precisa.
- Nunca construyas prompts concatenando entradas de usuario no fiables con instrucciones; mantén el contenido del usuario en un mensaje
usery las instrucciones ensystem. - Trata la salida del modelo como contenido no fiable. No
evalese contenido ni ejecutes SQL generado con un rol que tenga permisos de escritura.
Observabilidad
- Registra el modelo, la latencia,
usage,stop_reasony tu propio tipo de tarea en cada llamada. - Configura una alerta para la tasa de
stop_reason: max_tokens: un aumento significa que las respuestas se están truncando. - Haz un seguimiento del coste por tipo de tarea, no solo del total. Los totales ocultan qué carga de trabajo ha empeorado.
La alerta más útil es la de truncamiento, no la de errores. Una respuesta truncada devuelve HTTP 200 y parece correcta para tu sistema de monitorización, aunque sea incorrecta para el usuario.