Generare contenuti con l'API Gemini in Vertex AI

Utilizza generateContent o streamGenerateContent per generare contenuti con Gemini.

La famiglia di modelli Gemini include modelli che funzionano con richieste di prompt multimodali. Il termine multimodale indica che puoi utilizzare più di una modalità o tipo di input in un prompt. I modelli non multimodali accettano prompt solo con testo. Le modalità possono includere testo, audio, video e altro ancora.

Crea un account Google Cloud per iniziare

Per iniziare a utilizzare l'API Gemini in Vertex AI, crea un Google Cloud account.

Dopo aver creato l'account, utilizza questo documento per esaminare il corpo della richiesta, i parametri del modello, il corpo della risposta e alcune richieste di esempio del modello Gemini.

Quando è tutto pronto, consulta la guida rapida all'API Gemini in Vertex AI per scoprire come inviare una richiesta all'API Gemini in Vertex AI utilizzando un SDK del linguaggio di programmazione o l'API REST.

Modelli supportati

Tutti i modelli Gemini supportano la generazione di contenuti.

Elenco dei parametri

Per informazioni dettagliate sull'implementazione, consulta gli esempi.

Corpo della richiesta

{
  "cachedContent": string,
  "contents": [
    {
      "role": string,
      "parts": [
        {
          // Union field data can be only one of the following:
          "text": string,
          "inlineData": {
            "mimeType": string,
            "data": string
          },
          "fileData": {
            "mimeType": string,
            "fileUri": string
          },
          // End of list of possible types for union field data.

          "videoMetadata": {
            "startOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "endOffset": {
              "seconds": integer,
              "nanos": integer
            },
            "fps": double
          }
        }
      ]
    }
  ],
  "systemInstruction": {
    "role": string,
    "parts": [
      {
        "text": string
      }
    ]
  },
  "tools": [
    {
      "functionDeclarations": [
        {
          "name": string,
          "description": string,
          "parameters": {
            object (OpenAPI Object Schema)
          }
        }
      ]
    }
  ],
  "safetySettings": [
    {
      "category": enum (HarmCategory),
      "threshold": enum (HarmBlockThreshold)
    }
  ],
  "generationConfig": {
    "temperature": number,
    "topP": number,
    "topK": number,
    "candidateCount": integer,
    "maxOutputTokens": integer,
    "presencePenalty": float,
    "frequencyPenalty": float,
    "stopSequences": [
      string
    ],
    "responseMimeType": string,
    "responseSchema": schema,
    "seed": integer,
    "responseLogprobs": boolean,
    "logprobs": integer,
    "audioTimestamp": boolean
  },
  "labels": {
    string: string
  }
}

Il corpo della richiesta contiene dati con i seguenti parametri:

Parametri

cachedContent

(Facoltativo) string

Il nome dei contenuti memorizzati nella cache utilizzati come contesto per fornire la previsione. Formato: projects/{project}/locations/{location}/cachedContents/{cachedContent}

contents

Obbligatorio: Content

I contenuti della conversazione attuale con il modello.

Per le query a singolo turno, si tratta di una singola istanza. Per le query multi-turno, questo è un campo ripetuto che contiene la cronologia della conversazione e l'ultima richiesta.

systemInstruction

(Facoltativo) Content

Disponibile per gemini-2.0-flash e gemini-2.0-flash-lite.

Istruzioni per il modello per indirizzarlo verso prestazioni migliori. Ad esempio, "Rispondi nel modo più conciso possibile" o "Non utilizzare termini tecnici nella risposta".

Le stringhe text vengono conteggiate ai fini del limite di token.

Il campo role di systemInstruction viene ignorato e non influisce sul rendimento del modello.

tools

Facoltativo. Un frammento di codice che consente al sistema di interagire con sistemi esterni per eseguire un'azione o un insieme di azioni al di fuori delle conoscenze e dell'ambito del modello. Vedi Chiamata di funzione.

toolConfig

Facoltativo. Vedi Chiamata di funzione.

safetySettings

