generateContent e streamGenerateContent.
Differenze rispetto alla Chat Completions API
L’API Gemini Generate Content utilizza il formato di richiesta nativo ufficiale di Google (campocontents), anziché il formato compatibile con OpenAI (campo messages). Se stai già utilizzando Google Gemini SDK o conosci il formato API ufficiale, puoi utilizzare direttamente questa API senza modificare il formato della richiesta.
Ambito di supporto attuale
L’interfaccia accetta input di testo, immagini, video e audio (inlineData o fileData), configurazioni di ragionamento e dichiarazioni di funzioni personalizzate. Non è ancora garantita una disponibilità uniforme per campi nativi quali output audio, strumenti integrati e cache di contesto esplicita; fai riferimento ai risultati effettivi restituiti dal modello specifico.
Quando invii file quali audio tramite fileData.fileUri, assicurati che i file siano direttamente accessibili tramite HTTPS, non dipendano dallo stato di accesso e che il periodo di validità del link firmato copra l’intero tempo di elaborazione della richiesta. L’analisi audio non in streaming restituisce risultati solo dopo che il modello ha completato l’elaborazione e potrebbe richiedere più di 90 secondi; il client dovrebbe impostare un timeout totale sufficientemente lungo in base alle dimensioni del file e allo scenario aziendale, evitando di disconnettersi mentre il server sta ancora elaborando.
Procedura di richiesta
Prima di utilizzare l’API Gemini Generate Content, visita la pagina Gemini Generate Content API e fai clic sul pulsante “Ottieni” per ottenere le credenziali necessarie per la richiesta. Se non hai ancora effettuato l’accesso o la registrazione, verrai automaticamente reindirizzato alla pagina di accesso. La prima richiesta include una quota gratuita.Utilizzo di base
Non-Streaming (non in streaming)
Invia una richiesta POST a/v1beta/models/{model}:generateContent:
Suggerimento: i modelli flash della seriegemini-3.xsono modelli di ragionamento e consumano prima reasoning tokens; impostagenerationConfig.maxOutputTokensa più di 512, altrimenti potrebbe essere restituito solo contenuto vuoto.
usageMetadata vengono fatturati secondo la semantica nativa di Gemini:
promptTokenCountincludecachedContentTokenCount; la parte raggiunta dalla cache viene calcolata al prezzo di lettura della cache e non viene conteggiata nuovamente come input ordinario.promptTokensDetailsecacheTokensDetailssaranno normalizzati intext_tokens,image_tokens,video_tokens,audio_tokense nei corrispondenti dettaglicached_*sottousage.prompt_tokens_details. Questi valori sono inclusi rispettivamente inprompt_tokensecached_tokens; le diverse modalità vengono ricalcolate solo secondo i rispettivi prezzi, senza doppia fatturazione.candidatesTokenCountethoughtsTokenCountvengono entrambi calcolati al prezzo dei token di output.toolUsePromptTokenCountè un token di input per strumenti indipendente, calcolato al prezzo dei token di input.
usage normalizzato; tra i protocolli dei modelli, il costo di questa chiamata viene letto uniformemente da usage.cost. cost è un’anteprima facoltativa del costo; quando l’anteprima del prezzo non è temporaneamente disponibile, la risposta del modello verrà comunque restituita normalmente, ma potrebbe non contenere questo campo. La fattura finale fa fede ai record di utilizzo.
Streaming (in streaming)
Invia una richiesta POST a/v1beta/models/{model}:streamGenerateContent?alt=sse:
usageMetadata e il usage normalizzato, mentre il costo resterà in usage.cost:
data: [DONE]. Se l’anteprima del prezzo finale non è temporaneamente disponibile, usage restituirà comunque l’utilizzo dei token, ma ometterà cost.
Modelli supportati
Funzionalità avanzate
Istruzioni di sistema
Configurazione della generazione
Modalità JSON
Modalità di ragionamento (Thinking)
I modelli che supportano la funzionalità di ragionamento (come gemini-2.5-flash e gemini-2.5-pro) possono abilitare la modalità di ragionamento:Chiamata di funzione
Conversazione multi-turno
Comprensione delle immagini
Impostazioni di sicurezza
Il filtraggio dei contenuti può essere controllato tramitesafetySettings:

