AI & MCP

Costo per task di un agente: la formula e dove si perde

Il costo per task è la somma di ogni chiamata, non il prezzo per token: dieci passi e due retry sono dodici prompt ripagati. Ecco il conto con i listini.

In sintesi

  • Il costo per task è input più output di ogni chiamata, non il prezzo del modello per token.
  • I retry e gli output dei tool pesano più del listino: ogni passo rimanda tutto il contesto.
  • Senza una riga di telemetria per chiamata non puoi attribuire il costo a un cliente o a una funzione.

Il costo per task di un agente è la somma di ogni chiamata del task, non il prezzo del modello per token: dieci passi con due retry sono dodici prompt che ripagano il contesto dodici volte.

La formula in una riga

node -e "const u={input:360000,output:9600,cached:0};const p={in:0.15,out:0.60,cache:0.003};const c=(u.input-u.cached)/1e6*p.in+u.cached/1e6*p.cache+u.output/1e6*p.out;console.log(c.toFixed(4),'USD per task')"

Il comando stampa 0.0598 USD per task: 360.000 token di input a 0,15 $ per milione più 9.600 di output a 0,60 $. I tre addendi sono sempre gli stessi: input non in cache, input in cache e output. Il campo usage della risposta API porta i primi due separati, e senza quella separazione il conto sbaglia di un ordine di grandezza.

Quattro scenari, stesso task

ScenarioInput / output per 1MCosto del task1.000 task
deepseek-flash, cache miss0,15 $ / 0,60 $0,0598 $59,80 $
deepseek-flash, cache hit0,003 $ / 0,60 $0,0068 $6,84 $
gpt-5.3-codex, standard1,75 $ / 14 $0,7644 $764,40 $
gpt-5.3-codex, fast3,50 $ / 28 $1,5288 $1.528,80 $

La riga con cache hit assume che tutto l'input sia in cache: è il massimo dello sconto, non la norma. Nella pratica una parte del prompt cambia a ogni passo, quindi il risparmio sta fra le due righe. La colonna dei 1.000 task è il costo del task moltiplicato: serve a vedere che una differenza di centesimi diventa una fattura.

Dove si perde il budget

  • Retry: ogni nuovo tentativo rimanda il contesto intero, quindi un retry non costa un decimo del task, costa un passo completo.
  • Output dei tool: un risultato da 20.000 token resta nel contesto per tutti i passi successivi, e viene ripagato ogni volta.
  • Cache invalidata: una data o un elenco in ordine casuale in testa al prompt riporta l'input al prezzo pieno.
  • Output verboso: un modello che scrive 2.000 token invece di 800 raddoppia la voce meno cara ma non gratis.

Misurare, non stimare

Il conto si fa sui log, non sui preventivi: per ogni chiamata registra modello, token di input, token in cache, token di output, numero di passi e identificativo del task. In EneUI la riga mcp_call porta nome del tool e piano, quindi il costo si attribuisce a un account senza ricostruirlo dagli access log. Se la telemetria non ha l'identificativo del task, il cliente paga una media e tu non sai quale funzione costa.

Attribuire e preventivare

Con il costo per task misurato, la previsione è una moltiplicazione: costo medio per task per numero di task al mese, più una quota per i task che falliscono. Un agente che chiude il 70% dei task al primo tentativo ha un costo per task riuscito più alto del costo per task, e la differenza è esattamente ciò che si paga per gli errori. Per scegliere il modello con questa metrica la procedura è in un altro articolo; qui interessa il conto di esercizio.

La limitazione

I listini cambiano e il tasso di cache reale non è quello della tabella: le due righe deepseek-flash sono un limite superiore e inferiore, non due misure. Il conteggio ignora il costo umano della revisione, che su un task di codice può superare quello dei token, e ignora il tempo di attesa, che non è gratis per l'utente. Un conto onesto tiene separati token, revisione e latenza.

Dove continuare

La scelta del modello con costo per attività riuscita è in valutare un modello per il codice, l'aritmetica delle fasce di prezzo in contesto lungo: costi reali, l'ordine dei passi in orchestrare agenti multi-step. Il catalogo che alimenta gli esempi è in 111.985 componenti e 1.556 blocchi; un record con licenza MIT dichiarata a monte è agent dock di dqnamo.

Domande frequenti

Come calcolo il costo di un singolo task?

Somma input e output di ogni chiamata del task, leggendo il campo usage di ogni risposta. Con 12 chiamate da 30.000 token di input e 800 di output, deepseek-flash costa 0,0598 $ senza cache e 0,0068 $ con tutta la cache, ai listini del 1 novembre 2026.

Perché i retry costano così tanto?

Perché ogni tentativo rimanda il contesto completo, non solo la parte che ha fallito. Un retry su un task da dieci passi aggiunge un passo intero, quindi il 20% di retry non aggiunge il 20% ma circa un quinto del costo totale.

Posso assumere che tutta l'input sia in cache?

No. La cache colpisce solo il prefisso identico, e basta una data o un elenco in ordine casuale per invalidarla. La riga con cache hit della tabella è il massimo dello sconto, non la norma.

Il modello più economico costa sempre meno per task?

No. Un modello che sbaglia al primo colpo paga un retry completo, e uno che scrive tre volte tanto sposta il conto sull'output. Il confronto va fatto per task riuscito, non per prezzo per token.

Come attribuisco il costo a un cliente?

Con una riga di telemetria per chiamata che porta identificativo dell'account, del task e del tool. In EneUI la riga mcp_call registra nome del tool e piano: senza identificativo del task il costo resta una media, non un'attribuzione.