Perché il conto è esploso
Quando il team ha introdotto per la prima volta l'IA generativa, ha inviato ogni richiesta dell'utente al modello più recente e capace. Con la crescita del traffico, i costi per singola richiesta sono aumentati di pari passo e il foglio di calcolo del CFO mostrava una spesa che superava la crescita degli utenti. La solita soluzione rapida — "usa solo un modello più economico" — fallisce in produzione perché diverse query richiedono diversi livelli di ragionamento. La vera leva è come viene inviata la richiesta, non quale modello viene utilizzato sempre.
Costruire uno strato di routing che faccia risparmiare denaro
L'ingegnere ha trattato il servizio di inferenza come qualsiasi altro componente di produzione: definire i livelli (tier), stabilire gli SLA e imporre budget di latenza. L'architettura risultante ha quattro parti mobili che insieme garantiscono una riduzione del 95%.
Routing a livelli
Un front-end leggero classifica ogni richiesta in entrata in base alla difficoltà. Circa il 95% delle query finisce in un livello "economico" che utilizza un modello modesto; solo il 5% più difficile viene scalato verso un modello premium. La classificazione può essere basata su regole (ad es. lunghezza, presenza di parole chiave specifiche del dominio) o appresa dai dati storici di escalation. Impostando come predefinito il livello a basso costo, il costo mensile del chatbot è sceso da 420 $ a 28 $.
Dimensionamento ottimale dei modelli
Abbinare la capacità del modello alla complessità del compito offre i maggiori risparmi:
- Chat semplice – usa un modello leggero invece del modello di punta (risparmio del 97,5%).
- Classificazione – sostituisci un modello di medie dimensioni con un'alternativa più economica (risparmio del 98,3%).
- Riassunto – sostituisci il modello di fascia alta con uno di fascia media (risparmio del 97,2%).
I nomi esatti dei modelli non sono critici; il principio è mantenere il modello più capace in riserva per le poche query che ne hanno davvero bisogno.
Caching intelligente
Ogni cache hit elimina una chiamata di rete e un addebito API. Una cache Redis distribuita memorizza le risposte di successo e anche le risposte "negative" ("Non lo so"). Quando la stessa domanda senza risposta riappare, il sistema restituisce il "Non lo so" memorizzato nella cache invece di invocare il modello una seconda volta. Su migliaia di richieste, questo da solo riduce una parte significativa del conto.
Compressione dei prompt
I prompt lunghi aumentano l'uso dei token, il che si traduce direttamente in costi. Il team esegue un riassuntore economico sul lato client o in una fase di pre-elaborazione, riducendo un contesto da 2.000 token a circa 400 token prima che raggiunga il modello costoso. La riduzione dei token si moltiplica su tutte le richieste, garantendo enormi risparmi senza cambiare l'esperienza dell'utente finale.
Batching strategico
Il batching raggruppa più richieste indipendenti in una singola chiamata API. La regola empirica è semplice: se un utente sta aspettando una risposta, non fare batching; se la richiesta viene eseguita in background (report notturni, job pianificati), raggruppa tutto. Solo i job batch notturni riducono la spesa di un altro 10-20%.
Monitoraggio del ciclo di ottimizzazione
Non puoi migliorare ciò che non misuri. L'ingegnere ha impostato quattro metriche settimanali:
- Costo per richiesta suddiviso per livello.
- Tasso di cache hit per ogni percorso di routing.
- Tasso di escalation dai livelli economici a quelli premium.
- Spesa per segmento di client.
Questi numeri fanno emergere eventuali derive — ad esempio, un aumento del tasso di escalation può segnalare che la logica di classificazione è troppo aggressiva o che la qualità del modello economico è degradata. Il team itera su soglie, assegnazioni dei modelli e policy della cache ogni settimana, trasformando il controllo dei costi in un'abitudine piuttosto che in una risposta alle crisi.
In sintesi
Uno strato di routing disciplinato che classifica le richieste, dimensiona correttamente i modelli, esegue un caching aggressivo, comprime i prompt e raggruppa il lavoro in background può tagliare la spesa per le API di IA fino al 95%, mantenendo alta l'affidabilità. Tratta lo stack di inferenza come un servizio di produzione: definisci i livelli, misura i risultati e itera settimanalmente.
