Comprensione delle immagini

Puoi aggiungere immagini alle richieste di Gemini per eseguire attività che comportano la comprensione dei contenuti delle immagini incluse. Questa pagina mostra come aggiungere immagini alle richieste a Gemini in Vertex AI utilizzando la consoleGoogle Cloud e l'API Vertex AI.

Modelli supportati

La seguente tabella elenca i modelli che supportano la comprensione delle immagini:

Modello Dettagli del media Tipi MIME
Gemini 2.5 Flash-Lite
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • Numero massimo di immagini di output per prompt: 10
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash con generazione di immagini
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • Numero massimo di immagini di output per prompt: 10
  • Numero massimo di token al minuto (TPM) per progetto:
    • Risoluzione dei contenuti multimediali Alta/Media/Predefinita:
      • Stati Uniti/Asia: 40 M
      • UE: 10 M
    • Risoluzione dei contenuti multimediali bassa:
      • US/Asia: 10 M
      • UE: 3 Mln
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Pro
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.5 Flash
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • Numero massimo di token al minuto (TPM) per progetto:
    • Risoluzione dei contenuti multimediali Alta/Media/Predefinita:
      • Stati Uniti/Asia: 40 M
      • UE: 10 M
    • Risoluzione dei contenuti multimediali bassa:
      • US/Asia: 10 M
      • UE: 2,6 milioni
  • image/png
  • image/jpeg
  • image/webp
Gemini 2.0 Flash-Lite
  • Numero massimo di immagini per prompt: 3000
  • Dimensioni massime dell'immagine: 7 MB
  • Token massimi al minuto (TPM):
    • Risoluzione dei contenuti multimediali Alta/Media/Predefinita:
      • US/Asia: 6,7 Mln
      • UE: 2,6 milioni
    • Risoluzione dei contenuti multimediali bassa:
      • US/Asia: 2,6 M
      • UE: 2,6 milioni
  • image/png
  • image/jpeg
  • image/webp

La metrica di quota è generate_content_video_input_per_base_model_id_and_resolution.

Per un elenco delle lingue supportate dai modelli Gemini, consulta le informazioni sui modelli Modelli Google. Per scoprire di più su come progettare prompt multimodali, consulta Progetta prompt multimodali. Se stai cercando un modo per utilizzare Gemini direttamente dalle tue app web e mobile, consulta gli SDK client Firebase AI Logic per app Swift, Android, web, Flutter e Unity.

Aggiungere immagini a una richiesta

Puoi aggiungere una o più immagini alla tua richiesta a Gemini.

Immagine singola

Il codice campione in ciascuna delle seguenti schede mostra un modo diverso per identificare il contenuto di un'immagine. Questo esempio funziona con tutti i modelli multimodali Gemini.

Console

Per inviare un prompt multimodale utilizzando la console Google Cloud , procedi nel seguente modo:

  1. Nella sezione Vertex AI della console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Fai clic su Apri in formato libero.

  3. (Facoltativo) Configura il modello e i parametri:

    • Modello: seleziona un modello.
    • Regione: seleziona la regione che vuoi utilizzare.
    • Temperatura: utilizza il cursore o la casella di testo per inserire un valore per la temperatura.

      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.

    • Limite di token di output: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.

      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.

    • Aggiungi sequenza di interruzioni: facoltativo. Inserisci una sequenza di interruzioni, ovvero una serie di caratteri che include spazi. Se il modello rileva una sequenza di interruzioni, la generazione della risposta si interrompe. La sequenza di interruzioni non è inclusa nella risposta e puoi aggiungere fino a cinque sequenze di interruzioni.

  4. (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzate e configura come segue:

    Fai clic per espandere le configurazioni avanzate.

    • Top-K: utilizza il cursore o la casella di testo per inserire un valore per Top-K. (non supportato per Gemini 1.5).

      Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica, invece, che il token successivo viene selezionato tra i tre token più probabili (utilizzando la temperatura).

      Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più alte. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

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

    • Top-P: utilizza il cursore o la casella di testo per inserire un valore per Top-P. I token vengono selezionati a partire da quello più probabile fino a quello meno probabile, finché la somma delle loro probabilità non corrisponde al valore di Top-P. Per ridurre al minimo la variabilità dei risultati, imposta Top-P su 0.
    • Risposte massime: utilizza il cursore o la casella di testo per inserire un valore per il numero di risposte da generare.
    • Risposte dinamiche: attiva questa opzione per stampare le risposte man mano che vengono generate.
    • Soglia del filtro di sicurezza: seleziona la soglia di probabilità di ricevere risposte potenzialmente dannose.
    • Abilita grounding: il grounding non è supportato per i prompt multimodali.

  5. Fai clic su Inserisci contenuti multimediali e seleziona un'origine per il file.

    Carica

    Seleziona il file che vuoi caricare e fai clic su Apri.

    Tramite URL

    Inserisci l'URL del file che vuoi utilizzare e fai clic su Inserisci.

    Cloud Storage

    Seleziona il bucket e poi il file dal bucket che vuoi importare e fai clic su Seleziona.

    Google Drive

    1. Scegli un account e dai il consenso a Vertex AI Studio per accedere al tuo account la prima volta che selezioni questa opzione. Puoi caricare più file con una dimensione totale massima di 10 MB. Un singolo file non può superare 7 MB.
    2. Fai clic sul file che vuoi aggiungere.
    3. Fai clic su Seleziona.

      La miniatura del file viene visualizzata nel riquadro Prompt. Viene visualizzato anche il numero totale di token. Se i dati del prompt superano il limite di token, i token vengono troncati e non sono inclusi nell'elaborazione dei dati.

  6. Inserisci il prompt di testo nel riquadro Prompt.

  7. (Facoltativo) Per visualizzare ID token in testo e ID token, fai clic sul conteggio dei token nel riquadro Prompt.

  8. Fai clic su Invia.

  9. (Facoltativo) Per salvare il prompt in I miei prompt, fai clic su Salva.

  10. (Facoltativo) Per ottenere il codice Python o un comando curl per il prompt, fai clic su Acquisisci codice.

Python

Installa

pip install --upgrade google-genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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 ...

Go

Scopri come installare o aggiornare Go.

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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
}