(Facoltativo) SafetySetting

Impostazioni per richiesta per il blocco di contenuti non sicuri.

Applicata il giorno GenerateContentResponse.candidates.

generationConfig

(Facoltativo) GenerationConfig

Impostazioni di configurazione della generazione.

labels

(Facoltativo) string

Metadati che puoi aggiungere alla chiamata API nel formato di coppie chiave-valore.

contents

Il tipo di dati strutturati di base contenente i contenuti in più parti di un messaggio.

Questa classe è costituita da due proprietà principali: role e parts. La proprietà role indica la persona che produce i contenuti, mentre la proprietà parts contiene più elementi, ognuno dei quali rappresenta un segmento di dati all'interno di un messaggio.

Parametri

role

string

L'identità dell'entità che crea il messaggio. Sono supportati i seguenti valori:

  • user: indica che il messaggio è inviato da una persona reale, in genere un messaggio generato dall'utente.
  • model: indica che il messaggio è generato dal modello.

Il valore model viene utilizzato per inserire i messaggi del modello nella conversazione durante le conversazioni multi-turno.

parts

Part

Un elenco di parti ordinate che compongono un singolo messaggio. Le diverse parti possono avere tipi MIME IANA diversi.

Per i limiti degli input, ad esempio il numero massimo di token o di immagini, consulta le specifiche del modello nella pagina Modelli Google.

Per calcolare il numero di token nella richiesta, consulta Recuperare il conteggio dei token.

parts

Un tipo di dati contenente contenuti multimediali che fanno parte di un messaggio Content in più parti.

Parametri

text

(Facoltativo) string

Un prompt di testo o uno snippet di codice.

inlineData

(Facoltativo) Blob

Dati incorporati in byte non elaborati.

Per gemini-2.0-flash-lite e gemini-2.0-flash, puoi specificare fino a 3000 immagini utilizzando inlineData.

fileData

(Facoltativo) fileData

Dati archiviati in un file.

functionCall

(Facoltativo) FunctionCall.

Contiene una stringa che rappresenta il campo FunctionDeclaration.name e un oggetto JSON strutturato contenente eventuali parametri per la chiamata di funzione prevista dal modello.

Vedi Chiamata di funzione.

functionResponse

(Facoltativo) FunctionResponse.

L'output del risultato di un FunctionCall che contiene una stringa che rappresenta il campo FunctionDeclaration.name e un oggetto JSON strutturato contenente qualsiasi output della chiamata di funzione. Viene utilizzato come contesto per il modello.

Vedi Chiamata di funzione.

videoMetadata

(Facoltativo) VideoMetadata

Per l'input video, l'offset di inizio e di fine del video nel formato Durata e il frame rate del video . Ad esempio, per specificare un clip di 10 secondi che inizia a 1:00 con una frequenza fotogrammi di 10 frame al secondo, imposta quanto segue:

  • "startOffset": { "seconds": 60 }
  • "endOffset": { "seconds": 70 }
  • "fps": 10.0

I metadati devono essere specificati solo mentre i dati del video vengono presentati in inlineData o fileData.

blob

Blob di contenuti. Se possibile, invia il messaggio come testo anziché come byte non elaborati.

Parametri

mimeType

string

Il tipo di media del file specificato nei campi data o fileUri. I valori accettabili includono:

Fai clic per espandere i tipi MIME

  • application/pdf
  • audio/mpeg
  • audio/mp3
  • audio/wav
  • image/png
  • image/jpeg
  • image/webp
  • text/plain
  • video/mov
  • video/mpeg
  • video/mp4
  • video/mpg
  • video/avi
  • video/wmv
  • video/mpegps
  • video/flv

Per gemini-2.0-flash-lite e gemini-2.0-flash, la durata massima di un file audio è di 8,4 ore e la durata massima di un file video (senza audio) è di un'ora. Per maggiori informazioni, consulta i requisiti relativi all'audio e ai video di Gemini.

I file di testo devono essere codificati in UTF-8. I contenuti del file di testo vengono conteggiati ai fini del limite di token.

