Torna al blog

Ottimizzazione dei costiAnalisi

Come stimare il costo di un agente AI

Perché le bollette degli agenti sono dominate dai token di input, una formula che puoi eseguire prima dell'agente, un esempio pratico di 30 passi e sette modi per ridurre il costo.

Di CheapTokens TeamPubblicato il 4 min di lettura

Grafico dei token di input che crescono passo dopo passo in una sessione di un agente, accanto alla formula del costo
In questa pagina
  1. La formula
  2. Perché gli agenti sono pesanti sull'input
  3. Un esempio pratico
  4. Stimarlo nel codice
  5. Misura invece di indovinare
  6. Sette modi per ridurre il costo

Un agente AI non fa una sola richiesta — ne fa decine, e ogni passo rinvia la conversazione che cresce. Ecco perché le bollette degli agenti sono dominate dai token di input, e perché l'intuizione del "prezzo per risposta" delle app di chat non funziona. Ecco come stimare il costo prima che l'agente venga eseguito, e dove vanno effettivamente i soldi.

La formula#

Il costo di una richiesta è i token di input moltiplicati per il prezzo di input più i token di output moltiplicati per il prezzo di output. I prezzi sono indicati per milione di token:

text
request_cost = input_tokens / 1,000,000 × input_price
             + output_tokens / 1,000,000 × output_price

Il costo di un'attività è la somma su tutte le richieste che l'agente effettua mentre la risolve.

Perché gli agenti sono pesanti sull'input#

A ogni passo l'agente invia al modello:

  • il prompt di sistema e le definizioni degli strumenti;
  • l'intera cronologia fino a quel momento — messaggi precedenti, le risposte precedenti del modello e i risultati degli strumenti (contenuti dei file, output dei comandi, risultati di ricerca);
  • la nuova istruzione.

Il modello di solito risponde con un messaggio breve o una chiamata a uno strumento. Poi il risultato dello strumento viene aggiunto alla cronologia e il passo successivo invia di nuovo tutto. Quindi l'input di ogni passo cresce, mentre l'output rimane piccolo.

Un esempio pratico#

Condizioni (ipotesi — sostituiscile con i numeri del tuo agente):

  • prompt di sistema e definizioni degli strumenti: 6.000 token;
  • ogni passo aggiunge 1.500 token di risultati degli strumenti e 500 token di output del modello alla cronologia;
  • l'attività richiede 30 passi;
  • modello: DeepSeek-V4-Flash a $0.0221 per 1M token di input e $0.10 per 1M token di output (prezzi attuali).

L'input del passo n è 6.000 + (n − 1) × 2.000 token. Su 30 passi:

  • input totale: 30 × 6.000 + 2.000 × (0 + 1 + … + 29) = 180.000 + 870.000 = 1.050.000 token;
  • output totale: 30 × 500 = 15.000 token;
  • costo: 1,05 × $0.0221 + 0,015 × $0.10 ≈ $0.0247 per attività.

L'input è il 98,6% dei token e quasi tutto il costo. Quanto l'input domini dipende dallo scenario: risposte lunghe, file generati e modelli di ragionamento aumentano la quota di output, mentre una cronologia ridotta e un output degli strumenti breve abbassano la quota di input.

La stessa attività su ogni modello ai prezzi attuali, con i prezzi di riferimento di OpenRouter per confronto:

Modello Costo OpenRouter
GLM-5.3-Flash $0.0296 $0.0534
DeepSeek-V4-Flash $0.0247 $0.0264
MiniMax-M2.7 $0.0548 $0.333

1.050.000 token di input e 15.000 token di output in totale. I prezzi per 1M di token sono attuali e cambiano insieme alle nostre tariffe; la colonna OpenRouter mostra i prezzi di riferimento per lo stesso carico di lavoro.

Stimarlo nel codice#

Lo stesso calcolo come funzione — cambia le ipotesi e i prezzi:

python
def estimate(steps, base_tokens, tool_tokens, out_tokens, price_in, price_out):
    """Token totals and cost of one agent task. Prices: $ per 1M tokens."""
    grow = tool_tokens + out_tokens            # what each step adds to the history
    total_in = steps * base_tokens + grow * steps * (steps - 1) // 2
    total_out = steps * out_tokens
    cost = (total_in * price_in + total_out * price_out) / 1_000_000
    return total_in, total_out, round(cost, 5)

# example rates, $ per 1M tokens — put in the current ones from the pricing table below
print(estimate(30, 6_000, 1_500, 500, price_in=0.10, price_out=0.40))
# (1050000, 15000, 0.111)

Nota il termine quadratico: raddoppiare il numero di passi quadruplica all'incirca l'input. Le sessioni lunghe diventano costose non per un singolo passo, ma perché ogni passo porta con sé l'intera cronologia.

Misura invece di indovinare#

Ogni risposta include usage.prompt_tokens (input) e usage.completion_tokens (output). Registrali per ogni passo di un'attività reale, moltiplicali per le tariffe attuali e ottieni il costo effettivo. La dashboard mostra anche l'utilizzo per modello e per giorno.

Tariffe attuali — gli stessi dati della pagina dei prezzi:

Modello Contesto Input $/1M Output $/1M OpenRouter in OpenRouter out
GLM-5.3-Flash reasoning 390K $0.027 $0.08 $0.048 $0.20
DeepSeek-V4-Flash 380K $0.0221 $0.10 $0.016 $0.64
MiniMax-M2.7 200K $0.05 $0.15 $0.30 $1.20

Prezzi in USD per 1M di token. Le cifre di OpenRouter sono mostrate a scopo di confronto e potrebbero variare.

Sette modi per ridurre il costo#

  1. Inizia una nuova attività per lavori non correlati. Una sessione nuova non porta con sé la cronologia di quella precedente.
  2. Dai all'agente frammenti, non file interi. Una funzione e i suoi chiamanti invece di un modulo di 3.000 righe.
  3. Riduci l'output degli strumenti. Log lunghi e output dei comandi rimangono nella cronologia per il resto della sessione — limitarli, ad esempio con | tail -n 50.
  4. Riassumi le sessioni lunghe. Molti agenti possono compattare la cronologia; usalo prima che il contesto diventi lungo.
  5. Limita la lunghezza della risposta con max_tokens dove le risposte lunghe non servono.
  6. Usa il modello giusto per il passo. I passi di routine non hanno bisogno di un modello di ragionamento.
  7. Mantieni un budget prepagato. Il saldo è prepagato: quando si esaurisce, le richieste si fermano con HTTP 402 invece di accumulare una bolletta senza limiti.

Per vedere come lo stesso carico di lavoro si confronta tra i modelli e con OpenRouter, usa il confronto dei costi nella home page.