Node.js

Installa

npm install @google/genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const ai = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const image = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/scones.jpg',
      mimeType: 'image/jpeg',
    },
  };

  const response = await ai.models.generateContent({
    model: 'gemini-2.5-flash',
    contents: [image, 'What is shown in this image?'],
  });

  console.log(response.text);

  return response.text;
}

Java

Scopri come installare o aggiornare Java.

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.Part;

public class GenerateContentWithTextAndImage {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash";
    generateContent(modelId);
  }

  public static String generateContent(String modelId) {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client = Client.builder()
        .httpOptions(HttpOptions.builder().apiVersion("v1").build())
        .build()) {

      GenerateContentResponse response =
          client.models.generateContent(modelId, Content.fromParts(
                  Part.fromText("What is shown in this image?"),
                  Part.fromUri("gs://cloud-samples-data/generative-ai/image/scones.jpg", "image/jpeg")),
              null);

      System.out.print(response.text());
      // Example response:
      // The image shows a flat lay of blueberry scones arranged on parchment paper. There are ...
      return response.text();
    }
  }
}

REST

Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.

Puoi includere immagini archiviate in Cloud Storage o utilizzare dati immagine codificati in base64.

Immagine in Cloud Storage

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto
  • FILE_URI: 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 specificare anche 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.

    Se non disponi di un file immagine in Cloud Storage, puoi utilizzare il seguente file disponibile pubblicamente: gs://cloud-samples-data/generative-ai/image/scones.jpg con un tipo MIME di image/jpeg. Per visualizzare questa immagine, apri il file dell'immagine di esempio.

  • MIME_TYPE: 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
  • TEXT: Le istruzioni di testo da includere nel prompt. Ad esempio, What is shown in this image?

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente.

Dati immagine Base64

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: La regione in cui elaborare la richiesta. Inserisci una regione supportata. Per l'elenco completo delle regioni supportate, consulta Località disponibili.

    Fai clic per espandere un elenco parziale delle regioni disponibili

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: il tuo ID progetto
  • B64_BASE_IMAGE
    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.
  • MIME_TYPE: 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
  • TEXT: Le istruzioni di testo da includere nel prompt. Ad esempio, What is shown in this image?.

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente.

Nota quanto segue nell'URL di questo esempio:
  • Utilizza il metodo generateContent per richiedere che la risposta venga restituita dopo essere stata generata completamente. Per ridurre la percezione della latenza per un pubblico umano, trasmetti in streaming la risposta mentre viene generata utilizzando il metodo streamGenerateContent.
  • L'ID del modello multimodale si trova alla fine dell'URL prima del metodo (ad esempio, gemini-2.0-flash). Questo esempio potrebbe supportare anche altri modelli.

Più immagini

Ciascuna delle seguenti schede mostra un modo diverso per includere più immagini in una richiesta di prompt. Ogni campione accetta due insiemi dei seguenti input:

  • Un'immagine di un monumento cittadino famoso
  • Il tipo di media dell'immagine
  • Testo che indica la città e il punto di riferimento nell'immagine

