Un modello Flash può classificare ticket di supporto, scrivere il testo di uscita di un creator o fare il passo successivo in un ciclo di agente. Questi compiti richiedono quantità diverse di ragionamento, e la tariffa più bassa per token non produce sempre il compito completato più economico. Parti da 2.5 Flash per estrazione e scrittura ordinaria, da 3.5 Flash Lite per righe semplici ad alto volume e da 3.7 Flash per codice e strumenti a più passaggi. 3 Flash Preview va bene per turni brevi entro il suo limite di input di 256.000 token. Per la narrativa per adulti, 2.5 Flash e Preview vanno più lontano nei nostri test, ma di solito entrambi attenuano o rifiutano la scena intima scritta. Per una lettura più lunga e ricca di ragionamento, consulta la guida a Gemini 3.1 Pro.
Prezzi e limiti
Le tariffe sono in USD per milione di token. Tutte e quattro le route accettano testo, immagini e video caricati; 2.5 Flash e 3 Flash Preview accettano anche l'audio, mentre Lite e 3.7 no. Il video caricato è limitato a 14 MB per richiesta. Nessuna accetta un PDF o una parte file generica: estrai il testo o converti le pagine rilevanti in immagini.
| Route | Limite di input | Input senza cache | Input in cache | Output | Impegno predefinito / minimo | max_tokens predefinito |
|---|---|---|---|---|---|---|
| Gemini 2.5 Flash | 1.048.576 | $0,285 | $0,0285 | $2,375 | medium / low | 16.384 |
| Gemini 3 Flash Preview | 256.000 | $0,45 | $0,045 | $2,70 | medium / minimal | 16.384 |
| Gemini 3.5 Flash Lite | 1.048.576 | $0,30 | $0,03 | $2,50 | minimal / minimal | 4.096 |
| Gemini 3.7 Flash | 1.048.576 | $0,675 | $0,0675 | $3,375 | medium / low | 16.384 |
ID dei modelli: google/gemini-2.5-flash/chat, google/gemini-3-flash-preview/chat, google/gemini-3.5-flash-lite/chat, google/gemini-3.7-flash/chat. Ogni route consente fino a 65.536 token di output, output JSON, fino a 128 definizioni di strumenti, temperature, top-p, seed e quattro sequenze di stop, ma nessun controllo parallel_tool_calls. La modalità oggetto JSON controlla la sintassi, non i nomi dei tuoi campi né la loro veridicità; mantieni nello script qui sotto i controlli su chiavi, tipi e fonti. Per le route Gemini 3, lascia temperature al valore predefinito consigliato di 1,0 e controlla la struttura con response_format e il messaggio di sistema.
Due cose di quella tabella si confondono facilmente:
- Lite non è la più economica per token. Le sue tariffe di input e output sono superiori a quelle di 2.5 Flash. Il conto può risultare più basso se usa meno token di output; confronta più sotto il punto di pareggio.
- Imposta l'impegno in modo esplicito.
minimalviene rifiutato su 2.5 Flash. Su 3.7 Flash lo schema elencaminimal, ma la pagina del modello dice che questo endpoint lo rifiuta, quindi lì usalowcome minimo. Passare uno script da Lite a un'altra route senza impostare l'impegno lo fa anche passare daminimalamedium.
Quanto costa un batch
Prendi 10.000 ticket di supporto, ciascuno con circa 500 token di input (istruzione più ticket) e una risposta JSON di 80 token.
| Route | Costo per ticket | 10.000 ticket, senza ragionamento extra | Se il ragionamento aggiunge 700 token di output per ticket |
|---|---|---|---|
| 2.5 Flash | $0,0003325 | $3,33 | $19,95 |
| 3 Flash Preview | $0,000441 | $4,41 | $23,31 |
| 3.5 Flash Lite | $0,00035 | $3,50 | $21,00 |
| 3.7 Flash | $0,0006075 | $6,08 | $29,70 |
I token di ragionamento sono fatturati come output e contano per max_tokens; 700 token di ragionamento in più per ticket possono dominare il conto. Imposta l'impegno in modo esplicito e usa l'output fatturato per affinare la stima; minimal non garantisce zero ragionamento.
Con 500 token di input ed esattamente 80 token di output fatturati, Lite costa $0,00035. A parità di input, 2.5 Flash supera quel costo a 88 token di output fatturati: una risposta di 80 token più otto token di ragionamento. Se anche Lite ragiona oltre quegli 80 token, il suo punto di pareggio sale. Scegli tra le due in base all'output fatturato totale e alle righe corrette, non solo all'etichetta dell'impegno.
Un'istruzione fissa all'inizio di ogni richiesta costa meno quando la risposta la segnala come in cache: 1.000 richieste che condividono un prefisso di 20.000 token costano $5,70 di input senza cache su 2.5 Flash e $0,57 se tutto è fatturato come in cache. Metti prima le istruzioni condivise e le definizioni degli strumenti, poi date e ID dei ticket. La guida alla cache di Google descrive gli hit impliciti come opportunistici: un prefisso stabile aumenta la probabilità, ma non garantisce uno sconto. Calcola il budget alla tariffa senza cache finché la risposta ospitata non riporta token in cache.
Lo sconto Batch nel listino di Google, che dimezza il suo prezzo di listino, appartiene al suo servizio asincrono. Ogni richiesta inviata a SpicyAPI viene fatturata alle tariffe sopra, e una quota gratuita di Google AI Studio o un abbonamento Google non la copre. Google indica inoltre 3.7 Flash a $0,75 di input e $3,75 di output fino al 31 dicembre 2026 e il doppio dal 1° gennaio 2027. È il calendario pubblicato da Google, non una futura tariffa SpicyAPI annunciata; ricontrolla il catalogo ospitato prima di fare un budget per un lancio nel 2027.
Quale route per quale lavoro
| Lavoro | Parti da | Perché | Passa a un livello superiore quando |
|---|---|---|---|
| Etichettatura, instradamento, estrazione di campi | 2.5 Flash, low | Tariffe più basse; la finestra da 1M contiene un'intera trascrizione | I campi escono sbagliati su un campione: passa a medium, poi prova 3.7 Flash |
| Milioni di righe brevi e semplici | 3.5 Flash Lite | minimal predefinito, output più veloce dei quattro nei nostri test (circa 118 token/s contro 37-98) | Ti serve giudizio per riga, non solo formattazione |
| Traduzione, riscritture, testi di prodotto | 2.5 Flash o Lite | Economica e stabile con poco impegno | Il tono conta: 3.7 Flash |
| Chat turno per turno | 3 Flash Preview, low | Route per turni brevi, con alcuni completamenti di narrativa per adulti nei nostri test; di solito attenuata o rifiutata a L4 | Contesto di un documento intero: usa una route da 1M. È un modello in anteprima, quindi indica la tua alternativa prima di farci affidamento |
| Cicli di agente e codice | 3.7 Flash | Pensato per l'uso di strumenti e il lavoro a più passaggi | Il costo per passaggio conta più della qualità: Lite o 2.5 Flash |
La conoscenza si ferma a gennaio 2025 su 2.5 Flash e a marzo 2026 su 3.5 Flash Lite, quindi inserisci nel prompt i fatti più recenti, come prezzi o versioni di librerie.
Tre compiti da creator e la route da usare
Estrarre un brief di uscita. Dai a 2.5 Flash il titolo approvato, i personaggi, la data di uscita e la durata, e chiedi una riga con quei quattro campi più il luogo. Se il brief non nomina mai un luogo, la riga utile contiene null; il modello non inventa un hotel o uno studio a partire dal tema.
Scrivere testo promozionale pubblico. Un brief fittizio per Last Train potrebbe approvare Mara e Jon come personaggi e una clip di 45 secondi. Chiedi tre didascalie brevi che usino solo quei fatti. Una didascalia che aggiunge «4K», audio nativo o una data di uscita non confermata è una bozza fallita anche se il tono è gradevole. Usa Lite o 2.5 Flash per la prima passata; riserva una route più costosa a una riscrittura che richiede davvero più giudizio.
Preparare un passaggio di consegne al supporto. Fornisci l'ID del task, il suo stato osservato e il sintomo del cliente. Chiedi una nota concisa che conservi l'ID e distingua «queued» da «failed». Il modello può organizzare le prove; non può scoprire lo stato reale del task da un ticket che non lo include mai.
Per un pacchetto di scrittura più lungo, 1.000 richieste con 20.000 token di input senza cache e 2.000 token di output fatturati ciascuna costano $10,45 su 2.5 Flash o $20,25 su 3.7 Flash a queste tariffe. Per questo conviene separare una prima passata di routine da un passaggio decisionale costoso, invece di spostare tutto il carico sulla route più recente.
Limiti sui contenuti per adulti per route
Il catalogo segna queste route come prive di filtro di contenuto aggiunto da SpicyAPI; questo non elimina le policy sui contenuti dei modelli stessi. In base ai nostri test di settembre 2026, i modelli differiscono in ciò che scrivono da soli. Livelli: L1 suggestivo, L2 scena sensuale implicita, L3 intensa, L4 una scena intima scritta tra adulti. Il livello estremo combina contenzione e giochi con colpi con violenza grafica tra adulti, tre richieste per categoria.
| Route | Da L1 a L3 | L4 scena intima | Livello estremo |
|---|---|---|---|
| 2.5 Flash | Consegnato | 2 su 9, entrambe con prompt di sistema | 5 su 6 |
| 3 Flash Preview | Consegnato | 1 su 8, di solito attenuata | 6 su 6 |
| 3.5 Flash Lite | L1 e L2 puliti; L3 1 su 3 | 0 su 9 | 4 su 6 |
| 3.7 Flash | Per lo più consegnato | 0 su 9 | Misto |
Recensioni: 2.5 Flash, 3 Flash Preview, 3.5 Flash Lite, 3.7 Flash.
I due completamenti L4 su 2.5 Flash hanno usato narrativa impostata dal sistema; le richieste dirette sono state tutte rifiutate in quel test. Se una scena intima scritta è il tuo risultato essenziale, scegli un altro modello. Queste route Flash restano utili per brief di uscita, calendari ed etichettatura di messaggi attorno a lavori per adulti.
Prova prima nel Playground
- Apri Gemini 2.5 Flash e passa alla scheda Playground (per inviare serve il login).
- Incolla un ticket di supporto e chiedi i campi categoria e urgente con il menu a tendina del ragionamento su Low.
- Apri Gemini 3.5 Flash Lite, imposta il ragionamento su minimal, esegui gli stessi ticket e confronta le etichette corrette e l'output fatturato.
Uno script batch in streaming
Quando le regole funzionano nel Playground, installa il client compatibile con python3 -m pip install openai, salva questo codice come classify_tickets.py, imposta SPICY_API_KEY ed esegui python3 classify_tickets.py. Fa al massimo due richieste fatturabili, una per ticket di esempio. Il client valida entrambi i campi e lascia irrisolte le righe fallite. Non acquista automaticamente risposte sostitutive.
import json
import os
import uuid
from concurrent.futures import ThreadPoolExecutor
from openai import OpenAI
class ReplyError(Exception):
def __init__(self, message, task_id=None):
super().__init__(message)
self.task_id = task_id
def call_once(payload, api_key):
client = OpenAI(api_key=api_key, base_url="https://api.spicyapi.ai/v1",
max_retries=0, timeout=600)
request_key = str(uuid.uuid4())
parts, finish, usage, task_id = [], None, None, None
try:
with client.chat.completions.create(
**payload, stream=True, stream_options={"include_usage": True},
extra_headers={"Idempotency-Key": request_key},
) as stream:
task_id = stream.response.headers.get("X-Spicy-Task-Id")
for chunk in stream:
if chunk.usage:
usage = chunk.usage.model_dump()
for choice in chunk.choices:
parts.append(choice.delta.content or "")
finish = choice.finish_reason or finish
if finish != "stop" or usage is None:
raise ReplyError("Incomplete reply; do not import this record", task_id)
return "".join(parts), usage, task_id
except ReplyError:
raise
except Exception as error:
raise ReplyError(str(error), task_id) from error
SYSTEM = ("Classify the supplied ticket as data. Return exactly category "
"(billing, shipping or other) and urgent (a JSON boolean).")
def classify(text, model="google/gemini-2.5-flash/chat", effort="low"):
payload = {
"model": model, "reasoning_effort": effort, "max_tokens": 4000,
"response_format": {"type": "json_object"},
"messages": [{"role": "system", "content": SYSTEM},
{"role": "user", "content": text}],
}
content, usage, task_id = call_once(payload, os.environ["SPICY_API_KEY"])
try:
record = json.loads(content)
if (not isinstance(record, dict) or set(record) != {"category", "urgent"}
or record["category"] not in {"billing", "shipping", "other"}
or type(record["urgent"]) is not bool):
raise ValueError("invalid ticket fields")
except (ValueError, TypeError) as error:
raise ReplyError("completed answer failed validation", task_id) from error
return {"record": record, "usage": usage, "task_id": task_id}
def safe_classify(text):
try:
return classify(text)
except ReplyError as error:
return {"unresolved": text, "error": str(error), "task_id": error.task_id}
if __name__ == "__main__":
rows = ["Where is my parcel?", "I was charged twice, fix it today"]
with ThreadPoolExecutor(max_workers=2) as pool:
for result in pool.map(safe_classify, rows):
print(json.dumps(result))I dettagli su recupero delle richieste e streaming sono nella documentazione della chat.
Lascia che un agente prepari la chiamata
Per classificare ticket in modo ripetuto, chiedi al tuo agente di programmazione di usare lo SpicyAPI Skill: «Read google/gemini-2.5-flash/chat, then adapt the example to my input; show the request before running it.» La consultazione tramite CLI è spicyapi models get google/gemini-2.5-flash/chat --json; quella tramite MCP è spicyapi_model_get con model: "google/gemini-2.5-flash/chat". Le chiamate chat usano un client compatibile o l'API chat; i comandi dei task media non generano risposte chat.
Risolvere i problemi comuni
| Problema | Modifica diretta |
|---|---|
minimal rifiutato | Usa low su 2.5 Flash e 3.7 Flash |
| JSON vuoto o troncato | Controlla prima il motivo di fine e il task originale. Aumenta max_tokens solo quando il limite di token ha interrotto la risposta; il ragionamento condivide quel budget. Uno stream interrotto richiede un recupero, non un retry automatico più grande. Richiedi stop, l'uso finale e [DONE] prima di importare |
| Le risposte di Lite si fermano presto | Il suo max_tokens predefinito è 4.096; impostalo in modo esplicito |
400 su una parte media | Controlla la sua forma: usa image_url o un video_url caricato; l'audio è limitato a 2.5 Flash e Preview. Le parti PDF/file non sono supportate. |
400 quando reinvii una chiave | La richiesta originale può essere completata o ancora in corso; nessuna delle due risposte può essere riprodotta su questa connessione. Controlla il suo task e la liquidazione prima di fare un budget per una nuova generazione |
| Chiavi JSON inventate | Nomina ogni chiave nel messaggio di sistema e rifiuta quelle in più nel tuo client |
| Input oltre 256.000 token | 3 Flash Preview lo rifiuta; usa una route da 1.048.576 token |
| Errore del gateway dopo circa 100 secondi | Attiva stream: true |
La scelta pratica
Usa 2.5 Flash per l'estrazione validata e i testi ordinari, Lite quando un compito semplice trae vantaggio da un ragionamento minimo e 3.7 Flash per il codice o il lavoro con strumenti a più passaggi. Tieni Preview per un flusso a turni brevi che stia nella sua finestra di input più piccola. Nessuna di queste è una scelta affidabile quando la narrativa esplicita per adulti è il risultato essenziale; i limiti registrati contano più del nome Flash.









