Stai sviluppando un'app che deve capire immagini, rispondere a domande su documenti lunghi o automatizzare flussi di lavoro con intelligenza artificiale. E ti trovi davanti a una scelta: quale API AI integrare? Costi, latenza, qualità, flessibilità. Noi, di Meteora Web, abbiamo integrato decine di servizi AI in progetti reali — da assistenti virtuali a sistemi di analisi documentale. E su Gemini API ci abbiamo costruito sopra. Questa è la guida che avremmo voluto trovare quando abbiamo iniziato: niente teoria astratta, solo decisioni concrete, codice funzionante e ragionamenti economici.
Cos’è Gemini API e perché conviene guardarlo da vicino
Gemini API è l'interfaccia programmatica per i modelli di Google DeepMind: Gemini 2.5 Flash e Gemini 2.5 Pro. A differenza di molti competitor, offre multimodalità nativa — testo, immagini, audio, video e documenti nello stesso prompt. E lo fa con una finestra di contesto che arriva a 1 milione di token. Per un'azienda che deve analizzare contratti, cataloghi o intere basi di conoscenza, è un cambio di paradigma: niente chunking forzato, niente riassunti intermedi. Ma la vera domanda è: quanto costa e quanto rende? Esattamente come quando valutiamo un investimento in SEO o ADS, partiamo dai numeri. Ogni chiamata ha un costo per token. Scegliere il modello sbagliato significa bruciare budget. Ed è qui che la nostra esperienza contabile ci aiuta: ragioniamo in termini di marginalità, non solo di prestazioni tecniche.
Setup autenticazione e prima richiesta
Per iniziare, serve una chiave API da Google AI Studio. Generi una chiave, la inserisci nelle variabili d'ambiente e via. Niente complessità di OAuth (a meno che tu non voglia accedere a dati utente, ma per l'uso generico basta quella chiave).
Sponsored Protocol
Prima richiesta in Python
import google.generativeai as genai
import os
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-2.5-flash")
response = model.generate_content("Spiega in una frase cosa fa Gemini API")
print(response.text)
30 secondi per andare in produzione. Attenzione: non esporre mai la chiave lato client. Usa un backend (Node.js, Python, PHP) come proxy. Noi lo facciamo con Laravel — stack che controlliamo, nessun canone a vita.
Prima richiesta in JavaScript (Node.js)
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });
const result = await model.generateContent("Che cos'è il context caching?");
console.log(result.response.text());
Gemini 2.5 Flash e Pro: quale scegliere per la tua app
Google ha due modelli principali: 2.5 Flash (leggero, veloce, economico) e 2.5 Pro (pesante, massima qualità, più caro). La scelta dipende dal caso d'uso.
Flash: per assistenza in tempo reale e classificazione
Se devi rispondere a domande in chat, moderare contenuti o estrarre dati veloci, Flash batte quasi tutti i competitor in rapporto qualità/prezzo. Noi lo abbiamo usato per un sistema di ticketing automatico: latenza sotto 1 secondo, costo trascurabile.
Pro: per analisi complesse e ragionamento
Quando il prompt include un documento di 100 pagine, un video o richiede capacità di ragionamento multi-step, Pro è la scelta. Costa di più, ma evita errori costosi. Non usare Pro per classificare tweet; useresti un martello pneumatico per conficcare un chiodo.
Sponsored Protocol
Multimodalità: immagini, audio, video e documenti
Con Gemini API, puoi inviare nello stesso prompt testo e media. Niente preprocessing, niente OCR separato. Il modello interpreta il contenuto direttamente.
import PIL.Image
image = PIL.Image.open("fattura.jpg")
model = genai.GenerativeModel("gemini-2.5-flash")
response = model.generate_content(["Estrai il totale e la data da questa fattura", image])
print(response.text)
Attenzione: le immagini pesanti rallentano la risposta e aumentano i costi. Ottimizza sempre i media: riduci risoluzione a 1024x1024, comprimi il JPEG. Un cliente e-commerce aveva immagini da diversi MB: ottimizzandole abbiamo ridotto il peso del 60% senza perdita di qualità. Stessa logica qui.
Audio e video
Gemini 2.5 Pro supporta nativamente audio (estrai trascrizioni) e video (analizza scene). Puoi passare direttamente un file MP4. Il modello lo suddivide in frame e li processa. Costo attenzione: un video di 10 minuti può consumare centinaia di migliaia di token. Usa context caching (vedi sezione dedicata) per riusare il contesto senza rigenerarlo.
Function Calling: dai alla tua AI il potere di agire
Un'API AI che parlare non basta. Deve chiamare funzioni: cercare in un database, inviare email, aggiornare ordini. Gemini supporta il function calling in modo nativo, definendo tool JSON.
model = genai.GenerativeModel("gemini-2.5-flash", tools=[
{
"function_declarations": [
{
"name": "trova_prodotto",
"description": "Cerca un prodotto nel catalogo",
"parameters": {
"type": "object",
"properties": {
"nome": {"type": "string", "description": "Nome del prodotto"}
},
"required": ["nome"]
}
}
]
}
])
chat = model.start_chat()
response = chat.send_message("Trova il prodotto 'scarpe running")
print(response.candidates[0].content.parts[0].function_call)
Il modello risponde con una richiesta di chiamata funzione. Tu esegui la funzione e restituisci il risultato. È la base per creare agenti AI autonomi. Noi abbiamo costruito un agente di supporto che interroga il nostro gestionale e restituisce lo stato degli ordini in tempo reale.
Sponsored Protocol
Context Caching: riduci i costi sui documenti lunghi
Se la tua app elabora sempre lo stesso documento (es. un manuale tecnico di 500 pagine), ogni richiesta lo tokenizza da capo. Context caching permette di mantenere in memoria i token per un tempo definito, pagando solo lo storage e non la rielaborazione. I risparmi possono superare il 70%.
from google.generativeai import caching
cache = caching.CachedContent.create(
model="gemini-2.5-pro",
contents=[{"parts": [{"text": lungo_documento}]}],
ttl="1800s" # 30 minuti
)
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
response = model.generate_content("Qual è la procedura per l'installazione?")
print(response.text)
Attenzione: il caching ha un costo di storage e una durata massima. Va usato per sessioni con domande ripetitive sullo stesso contesto. Non per variazioni continue.
Sponsored Protocol
Grounding con Google Search: risposte aggiornate e verificabili
I modelli linguistici hanno un taglio conoscitivo. Per risposte su eventi recenti o dati in tempo reale, attiva il grounding con Google Search. Il modello cerca su web e cita le fonti. Utile per FAQ aggiornate, assistenza su normative o prezzi correnti.
model = genai.GenerativeModel("gemini-2.5-flash")
response = model.generate_content(
"Quali sono le ultime novità sul Superbonus?",
request_options={"grounding_source": "GOOGLE_SEARCH"}
)
print(response.text)
# Include snippet e link alle fonti
Gemini vs OpenAI API: confronto costi, latenza e qualità
La scelta tra Gemini e OpenAI (GPT-4o, GPT-4.1) è spesso tecnica, ma noi aggiungiamo il nostro filtro economico. Ecco i punti chiave:
- Costi input token: Gemini 2.5 Flash è circa l’80% più economico di GPT-4o mini. Per volumi alti, la differenza è enorme.
- Finestra contesto: 1M token vs 128k di GPT-4o. Se lavori su documenti lunghi, Gemini vince.
- Multimodalità nativa: entrambi supportano immagini e audio, ma Gemini gestisce video senza preprocessing.
- Function calling: entrambi funzionano, ma Google ha un ecosistema più integrato con i propri servizi (Search, Maps).
- Latenza: Flash è più veloce di GPT-4o mini; Pro è paragonabile a GPT-4o.
Il nostro consiglio: usa Gemini per carichi di lavoro multimodali e contesti lunghi, OpenAI per ecosistemi già consolidati su Azure o per specifici modelli di ragionamento (es. o1). Ma non scegliere a caso: fai un test A/B con i tuoi dati. Noi abbiamo risparmiato il 40% sui costi di cloud AI passando da GPT-4o a Gemini 2.5 Flash per un assistente documentale.
Sponsored Protocol
Rate limits e costi: come ottimizzare per produzione
In produzione, i limiti diventano un problema reale. Rate limits di Gemini: 1500 RPM per Flash, 360 RPM per Pro (con pagamento). Superarli significa ricevere errori 429. Soluzioni pratiche:
- Backoff esponenziale: riprova dopo un tempo crescente.
- Coda di richieste: usa un buffer (Redis, Bull, Laravel Queue).
- Batching: raggruppa più richieste in una (non sempre supportato).
- Monitoraggio costi: ogni mese ricevi una fattura. Noi tracciamo ogni chiamata con tag personalizzati nel billing di Google Cloud per sapere esattamente quanto spende ogni feature.
E un consiglio che ci portiamo dalla contabilità: non superare mai il budget mensile senza allarme. Imposta soglie di spesa su Google Cloud e notifiche su email o Slack.
In sintesi — cosa fare adesso
- Ottieni una chiave API gratuita e fai la prima richiesta in Python o Node.js.
- Scegli il modello giusto: Flash per velocità, Pro per accuratezza su contesti complessi.
- Integra function calling se la tua app deve compiere azioni reali.
- Attiva context caching per documenti ripetuti — ridurrai i costi immediatamente.
- Monitora i costi con tag e soglie di spesa.
Se vuoi approfondire, leggi la nostra guida su Core Web Vitals per ottimizzare la UI della tua app AI, o scopri come Google Workspace può integrarsi con Gemini per la produttività aziendale.