Il campione include anche una terza immagine e un terzo tipo di contenuti multimediali, ma nessun testo. L'esempio restituisce una risposta di testo che indica la città e il punto di riferimento nella terza immagine.

Questi esempi di immagini funzionano con tutti i modelli multimodali Gemini.

Console

Per inviare un prompt multimodale utilizzando la console Google Cloud , procedi nel seguente modo:

  1. Nella sezione Vertex AI della console Google Cloud , vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Fai clic su Apri in formato libero.

  3. (Facoltativo) Configura il modello e i parametri:

    • Modello: seleziona un modello.
    • Regione: seleziona la regione che vuoi utilizzare.
    • Temperatura: utilizza il cursore o la casella di testo per inserire un valore per la temperatura.

      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.

    • Limite di token di output: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.

      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.

    • Aggiungi sequenza di interruzioni: facoltativo. Inserisci una sequenza di interruzioni, ovvero una serie di caratteri che include spazi. Se il modello rileva una sequenza di interruzioni, la generazione della risposta si interrompe. La sequenza di interruzioni non è inclusa nella risposta e puoi aggiungere fino a cinque sequenze di interruzioni.

  4. (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzate e configura come segue:

    Fai clic per espandere le configurazioni avanzate.

    • Top-K: utilizza il cursore o la casella di testo per inserire un valore per Top-K. (non supportato per Gemini 1.5).

      Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K pari a 1 indica che il token successivo selezionato è il più probabile tra tutti i token nel vocabolario del modello (chiamato anche decodifica greedy). Un top-K pari a 3 indica, invece, che il token successivo viene selezionato tra i tre token più probabili (utilizzando la temperatura).

      Per ogni fase di selezione dei token, vengono campionati i token Top-K con le probabilità più alte. Quindi i token vengono ulteriormente filtrati in base a top-P e il token finale viene selezionato utilizzando il campionamento con temperatura.

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

    • Top-P: utilizza il cursore o la casella di testo per inserire un valore per Top-P. I token vengono selezionati a partire da quello più probabile fino a quello meno probabile, finché la somma delle loro probabilità non corrisponde al valore di Top-P. Per ridurre al minimo la variabilità dei risultati, imposta Top-P su 0.
    • Risposte massime: utilizza il cursore o la casella di testo per inserire un valore per il numero di risposte da generare.
    • Risposte dinamiche: attiva questa opzione per stampare le risposte man mano che vengono generate.
    • Soglia del filtro di sicurezza: seleziona la soglia di probabilità di ricevere risposte potenzialmente dannose.
    • Abilita grounding: il grounding non è supportato per i prompt multimodali.

  5. Fai clic su Inserisci contenuti multimediali e seleziona un'origine per il file.

    Carica

    Seleziona il file che vuoi caricare e fai clic su Apri.

    Tramite URL

    Inserisci l'URL del file che vuoi utilizzare e fai clic su Inserisci.

    Cloud Storage

    Seleziona il bucket e poi il file dal bucket che vuoi importare e fai clic su Seleziona.

    Google Drive

    1. Scegli un account e dai il consenso a Vertex AI Studio per accedere al tuo account la prima volta che selezioni questa opzione. Puoi caricare più file con una dimensione totale massima di 10 MB. Un singolo file non può superare 7 MB.
    2. Fai clic sul file che vuoi aggiungere.
    3. Fai clic su Seleziona.

      La miniatura del file viene visualizzata nel riquadro Prompt. Viene visualizzato anche il numero totale di token. Se i dati del prompt superano il limite di token, i token vengono troncati e non sono inclusi nell'elaborazione dei dati.

  6. Inserisci il prompt di testo nel riquadro Prompt.

  7. (Facoltativo) Per visualizzare ID token in testo e ID token, fai clic sul conteggio dei token nel riquadro Prompt.

  8. Fai clic su Invia.

  9. (Facoltativo) Per salvare il prompt in I miei prompt, fai clic su Salva.

  10. (Facoltativo) Per ottenere il codice Python o un comando curl per il prompt, fai clic su Acquisisci codice.

Python

Installa

pip install --upgrade google-genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

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

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

# Read content from GCS
gcs_file_img_path = "gs://cloud-samples-data/generative-ai/image/scones.jpg"

# Read content from a local file
with open("test_data/latte.jpg", "rb") as f:
    local_file_img_bytes = f.read()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[
        "Generate a list of all the objects contained in both images.",
        Part.from_uri(file_uri=gcs_file_img_path, mime_type="image/jpeg"),
        Part.from_bytes(data=local_file_img_bytes, mime_type="image/jpeg"),
    ],
)
print(response.text)
# Example response:
# Okay, here's the list of objects present in both images:
# ...