Non esiste un limite alla risoluzione delle immagini.

data

bytes

La codifica base64 dell'immagine, del PDF o del video da includere inline nel prompt. Quando includi contenuti multimediali in linea, devi anche specificare il tipo di contenuti multimediali (mimeType) dei dati.

Dimensioni massime: 20 MB

FileData

Dati URI o URL web.

Parametri

mimeType

string

Tipo MIME IANA dei dati.

fileUri

string

L'URI o l'URL del file da includere nel prompt. I valori accettabili includono:

  • URI del bucket Cloud Storage:l'oggetto deve essere leggibile pubblicamente o risiedere nello stesso progetto Google Cloud che invia la richiesta. Per gemini-2.0-flash e gemini-2.0-flash-lite, il limite di dimensioni è di 2 GB.
  • URL HTTP:l'URL del file deve essere leggibile pubblicamente. Puoi specificare un file video, un file audio e fino a 10 file immagine per richiesta. I file audio, video e i documenti non possono superare i 15 MB.
  • URL del video di YouTube: il video di YouTube deve essere di proprietà dell'account che hai utilizzato per accedere alla console Google Cloud o deve essere pubblico. È supportato un solo URL di video di YouTube per richiesta.

Quando specifichi un fileURI, devi anche specificare il tipo di media (mimeType) del file. Se Controlli di servizio VPC è abilitato, la specifica di un URL del file multimediale per fileURI non è supportata.

functionCall

Un functionCall previsto restituito dal modello che contiene una stringa che rappresenta il functionDeclaration.name e un oggetto JSON strutturato contenente i parametri e i relativi valori.

Parametri

name

string

Il nome della funzione da chiamare.

args

Struct

I parametri e i valori della funzione in formato oggetto JSON.

Per i dettagli sui parametri, consulta la sezione Chiamata di funzione.

functionResponse

L'output risultante da un FunctionCall che contiene una stringa che rappresenta FunctionDeclaration.name. Contiene anche un oggetto JSON strutturato con l'output della funzione (e lo utilizza come contesto per il modello). Deve contenere il risultato di un FunctionCall basato sulla previsione del modello.

Parametri

name

string

Il nome della funzione da chiamare.

response

Struct

La risposta della funzione in formato oggetto JSON.

videoMetadata

Metadati che descrivono i contenuti video di input.

Parametri

startOffset

(Facoltativo) google.protobuf.Duration

L'offset iniziale del video.

endOffset

(Facoltativo) google.protobuf.Duration

L'offset finale del video.

fps

(Facoltativo) double

La frequenza fotogrammi del video inviato al modello. Se non specificato, il valore predefinito è 1.0. Il valore minimo accettato è pari a 0.0, ma non lo include. Il valore massimo è 24.0.

safetySetting

Impostazioni di sicurezza.

Parametri

category

(Facoltativo) HarmCategory

La categoria di sicurezza per cui configurare una soglia. I valori accettabili includono i seguenti:

Fai clic per espandere le categorie di sicurezza

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT

threshold

(Facoltativo) HarmBlockThreshold

La soglia per bloccare le risposte che potrebbero appartenere alla categoria di sicurezza specificata in base alla probabilità.

  • OFF
  • BLOCK_NONE
  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

method

(Facoltativo) HarmBlockMethod

Specifica se la soglia viene utilizzata per il punteggio di probabilità o gravità. Se non specificato, la soglia viene utilizzata per il punteggio di probabilità.

harmCategory

Categorie di danni che bloccano i contenuti.

Parametri

HARM_CATEGORY_UNSPECIFIED

La categoria di danno non è specificata.

HARM_CATEGORY_HATE_SPEECH

La categoria del danno è incitamento all'odio.

HARM_CATEGORY_DANGEROUS_CONTENT

La categoria di danno è "Contenuti pericolosi".

HARM_CATEGORY_HARASSMENT

La categoria del danno è molestie.

HARM_CATEGORY_SEXUALLY_EXPLICIT

