Menu

Ho ridotto del 70% la spesa per l’API LLM: note pratiche sull’utilizzo di AirAi per la gestione delle rotte e della cache

0. Contesto: Come è scoppiato il problema con le fatture

Lavoro a diversi progetti paralleli (side projects) e, all’inizio, o dovevo sopportare la spesa di un abbonamento ufficiale che costava 20 dollari al mese, oppure affrontare il rifiuto delle mie carte di credito internazionali. Alla fine del mese, ho fatto i conti e ho scoperto due cose molto frustranti:

  1. L’80% delle richieste riguardava operazioni semplici come la sintesi dei dati, la classificazione e la formattazione; utilizzare i modelli più costosi per queste operazioni era semplicemente uno spreco;

  1. L’abbonamento rappresentava una spesa fissa: quando le richieste erano poche, ne risultavo in perdita, mentre quando erano molte, non era sufficiente per coprire i costi.

Quindi ho optato per AirAi: ho utilizzato la mia chiave API, pagando in base al consumo, e ho indirizzato il client verso la sua interfaccia compatibile con OpenAI.

C'è anche un piccolo aneddoto. Non ho mai avuto una carta di credito internazionale decente; ogni volta che provavo a pagare tramite il collegamento diretto con il servizio ufficiale, venivo rifiutato. Per un po' ho usato la carta di un familiare, ma questo ha attivato i controlli di sicurezza e il mio account è stato bloccato. Ho dovuto presentare un reclamo e aspettare quasi due settimane prima che venisse sbloccato. Da allora, ho deciso di cercare soluzioni che non richiedessero l'uso di carte di credito internazionali. L'ultimo gateway che ho utilizzato accetta solo USDT, il che per me, che non ho una carta internazionale, rappresenta il metodo con i requisiti più semplici: basta caricare i fondi per poterli utilizzare immediatamente, senza costi mensili né procedure di verifica dell'identità (KYC). Il fattore più importante, però, è il prezzo: secondo i miei calcoli, il costo unitario è circa la metà rispetto a quello del collegamento diretto con il servizio ufficiale. Questo è davvero il motivo principale per cui ho scelto di utilizzare questo gateway.

1. Switch di riga: punta a qualsiasi gateway compatibile

Quasi tutti i client che supportano endpoint personalizzabili (Claude Code, Cursor, Open WebUI, LibreChat, Cline…) possono essere configurati utilizzando una singola variabile d’ambiente, senza la necessità di modificare il codice. Basta impostare le due variabili seguenti per puntare al proprio gateway:

export OPENAI_BASE_URL="https://api.airai.cc/v1"
export ANTHROPIC_BASE_URL="https://api.airai.cc/v1"

Scegliere quale gateway utilizzare è un’altra questione; in questo articolo ci occupiamo soltanto dei metodi di implementazione.

2. Esempi pratici di codice: routing + caching

Non basta semplicemente cambiare la sorgente di luce; il modo vero per risparmiare denaro è “far sì che il modello giusto esegua il lavoro giusto + memorizzare le richieste ripetute”. Ecco lo scheletro che uso nella produzione (compatibile con l’OpenAI SDK): sia base_url che api_key vengono letti dalle variabili d’ambiente, e non sono fissati direttamente nel codice:

import openai, hashlib, os

client = openai.OpenAI(
    base_url=os.getenv("OPENAI_BASE_URL"),
    api_key=os.getenv("OPENAI_API_KEY"),
)

# Routing: small model for light tasks, flagship only for complex reasoning
CHEAP  = "gpt-5.6-luna"   # classification / summarization / formatting
STRONG = "gpt-5.6-sol"    # only called for complex reasoning

_cache: dict[str, str] = {}   # swap for Redis in production

def ask(prompt: str) -> str:
    model = STRONG if len(prompt) > 400 else CHEAP
    key = hashlib.md5(prompt.encode()).hexdigest()
    if key in _cache:                      # cache hit, 0 cost
        return _cache[key]
    resp = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
    )
    answer = resp.choices[0].message.content
    _cache[key] = answer
    return answer

Regola i parametri “CHEAP” e “STRONG” in base al tuo budget e ai risultati desiderati. Il nome del modello deve essere conforme alla documentazione del gateway che stai utilizzando. Per le attività offline, ricorda di utilizzare l’interfaccia Batch: di solito puoi risparmiare ancora la metà delle spese.

3. Confronto dei costi (esemplificativo)

Prima e dopo la modificaEsempioDati (i numeri reali devono essere basati sulle tue fatture):

Progetto

Abbonamento ufficiale / Connessione diretta

AirAi + Caching del routing

Modalità di fatturazione

Abbonamento mensile fisso / Prezzo ufficiale

Fatturazione a consumo

Modello leggero

Modello di punta (più costoso)

Modello più piccolo (più economico)

Richieste ripetute

Ricalcolo del prezzo a prezzo pieno

Caché: 0 costi

Costo per l’esperienza utente

Riferimento di base: 100%

Circa il 10–30% (a seconda del numero di richieste)

4. Onestà (diciamo la verità)

  • Non è sempre più conveniente per tutti:– Quando il numero di richieste mensili è molto basso, un abbonamento fisso può essere più vantaggioso; il pagamento a consumo può risultare più economico solo quando il numero di richieste è elevato. Calcola prima il tuo proprio utilizzo.

  • Latenza e stabilità:– L’aggiunta di un ulteriore gateway comporta un po’ di ritardo, soprattutto nei percorsi chiave, con possibili timeout e problemi di degradazione delle prestazioni.

  • Sicurezza delle chiavi:– Non memorizzare le chiavi nelle variabili di ambiente, né scriverle direttamente nel front-end o in repository pubblici.

5. Riassunto

L'essenza di ridurre i costi legati agli LLM (Large Language Models) può essere riassunta in una frase: far sì che i modelli più economici svolgano la maggior parte del lavoro, utilizzare quelli più costosi solo quando necessario, e eliminare ogni spreco di risorse (token); inoltre, cambiare l'approccio da "collaborare con N aziende" a "modificare una singola riga di codice" (base_url). I meccanismi di routing e caching sono due strumenti gratuiti che possiamo utilizzare subito.


È stato utile?

Supporto tecnicoAssistenza online
侧栏
Torna in alto
简体中文ZH-CNDefault繁體中文ZH-TWEnglishEN日本語JA한국어KOภาษาไทยTHTiếng ViệtVIBahasa IndonesiaIDEspañolESFrançaisFRDeutschDEРусскийRUPortuguêsPTItalianoITالعربيةAR