Best practice per la produzione
Cosa sistemare prima che un'integrazione gestisca traffico reale.
Affidabilità
- Ritenta per i codici appropriati.
429,500,502,503,529con backoff esponenziale e jitter. Non ritentare mai alla cieca400,401,402o403. - Imposta i timeout. Una generazione lunga può legittimamente richiedere minuti; un socket bloccato non dovrebbe bloccare anche il worker. 120s è un limite massimo ragionevole per le chiamate senza streaming.
- Limita la concorrenza con un semaforo, anziché inviare tutto insieme e ritentare le richieste rifiutate.
- Prevedi un modello di riserva. Se il modello principale è sovraccarico, passare a un modello più piccolo è meglio che restituire un errore.
Costo
- Imposta
max_tokensa ogni chiamata. È un limite di spesa, non un suggerimento. - Instrada in base all'attività — vedi Controllo dei costi.
- Attiva la cache dei prompt per i prefissi stabili.
- Registra
usageper ogni richiesta, con un'etichetta dell'attività, così da poter attribuire la spesa in seguito.
Sicurezza
- Le chiavi vanno conservate in variabili d'ambiente o in un gestore di segreti — mai nel repository, mai in un bundle client.
- Una chiave per servizio, così la revoca è mirata.
- Non costruire mai i prompt concatenando input utente non attendibili con le istruzioni; mantieni il contenuto dell'utente in un messaggio
usere le istruzioni insystem. - Considera l'output del modello non attendibile. Non
evale non eseguire SQL generato con un ruolo che dispone di permessi di scrittura.
Osservabilità
- Registra il modello, la latenza,
usage,stop_reasone il tipo di attività che hai definito per ogni chiamata. - Imposta avvisi sul tasso di
stop_reason: max_tokens— un aumento indica che le risposte vengono troncate. - Monitora il costo per tipo di attività, non solo il totale. I totali nascondono quale carico di lavoro è peggiorato.
L'avviso più utile riguarda il troncamento, non gli errori. Una risposta troncata restituisce HTTP 200 e sembra corretta al sistema di monitoraggio, pur risultando errata per l'utente.