La categoria di danno è Contenuti sessualmente espliciti.

harmBlockThreshold

Livelli di soglia di probabilità utilizzati per bloccare una risposta.

Parametri

HARM_BLOCK_THRESHOLD_UNSPECIFIED

Soglia HarmBlockThreshold non specificata.

BLOCK_LOW_AND_ABOVE

Blocco soglia bassa e superiore (ovvero blocco più esteso).

BLOCK_MEDIUM_AND_ABOVE

Blocco soglia media e superiore.

BLOCK_ONLY_HIGH

Blocco solo soglia alta (ovvero blocco ridotto).

BLOCK_NONE

Nessun blocco.

OFF

Disattiva la sicurezza se tutte le categorie sono disattivate

harmBlockMethod

Una soglia di probabilità che blocca una risposta in base a una combinazione di probabilità e gravità.

Parametri

HARM_BLOCK_METHOD_UNSPECIFIED

Il metodo di blocco del danno non è specificato.

SEVERITY

Il metodo di blocco dei danni utilizza sia i punteggi di probabilità che di gravità.

PROBABILITY

Il metodo di blocco dei danni utilizza il punteggio di probabilità.

generationConfig

Impostazioni di configurazione utilizzate durante la generazione del prompt.

Parametri

temperature

(Facoltativo) float

La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati topP e topK. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature basse sono ideali per prompt che richiedono risposte meno aperte o creative, mentre le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0 indica che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a un determinato prompt sono per lo più deterministiche, ma è comunque possibile una piccola variazione.

Se il modello restituisce una risposta troppo generica, troppo breve o fornisce una risposta di riserva, prova ad aumentare la temperatura.

  • Intervallo per gemini-2.0-flash-lite: 0.0 - 2.0 (valore predefinito: 1.0)
  • Intervallo per gemini-2.0-flash: 0.0 - 2.0 (valore predefinito: 1.0)

Per ulteriori informazioni, vedi Parametri di generazione dei contenuti.

topP

(Facoltativo) float

Se specificato, viene utilizzato il campionamento del nucleo.

Top-P cambia il modo in cui il modello seleziona i token per l'output. I token vengono selezionati dal più probabile (vedi Top-K) al meno probabile finché la somma delle loro probabilità raggiunge il valore di Top-P. Ad esempio, se i token A, B e C hanno una probabilità di 0,3, 0,2 e 0,1 e il valore di top-P è 0.5, il modello seleziona A o B come token successivo utilizzando la temperatura ed esclude C come candidato.

Specifica un valore più basso per risposte meno casuali e un valore più alto per risposte più casuali.

  • Intervallo: 0.0 - 1.0
  • Valore predefinito per gemini-2.0-flash-lite: 0.95
  • Valore predefinito per gemini-2.0-flash: 0.95

candidateCount

(Facoltativo) int

Il numero di varianti di risposta da restituire. Per ogni richiesta, ti vengono addebitati i token di output di tutti i candidati, ma solo una volta per i token di input.

La specifica di più candidati è una funzionalità di anteprima che funziona con generateContent (streamGenerateContent non è supportato). Sono supportati i seguenti modelli:

  • gemini-2.0-flash-lite: 1-8, valore predefinito: 1
  • gemini-2.0-flash: 1-8, valore predefinito: 1

maxOutputTokens

Facoltativo: int

Il numero massimo di token che possono essere generati nella risposta. Un token equivale a circa quattro caratteri. 100 token corrispondono a circa 60-80 parole.

Specifica un valore più basso per risposte più brevi e un valore più alto per risposte potenzialmente più lunghe.

Per ulteriori informazioni, vedi Parametri di generazione dei contenuti.

stopSequences

(Facoltativo) List[string]

Specifica un elenco di stringhe che indica al modello di interrompere la generazione di testo se una delle stringhe viene rilevata nella risposta. Se una stringa viene visualizzata più volte nella risposta, la risposta viene troncata nel punto in cui viene rilevata per la prima volta. Le stringhe sono sensibili alle maiuscole.