Go

Scopri come installare o aggiornare Go.

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"
	"os"

	genai "google.golang.org/genai"
)

// generateWithMultiImg shows how to generate text using multiple image inputs.
func generateWithMultiImg(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)
	}

	// TODO(Developer): Update the path to file (image source:
	//   https://storage.googleapis.com/cloud-samples-data/generative-ai/image/latte.jpg )
	imageBytes, err := os.ReadFile("./latte.jpg")
	if err != nil {
		return fmt.Errorf("failed to read image: %w", err)
	}

	contents := []*genai.Content{
		{Parts: []*genai.Part{
			{Text: "Write an advertising jingle based on the items in both images."},
			{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",
			}},
			{InlineData: &genai.Blob{
				Data:     imageBytes,
				MIMEType: "image/jpeg",
			}},
		}},
	}
	modelName := "gemini-2.0-flash-001"

	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:
	// Okay, here's an advertising jingle inspired by the blueberry scones, coffee, flowers, chocolate cake, and latte:
	//
	// (Upbeat, jazzy music)
	// ...

	return nil
}

Node.js

Installa

npm install @google/genai

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateContent(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const ai = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  const image1 = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/scones.jpg',
      mimeType: 'image/jpeg',
    },
  };

  const image2 = {
    fileData: {
      fileUri: 'gs://cloud-samples-data/generative-ai/image/fruit.png',
      mimeType: 'image/png',
    },
  };

  const response = await ai.models.generateContent({
    model: 'gemini-2.0-flash',
    contents: [
      image1,
      image2,
      'Generate a list of all the objects contained in both images.',
    ],
  });

  console.log(response.text);

  return response.text;
}

Java

Scopri come installare o aggiornare Java.

Per saperne di più, consulta la documentazione di riferimento dell'SDK.

Imposta le variabili di ambiente per utilizzare l'SDK Gen AI con Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.Content;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.Part;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class TextGenerationWithMultiImage {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.0-flash";
    // Content from Google Cloud Storage
    String gcsFileImagePath = "gs://cloud-samples-data/generative-ai/image/scones.jpg";
    String localImageFilePath = "test_data/latte.jpg";

    generateContent(modelId, gcsFileImagePath, localImageFilePath);
  }

  public static String generateContent(String modelId, String gcsFileImagePath,
      String localImageFilePath)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client = Client.builder()
        .httpOptions(HttpOptions.builder().apiVersion("v1").build())
        .build()) {

      // Read content from a local file.
      byte[] localFileImgBytes = Files.readAllBytes(Paths.get(localImageFilePath));

      GenerateContentResponse response =
          client.models.generateContent(modelId, Content.fromParts(
                  Part.fromText("Generate a list of all the objects contained in both images"),
                  Part.fromBytes(localFileImgBytes, "image/jpeg"),
                  Part.fromUri(gcsFileImagePath, "image/jpeg")),
              null);

      System.out.print(response.text());
      // Example response:
      // Okay, here's the list of objects present in both images:
      //
      // **Image 1 (Scones):**
      //
      // *   Scones
      // *   Plate
      // *   Jam/Preserve
      // *   Cream/Butter
      // *   Table/Surface
      // *   Napkin/Cloth (possibly)
      //
      // **Image 2 (Latte):**
      //
      // *   Latte/Coffee cup
      // *   Saucer
      // *   Spoon
      // *   Table/Surface
      // *   Foam/Latte art
      //
      // **Objects potentially in both (depending on interpretation and specific items):**
      //
      // *   Plate/Saucer (both are serving dishes)
      // *   Table/Surface
      return response.text();
    }
  }
}

REST

Dopo aver configurato l'ambiente, puoi utilizzare REST per testare un prompt di testo. Il seguente esempio invia una richiesta all'endpoint del modello del publisher.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto
  • FILE_URI1: 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 specificare anche 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.

    Se non disponi di un file immagine in Cloud Storage, puoi utilizzare il seguente file disponibile pubblicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png con un tipo MIME di image/png. Per visualizzare questa immagine, apri il file dell'immagine di esempio.

  • MIME_TYPE: 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 semplicità, questo esempio utilizza lo stesso tipo di media per tutte e tre le immagini di input.
  • TEXT1: Le istruzioni di testo da includere nel prompt. Ad esempio, city: Rome, Landmark: the Colosseum
  • FILE_URI2: 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 specificare anche 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.

    Se non disponi di un file immagine in Cloud Storage, puoi utilizzare il seguente file disponibile pubblicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png con un tipo MIME di image/png. Per visualizzare questa immagine, apri il file dell'immagine di esempio.

  • TEXT2: Le istruzioni di testo da includere nel prompt. Ad esempio, city: Beijing, Landmark: Forbidden City
  • FILE_URI3: 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 specificare anche 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.

    Se non disponi di un file immagine in Cloud Storage, puoi utilizzare il seguente file disponibile pubblicamente: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png con un tipo MIME di image/png. Per visualizzare questa immagine, apri il file dell'immagine di esempio.