Ad esempio, se la seguente è la risposta restituita quando stopSequences non è specificato:

public static string reverse(string myString)

allora la risposta restituita con stopSequences impostato su ["Str", "reverse"] è:

public static string

Massimo 5 elementi nell'elenco.

Per ulteriori informazioni, vedi Parametri di generazione dei contenuti.

presencePenalty

(Facoltativo) float

Penalità positive.

I valori positivi penalizzano i token che sono già presenti nel testo generato, aumentando la probabilità di generare contenuti più diversi.

Il valore massimo per presencePenalty è fino a 2.0, escluso. Il suo valore minimo è -2.0.

frequencyPenalty

(Facoltativo) float

I valori positivi penalizzano i token che compaiono ripetutamente nel testo generato, riducendo la probabilità di ripetere i contenuti.

Questo valore massimo per frequencyPenalty è fino a 2.0, ma non incluso. Il suo valore minimo è -2.0.

responseMimeType

(Facoltativo) string (enum)

Il tipo MIME della risposta di output del testo candidato generato.

Sono supportati i seguenti tipi MIME:

  • application/json: risposta JSON nei candidati.
  • text/plain (impostazione predefinita): output in testo normale.
  • text/x.enum: Per le attività di classificazione, restituisci un valore enum come definito nello schema di risposta.

Specifica il tipo di risposta appropriato per evitare comportamenti imprevisti. Ad esempio, se richiedi una risposta in formato JSON, specifica application/json e non text/plain.

text/plain non è supportato per l'utilizzo con responseSchema.

responseSchema

(Facoltativo) schema

Lo schema che ha generato il testo candidato deve seguire. Per ulteriori informazioni, consulta Controllare l'output generato.

Per utilizzare questo parametro, devi specificare un tipo MIME supportato diverso da text/plain per il parametro responseMimeType.

seed

(Facoltativo) int

Quando il seed è impostato su un valore specifico, il modello fa del suo meglio per fornire la stessa risposta per le richieste ripetute. L'output deterministico non è garantito. Inoltre, la modifica del modello o delle impostazioni dei parametri, ad esempio la temperatura, può causare variazioni nella risposta anche se utilizzi lo stesso valore seed. Per impostazione predefinita, viene utilizzato un valore di inizializzazione casuale.

responseLogprobs

(Facoltativo) boolean

Se true, restituisce le probabilità logaritmiche dei token scelti dal modello a ogni passaggio. Per impostazione predefinita, questo parametro è impostato su false.

logprobs

(Facoltativo) int

Restituisce le probabilità logaritmiche dei token candidati migliori in ogni fase di generazione. Il token scelto dal modello potrebbe non corrispondere al token candidato principale in ogni passaggio. Specifica il numero di candidati da restituire utilizzando un valore intero compreso tra 1 e 20.

Per utilizzare questo parametro, devi abilitare responseLogprobs.

audioTimestamp

(Facoltativo) boolean

Disponibile per i seguenti modelli:

  • Gemini 2.0 Flash-Lite
  • Gemini 2.0 Flash

Consente di comprendere i timestamp per i file solo audio.

Questa è una funzionalità in anteprima.