Per inviare la richiesta, scegli una di queste opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
EOF

Quindi, esegui questo comando per inviare la richiesta REST:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-flash:generateContent"

PowerShell

Salva il corpo della richiesta in un file denominato request.json. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Quindi, esegui questo comando per inviare la richiesta REST:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-2.5-flash:generateContent" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente.

Nell'URL di questo esempio, nota quanto segue:
  • Utilizza il metodo generateContent per richiedere che la risposta venga restituita dopo essere stata generata completamente. Per ridurre la percezione della latenza per un pubblico umano, trasmetti in streaming la risposta mentre viene generata utilizzando il metodo streamGenerateContent.
  • L'ID del modello multimodale si trova alla fine dell'URL prima del metodo (ad esempio, gemini-2.0-flash). Questo esempio potrebbe supportare anche altri modelli.

Impostare i parametri facoltativi del modello

Ogni modello ha un insieme di parametri facoltativi che puoi impostare. Per ulteriori informazioni, consulta Parametri di generazione dei contenuti.

Tokenizzazione delle immagini

Ecco come vengono calcolati i token per le immagini:

  • Se entrambe le dimensioni di un'immagine sono inferiori o uguali a 384 pixel, vengono utilizzati 258 token.
  • Se una dimensione di un'immagine è superiore a 384 pixel, l'immagine viene ritagliata in riquadri. Per impostazione predefinita, ogni dimensione del riquadro è pari alla dimensione più piccola (larghezza o altezza) divisa per 1,5. Se necessario, ogni riquadro viene modificato in modo che non sia inferiore a 256 pixel e non superiore a 768 pixel. Ogni riquadro viene quindi ridimensionato a 768x768 e utilizza 258 token.

Best practice

Quando utilizzi le immagini, segui queste best practice e informazioni per ottenere i risultati migliori:

  • Se vuoi rilevare il testo in un'immagine, utilizza prompt con una singola immagine per ottenere risultati migliori rispetto ai prompt con più immagini.
  • Se il prompt contiene una sola immagine, inseriscila prima del prompt di testo nella richiesta.
  • Se il prompt contiene più immagini e vuoi farvi riferimento in un secondo momento nel prompt o vuoi che il modello vi faccia riferimento nella risposta, può essere utile assegnare a ogni immagine un indice prima dell'immagine. Utilizza a b c o image 1 image 2 image 3 per l'indice. Di seguito è riportato un esempio di utilizzo di immagini indicizzate in un prompt:
    image 1 
    image 2 
    image 3 
    
    Write a blogpost about my day using image 1 and image 2. Then, give me ideas
    for tomorrow based on image 3.
  • Utilizza immagini con una risoluzione più elevata, in quanto producono risultati migliori.
  • Includi alcuni esempi nel prompt.
  • Ruota le immagini nell'orientamento corretto prima di aggiungerle al prompt.
  • Evita immagini sfocate.

Limitazioni

Sebbene i modelli multimodali Gemini siano potenti in molti casi d'uso multimodali, è importante comprendere i limiti dei modelli:

  • Moderazione dei contenuti: i modelli si rifiutano di fornire risposte su immagini che violano le nostre norme di sicurezza.
  • Ragionamento spaziale: i modelli non sono precisi nell'individuazione di testo o oggetti nelle immagini. Potrebbero restituire solo i conteggi approssimativi degli oggetti.
  • Usi medici: i modelli non sono adatti per interpretare immagini mediche (ad esempio radiografie e tomografie) o per fornire consulenza medica.
  • Riconoscimento delle persone: i modelli non sono pensati per identificare persone non famose nelle immagini.
  • Precisione: i modelli potrebbero avere allucinazioni o commettere errori quando interpretano immagini di bassa qualità, ruotate o a risoluzione estremamente bassa. I modelli potrebbero anche avere allucinazioni quando interpretano il testo scritto a mano in documenti di immagini.

Passaggi successivi