Corpo della risposta

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": string
          }
        ]
      },
      "finishReason": enum (FinishReason),
      "safetyRatings": [
        {
          "category": enum (HarmCategory),
          "probability": enum (HarmProbability),
          "blocked": boolean
        }
      ],
      "citationMetadata": {
        "citations": [
          {
            "startIndex": integer,
            "endIndex": integer,
            "uri": string,
            "title": string,
            "license": string,
            "publicationDate": {
              "year": integer,
              "month": integer,
              "day": integer
            }
          }
        ]
      },
      "avgLogprobs": double,
      "logprobsResult": {
        "topCandidates": [
          {
            "candidates": [
              {
                "token": string,
                "logProbability": float
              }
            ]
          }
        ],
        "chosenCandidates": [
          {
            "token": string,
            "logProbability": float
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": integer,
    "candidatesTokenCount": integer,
    "totalTokenCount": integer
  },
  "modelVersion": string
}
Elemento di risposta Descrizione
modelVersion Il modello e la versione utilizzati per la generazione. Ad esempio: gemini-2.0-flash-lite-001.
text Il testo generato.
finishReason Il motivo per cui il modello ha smesso di generare token. Se è vuoto, il modello non ha smesso di generare i token. Poiché la risposta utilizza il prompt per il contesto, non è possibile modificare il comportamento di interruzione della generazione di token del modello.
  • FINISH_REASON_STOP: Punto di interruzione naturale del modello o sequenza di interruzione fornita.
  • FINISH_REASON_MAX_TOKENS: è stato raggiunto il numero massimo di token specificato nella richiesta.
  • FINISH_REASON_SAFETY: La generazione di token è stata interrotta perché la risposta è stata segnalata per motivi di sicurezza. Tieni presente che Candidate.content è vuoto se i filtri dei contenuti bloccano l'output.
  • FINISH_REASON_RECITATION: La generazione di token è stata interrotta perché la risposta è stata segnalata per citazioni non autorizzate.
  • FINISH_REASON_BLOCKLIST: La generazione di token è stata interrotta perché la risposta include termini bloccati.
  • FINISH_REASON_PROHIBITED_CONTENT: La generazione di token è stata interrotta perché la risposta è stata segnalata per contenuti vietati, come materiale pedopornografico.
  • FINISH_REASON_SPII: La generazione di token è stata interrotta perché la risposta è stata segnalata per informazioni sensibili che consentono l'identificazione personale (SPII).
  • FINISH_REASON_MALFORMED_FUNCTION_CALL: I candidati sono stati bloccati a causa di una chiamata di funzione non valida e non analizzabile.
  • FINISH_REASON_OTHER: Tutti gli altri motivi per cui il token è stato interrotto
  • FINISH_REASON_UNSPECIFIED: il motivo del completamento non è specificato.
category La categoria di sicurezza per cui configurare una soglia. I valori accettabili includono:

Fai clic per espandere le categorie di sicurezza

  • HARM_CATEGORY_SEXUALLY_EXPLICIT
  • HARM_CATEGORY_HATE_SPEECH
  • HARM_CATEGORY_HARASSMENT
  • HARM_CATEGORY_DANGEROUS_CONTENT
probability I livelli di probabilità di danni nei contenuti.
  • HARM_PROBABILITY_UNSPECIFIED
  • NEGLIGIBLE
  • LOW
  • MEDIUM
  • HIGH
blocked Un flag booleano associato a un attributo di sicurezza che indica se l'input o l'output del modello è stato bloccato.
startIndex Un numero intero che specifica dove inizia una citazione in content. startIndex è in byte e viene calcolato dalla risposta codificata in UTF-8.
endIndex Un numero intero che specifica dove termina una citazione in content. endIndex è in byte e viene calcolato dalla risposta codificata in UTF-8.
url L'URL di una fonte citazione. Esempi di origine URL potrebbero essere un sito web di notizie o un repository GitHub.
title Il titolo di una fonte della citazione. Esempi di titoli di fonti potrebbero essere quelli di un articolo di notizie o di un libro.
license La licenza associata a una citazione.
publicationDate La data di pubblicazione di una citazione. I formati validi sono YYYY, YYYY-MM e YYYY-MM-DD.
avgLogprobs Probabilità logaritmica media del candidato.
logprobsResult Restituisce i token candidati principali (topCandidates) e i token scelti effettivi (chosenCandidates) a ogni passaggio.
token I modelli di AI generativa suddividono i dati di testo in token per l'elaborazione, che possono essere caratteri, parole o frasi.
logProbability Un valore di probabilità logaritmica che indica l'affidabilità del modello per un token specifico.
promptTokenCount Numero di token nella richiesta.
candidatesTokenCount Numero di token nella risposta o nelle risposte.
totalTokenCount Numero di token nella richiesta e nella risposta o nelle risposte.

Esempi

Generazione di testo

Genera una risposta testuale da un input di testo.

SDK Gen AI per Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="How does AI work?",
)
print(response.text)
# Example response:
# Okay, let's break down how AI works. It's a broad field, so I'll focus on the ...
#
# Here's a simplified overview:
# ...

Python (OpenAI)

Puoi chiamare l'API Inference utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Richiamare i modelli Vertex AI utilizzando la libreria OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithText shows how to generate text using a text prompt.
func generateWithText(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	resp, err := client.Models.GenerateContent(ctx,
		"gemini-2.5-flash",
		genai.Text("How does AI work?"),
		nil,
	)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)
	// Example response:
	// That's a great question! Understanding how AI works can feel like ...
	// ...
	// **1. The Foundation: Data and Algorithms**
	// ...

	return nil
}

Utilizzo del prompt multimodale

Genera una risposta di testo da un input multimodale, ad esempio testo e un'immagine.

SDK Gen AI per Python

from google import genai
from google.genai.types import HttpOptions, Part

client = genai.Client(http_options=HttpOptions(api_version="v1"))
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        "What is shown in this image?",
        Part.from_uri(
            file_uri="gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
    ],
)
print(response.text)
# Example response:
# The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...

Python (OpenAI)

Puoi chiamare l'API Inference utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Richiamare i modelli Vertex AI utilizzando la libreria OpenAI.


from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe the following image:"},
                {
                    "type": "image_url",
                    "image_url": "gs://cloud-samples-data/generative-ai/image/scones.jpg",
                },
            ],
        }
    ],
)

print(response)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextImage shows how to generate text using both text and image input
func generateWithTextImage(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "What is shown in this image?"},
			{FileData: &genai.FileData{
				// Image source: https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
				FileURI:  "gs://cloud-samples-data/generative-ai/image/scones.jpg",
				MIMEType: "image/jpeg",
			}},
		},
			Role: "user"},
	}

	resp, err := client.Models.GenerateContent(ctx, modelName, contents, nil)
	if err != nil {
		return fmt.Errorf("failed to generate content: %w", err)
	}

	respText := resp.Text()

	fmt.Fprintln(w, respText)

	// Example response:
	// The image shows an overhead shot of a rustic, artistic arrangement on a surface that ...

	return nil
}

Risposta di testo in streaming

Genera una risposta del modello di streaming da un input di testo.

SDK Gen AI per Python

from google import genai
from google.genai.types import HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Why is the sky blue?",
):
    print(chunk.text, end="")
# Example response:
# The
#  sky appears blue due to a phenomenon called **Rayleigh scattering**. Here's
#  a breakdown of why:
# ...

Python (OpenAI)

Puoi chiamare l'API Inference utilizzando la libreria OpenAI. Per ulteriori informazioni, consulta Richiamare i modelli Vertex AI utilizzando la libreria OpenAI.

from google.auth import default
import google.auth.transport.requests

import openai

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"

# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())

# OpenAI Client
client = openai.OpenAI(
    base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
    api_key=credentials.token,
)

response = client.chat.completions.create(
    model="google/gemini-2.0-flash-001",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
    stream=True,
)
for chunk in response:
    print(chunk)

Go

import (
	"context"
	"fmt"
	"io"

	genai "google.golang.org/genai"
)

// generateWithTextStream shows how to generate text stream using a text prompt.
func generateWithTextStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"
	contents := genai.Text("Why is the sky blue?")

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, nil) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk := resp.Text()

		fmt.Fprintln(w, chunk)
	}

	// Example response:
	// The
	//  sky is blue
	//  because of a phenomenon called **Rayleigh scattering**. Here's the breakdown:
	// ...

	return nil
}

Versioni modello

Per utilizzare la versione aggiornata automaticamente, specifica il nome del modello senza il numero di versione finale, ad esempio gemini-2.0-flash anziché gemini-2.0-flash-001.

Per saperne di più, consulta Versioni e ciclo di vita del modello Gemini.

Passaggi successivi