Puoi aggiungere immagini alle richieste di Gemini per eseguire attività che prevedono comprendere i contenuti delle immagini incluse. In questa pagina viene spiegato come aggiungere immagini alle tue richieste a Gemini in Vertex AI utilizzando Console Google Cloud e l'API Vertex AI.
Modelli supportati
Nella tabella seguente sono elencati i modelli che supportano la comprensione delle immagini:
Modello | Dettagli delle modalità delle immagini |
---|---|
Gemini 1.5 Flash Vai alla scheda del modello Flash Gemini 1.5 |
Numero massimo di immagini per prompt: 3000 |
Gemini 1.5 Pro Vai alla scheda del modello Gemini 1.5 Pro |
Numero massimo di immagini per prompt: 3000 |
Gemini 1.0 Pro Vision Vai alla scheda del modello Gemini 1.0 Pro Vision |
Numero massimo di immagini per prompt: 16 |
Per un elenco delle lingue supportate dai modelli Gemini, consulta le informazioni sul modello Modelli Google. Per ulteriori informazioni di più su come progettare prompt multimodali, vedi Progettare prompt multimodali. Se stai cercando un modo per usare Gemini direttamente dal tuo dispositivo mobile app web, consulta le Vertex AI negli SDK Firebase per App per Android, Swift, web e Flutter.
Aggiungi immagini a una richiesta
Puoi aggiungere una singola immagine o più immagini nella tua richiesta a Gemini.
Immagine singola
Il codice campione in ciascuna delle seguenti schede mostra un modo diverso di identificare del contenuto di un'immagine. Questo esempio funziona con tutti i modelli multimodali Gemini.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta SDK Vertex AI per Python documentazione di riferimento dell'API.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il parametro stream
in
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Per una risposta non in streaming, rimuovi il parametro o impostalo su
False
.
Codice di esempio
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento dell'SDK Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Per una risposta non in streaming, utilizza il metodo
generateContent
.
public GenerateContentResponse generateContent(Content content)
Codice di esempio
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella documentazione sull'IA generativa rapida utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini documentazione.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in streaming, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento dell'SDK Go per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Per una risposta non di streaming, utilizza il metodo GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Codice di esempio
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento C#.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in streaming, utilizza il metodo
GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Per ulteriori informazioni su come il server può trasmettere le risposte in streaming, consulta RPC per i flussi di dati.
Codice di esempio
REST
Dopo configurare l'ambiente, puoi usare REST per testare un prompt di testo. Il seguente esempio invia una richiesta al publisher endpoint del modello.
Puoi includere immagini archiviate in Cloud Storage o utilizzare con codifica Base64.Immagine in Cloud Storage
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
LOCATION
: la regione in cui elaborare richiesta. Inserisci una regione supportata. Per l'elenco completo delle regioni supportate, vedi 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.FILE_URI
: L'URI Cloud Storage del file da includere nel prompt. L'oggetto bucket deve essere leggibili pubblicamente o risiedono nello stesso progetto Google Cloud che invia la richiesta. Devi inoltre specifica il tipo di supporto (mimeType
) del file.Se non hai un file immagine in Cloud Storage, puoi usare quanto segue: file disponibile al pubblico:
gs://cloud-samples-data/generative-ai/image/scones.jpg
con un tipo MIMEimage/jpeg
. Per visualizzare questa immagine: apri l'immagine di esempio .MIME_TYPE
: Il tipo di supporto del file specificato indata
ofileUri
campi. I valori accettati sono:Fai clic per espandere i tipi MIME
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
: Le istruzioni testuali da includere nel prompt. Ad esempio:What is shown in this image?
Per inviare la richiesta, scegli una delle seguenti 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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, effettua le seguenti sostituzioni:
LOCATION
: la regione in cui elaborare richiesta. Inserisci una regione supportata. Per l'elenco completo delle regioni supportate, vedi 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 per includere l'incorporamento nel prompt. Se includi contenuti multimediali in linea, devi specificare anche i relativi tipo (mimeType
) di dati.MIME_TYPE
: Il tipo di supporto del file specificato indata
ofileUri
campi. I valori accettati sono:Fai clic per espandere i tipi MIME
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT
: Le istruzioni testuali da includere nel prompt. Ad esempio:What is shown in this image?
.
Per inviare la richiesta, scegli una delle seguenti 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
- Utilizza la
generateContent
per richiedere che la risposta venga restituita dopo la sua completa generazione. Per ridurre la percezione della latenza per un pubblico umano, trasmetti la risposta in tempo reale generati utilizzandostreamGenerateContent
. - L'ID modello multimodale si trova alla fine dell'URL prima del metodo
(ad esempio,
gemini-1.5-flash
ogemini-1.0-pro-vision
). Questo esempio potrebbe supportare altri modelli di machine learning.
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, esegui la seguenti:
- Nella sezione Vertex AI della console Google Cloud, vai a la pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
(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 dell'acqua.
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quandotopP
etopK
. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono una risposta meno aperta o creativa, mentre temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura di0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato sono per lo più deterministici, ma è ancora possibile una piccola variazione.Se il modello restituisce una risposta troppo generica, troppo breve, oppure fornisce una risposta di riserva di risposta, prova ad aumentare la temperatura.
Limite di token di output. Utilizza il dispositivo di scorrimento o la casella di testo per inserire un valore per il parametro limite massimo di output.
Numero massimo di token che possono essere generati nella risposta. Un token è di 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 diverse.
- Aggiungi una sequenza di interruzioni: facoltativo. Inserisci una sequenza di interruzioni, ovvero una serie che includono spazi. Se il modello incontra 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.
- (Facoltativo) Per configurare parametri avanzati, fai clic su Avanzato e configurala come segue:
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 di1
significa che il successivo token selezionato è il più probabile tra tutti nel vocabolario del modello (chiamato anche decodifica greedy), mentre una top-K di3
significa che il token successivo viene selezionato tra i tre probabili token utilizzando la temperatura.Per ogni passaggio di selezione dei token, vengono mostrati i token top-K con il vengono campionate. Quindi i token vengono ulteriormente filtrati in base a top-P con il token finale selezionato utilizzando il campionamento della temperatura.
Specifica un valore più basso per risposte meno casuali e un valore più alto per più risposte risposte casuali.
- Top-P: utilizza il cursore o la casella di testo per inserire un valore per top-P.
I token vengono selezionati dal più probabile al meno probabile fino alla somma dei loro
le probabilità equivalgono al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: il grounding non è supportato per la modalità multimodale personalizzati.
- Per caricare contenuti multimediali, ad esempio file PNG, procedi nel seguente modo: seguenti:
- Fai clic su Inserisci file multimediali e seleziona un'origine.
Se scegli Google Drive come fonte, devi scegliere un account e dare il consenso Vertex AI Studio per accedere al tuo account la prima volta seleziona questa opzione. Puoi caricare più file multimediali con un totale di fino a 10 MB. Un singolo file non può superare i 7 MB.
- Fai clic sul file che vuoi aggiungere.
- Fai clic su Seleziona.
La miniatura del file viene visualizzata nel riquadro Prompt. Viene visualizzato anche il numero totale di token. Se i dati dei prompt superano il limite di token, i token vengono troncati e non vengono inclusi nell'elaborazione dei dati.
- (Facoltativo) Per visualizzare il numero di token calcolati nelle immagini e la somma di tutti i token, fai clic su Visualizza token.
Il calcolo del conteggio dei token per i file multimediali può richiedere fino a 15 secondi. Le visualizzazioni ID token in testo e ID token non mostrano output utili, poiché i token multimediali non sono supportati.
Per chiudere il riquadro dello strumento tokenizzatore, fai clic sulla X o fai clic all'esterno del riquadro.
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- (Facoltativo) Per visualizzare il numero di token calcolati nelle immagini e la somma di tutti i token, fai clic su Visualizza token. Puoi visualizzare i token o gli ID token del tuo prompt di testo.
- Per visualizzare nel prompt di testo i token evidenziati con colori diversi che contrassegnano il confine di ciascun ID token, fai clic su da ID token a testo. I token multimediali non sono supportati.
- Per visualizzare gli ID token, fai clic su ID token.
Per chiudere il riquadro dello strumento tokenizzatore, fai clic sulla X o fai clic all'esterno del riquadro.
- Fai clic su Invia.
- (Facoltativo) Per salvare il prompt in I miei prompt, fai clic su Salva.
- (Facoltativo) Per ottenere il codice Python o un comando curl per il prompt, fai clic su Ricevi codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Più immagini
Ognuna delle seguenti schede mostra un modo diverso per includere più immagini in una richiesta di prompt. Ogni campione utilizza due insiemi dei seguenti input:
- Immagine di un famoso punto di riferimento cittadino
- Il tipo multimediale dell'immagine
- Testo che indica la città e il punto di riferimento nell'immagine
L'esempio accetta anche un terzo tipo di immagine e di elemento multimediale, ma non di 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.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta SDK Vertex AI per Python documentazione di riferimento dell'API.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il parametro stream
in
generate_content
.
response = model.generate_content(contents=[...], stream = True)
Per una risposta non in streaming, rimuovi il parametro o impostalo su
False
.
Codice di esempio
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento dell'SDK Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
generateContentStream
.
public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
Per una risposta non in streaming, utilizza il metodo
generateContent
.
public GenerateContentResponse generateContent(Content content)
Codice di esempio
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nella documentazione sull'IA generativa rapida utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini documentazione.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in streaming, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento dell'SDK Go per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Per una risposta non di streaming, utilizza il metodo GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Codice di esempio
C#
Prima di provare questo esempio, segui le istruzioni di configurazione C# in Vertex AI Guida rapida. Per ulteriori informazioni, consulta la sezione Vertex AI documentazione di riferimento C#.
Per eseguire l'autenticazione su Vertex AI, configura l'impostazione predefinita dell'applicazione Credenziali. Per ulteriori informazioni, consulta la sezione Configurazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte flussi di dati oppure risposte non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non dinamiche, ricevi tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in streaming, utilizza il metodo
GenerateContentAsync
.
public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
Per ulteriori informazioni su come il server può trasmettere le risposte in streaming, consulta RPC per i flussi di dati.
Codice di esempio
REST
Dopo configurare l'ambiente, puoi usare REST per testare un prompt di testo. Il seguente esempio invia una richiesta al publisher endpoint del modello.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
LOCATION
: la regione in cui elaborare richiesta. Inserisci una regione supportata. Per l'elenco completo delle regioni supportate, vedi 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.FILE_URI1
: L'URI Cloud Storage del file da includere nel prompt. L'oggetto bucket deve essere leggibili pubblicamente o risiedono nello stesso progetto Google Cloud che invia la richiesta. Devi inoltre specifica il tipo di supporto (mimeType
) del file.Se non hai un file immagine in Cloud Storage, puoi usare quanto segue: file disponibile al pubblico:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png
con un tipo MIMEimage/png
. Per visualizzare questa immagine: apri l'immagine di esempio .MIME_TYPE
: Il tipo di supporto del file specificato indata
ofileUri
campi. I valori accettati sono:Fai clic per espandere i tipi MIME
application/pdf
audio/mpeg
audio/mp3
audio/wav
image/png
image/jpeg
text/plain
video/mov
video/mpeg
video/mp4
video/mpg
video/avi
video/wmv
video/mpegps
video/flv
TEXT1
: Le istruzioni testuali da includere nel prompt. Ad esempio:city: Rome, Landmark: the Colosseum
FILE_URI2
: L'URI Cloud Storage del file da includere nel prompt. L'oggetto bucket deve essere leggibili pubblicamente o risiedono nello stesso progetto Google Cloud che invia la richiesta. Devi inoltre specifica il tipo di supporto (mimeType
) del file.Se non hai un file immagine in Cloud Storage, puoi usare quanto segue: file disponibile al pubblico:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png
con un tipo MIMEimage/png
. Per visualizzare questa immagine: apri l'immagine di esempio .TEXT2
: Le istruzioni testuali da includere nel prompt. Ad esempio:city: Beijing, Landmark: Forbidden City
FILE_URI3
: L'URI Cloud Storage del file da includere nel prompt. L'oggetto bucket deve essere leggibili pubblicamente o risiedono nello stesso progetto Google Cloud che invia la richiesta. Devi inoltre specifica il tipo di supporto (mimeType
) del file.Se non hai un file immagine in Cloud Storage, puoi usare quanto segue: file disponibile al pubblico:
gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png
con un tipo MIMEimage/png
. Per visualizzare questa immagine: apri l'immagine di esempio .
Per inviare la richiesta, scegli una delle seguenti 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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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_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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
. Tieni presente quanto segue nell'URL di questo esempio:- .
- Utilizza la
generateContent
per richiedere che la risposta venga restituita dopo la sua completa generazione. Per ridurre la percezione della latenza per un pubblico umano, trasmetti la risposta in tempo reale generati utilizzandostreamGenerateContent
. - L'ID modello multimodale si trova alla fine dell'URL prima del metodo
(ad esempio,
gemini-1.5-flash
ogemini-1.0-pro-vision
). Questo esempio potrebbe supportare altri modelli di machine learning.
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, esegui la seguenti:
- Nella sezione Vertex AI della console Google Cloud, vai a la pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
(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 dell'acqua.
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quandotopP
etopK
. La temperatura controlla il grado di casualità nella selezione dei token. Le temperature più basse sono ideali per prompt che richiedono una risposta meno aperta o creativa, mentre temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura di0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato sono per lo più deterministici, ma è ancora possibile una piccola variazione.Se il modello restituisce una risposta troppo generica, troppo breve, oppure fornisce una risposta di riserva di risposta, prova ad aumentare la temperatura.
Limite di token di output. Utilizza il dispositivo di scorrimento o la casella di testo per inserire un valore per il parametro limite massimo di output.
Numero massimo di token che possono essere generati nella risposta. Un token è di 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 diverse.
- Aggiungi una sequenza di interruzioni: facoltativo. Inserisci una sequenza di interruzioni, ovvero una serie che includono spazi. Se il modello incontra 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.
- (Facoltativo) Per configurare parametri avanzati, fai clic su Avanzato e configurala come segue:
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 di1
significa che il successivo token selezionato è il più probabile tra tutti nel vocabolario del modello (chiamato anche decodifica greedy), mentre una top-K di3
significa che il token successivo viene selezionato tra i tre probabili token utilizzando la temperatura.Per ogni passaggio di selezione dei token, vengono mostrati i token top-K con il vengono campionate. Quindi i token vengono ulteriormente filtrati in base a top-P con il token finale selezionato utilizzando il campionamento della temperatura.
Specifica un valore più basso per risposte meno casuali e un valore più alto per più risposte risposte casuali.
- Top-P: utilizza il cursore o la casella di testo per inserire un valore per top-P.
I token vengono selezionati dal più probabile al meno probabile fino alla somma dei loro
le probabilità equivalgono al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: il grounding non è supportato per la modalità multimodale personalizzati.
- Per caricare contenuti multimediali, ad esempio file PNG, procedi nel seguente modo: seguenti:
- Fai clic su Inserisci file multimediali e seleziona un'origine.
Se scegli Google Drive come fonte, devi scegliere un account e dare il consenso Vertex AI Studio per accedere al tuo account la prima volta seleziona questa opzione. Puoi caricare più file multimediali con un totale di fino a 10 MB. Un singolo file non può superare i 7 MB.
- Fai clic sul file che vuoi aggiungere.
- Fai clic su Seleziona.
La miniatura del file viene visualizzata nel riquadro Prompt. Viene visualizzato anche il numero totale di token. Se i dati dei prompt superano il limite di token, i token vengono troncati e non vengono inclusi nell'elaborazione dei dati.
- (Facoltativo) Per visualizzare il numero di token calcolati nelle immagini e la somma di tutti i token, fai clic su Visualizza token.
Il calcolo del conteggio dei token per i file multimediali può richiedere fino a 15 secondi. Le visualizzazioni ID token in testo e ID token non mostrano output utili, poiché i token multimediali non sono supportati.
Per chiudere il riquadro dello strumento tokenizzatore, fai clic sulla X o fai clic all'esterno del riquadro.
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- (Facoltativo) Per visualizzare il numero di token calcolati nelle immagini e la somma di tutti i token, fai clic su Visualizza token. Puoi visualizzare i token o gli ID token del tuo prompt di testo.
- Per visualizzare nel prompt di testo i token evidenziati con colori diversi che contrassegnano il confine di ciascun ID token, fai clic su da ID token a testo. I token multimediali non sono supportati.
- Per visualizzare gli ID token, fai clic su ID token.
Per chiudere il riquadro dello strumento tokenizzatore, fai clic sulla X o fai clic all'esterno del riquadro.
- Fai clic su Invia.
- (Facoltativo) Per salvare il prompt in I miei prompt, fai clic su Salva.
- (Facoltativo) Per ottenere il codice Python o un comando curl per il prompt, fai clic su Ricevi codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Imposta i parametri del modello
Sui modelli multimodali è possibile impostare i seguenti parametri:
Top-P
Top-P cambia il modo in cui il modello seleziona i token per l'output. Token selezionati
dal più probabile (vedi top-K) al meno probabile fino alla somma delle probabilità
equivale al 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 più risposte risposte casuali.
Top-K
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di
1
significa che il successivo token selezionato è il più probabile tra tutti
nel vocabolario del modello (chiamato anche decodifica greedy), mentre una top-K di
3
significa che il token successivo viene selezionato tra i tre
probabili token utilizzando la temperatura.
Per ogni passaggio di selezione dei token, vengono mostrati i token top-K con il vengono campionate. Quindi i token vengono ulteriormente filtrati in base a top-P con il token finale selezionato utilizzando il campionamento della temperatura.
Specifica un valore più basso per risposte meno casuali e un valore più alto per più risposte risposte casuali.
Temperatura
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando topP
e topK
. La temperatura controlla il grado di casualità nella selezione dei token.
Le temperature più basse sono ideali per prompt che richiedono una risposta meno aperta o creativa, mentre
temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura di 0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte per un determinato
sono per lo più deterministici, ma è ancora possibile una piccola variazione.
Se il modello restituisce una risposta troppo generica, troppo breve, oppure fornisce una risposta di riserva di risposta, prova ad aumentare la temperatura.
Valori parametro validi
Parametro | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1 - 40 (valore predefinito 32) | Non supportata | Non supportata |
Top-P | 0 - 1,0 (valore predefinito 1,0) | 0 - 1,0 (valore predefinito 0,95) | 0 - 1,0 (valore predefinito 0,95) |
Temperatura | 0 - 1,0 (valore predefinito 0,4) | 0 - 2,0 (valore predefinito 1,0) | 0 - 2,0 (valore predefinito 1,0) |
Requisiti delle immagini
I modelli multimodali Gemini supportano i seguenti tipi MIME delle immagini:
Tipo MIME immagine | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
PNG - image/png |
|||
JPEG - image/jpeg |
Non esiste un limite specifico al numero di pixel in un'immagine. Tuttavia, le immagini più grandi vengono ridimensionate e riempite per adattarsi a una risoluzione massima di 3072 x 3072 mantenendo le proporzioni originali.
Ecco il numero massimo di file immagine consentiti in una richiesta di prompt:
- Gemini 1.0 Pro Vision: 16 immagini
- Gemini 1.5 Flash e Gemini 1.5 Pro: 3000 immagini
Ecco come vengono calcolati i token per le immagini:
- Gemini 1.0 Pro Vision: ogni immagine rappresenta per 258 token.
- Gemini 1.5 Flash e
Gemini 1.5 Pro:
- .
- Se entrambe le dimensioni di un'immagine sono minori 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 è la più piccola (larghezza o altezza) diviso per 1,5. Se necessario, ogni riquadro viene regolata in modo che non sia inferiore a 256 pixel e non superiore a 768 pixel. Ogni riquadro viene quindi ridimensionato a 768 x 768 e utilizza 258 token.
Best practice
Quando utilizzi le immagini, attieniti alle best practice e alle informazioni riportate di seguito per i migliori risultati:
- Se vuoi rilevare il testo in un'immagine, utilizza i prompt con una singola immagine per producono risultati migliori rispetto ai prompt con più immagini.
- Se il prompt contiene una singola immagine, posiziona l'immagine prima del testo nella tua richiesta.
- Se il prompt contiene più immagini e vuoi fare riferimento a queste
più avanti nel prompt o fare in modo che il modello vi faccia riferimento nella risposta del modello,
può essere utile assegnare a ciascuna immagine un indice prima. Utilizza le funzionalità di
oppurea
b
c
per il tuo indice. Di seguito è riportato un esempio di utilizzo di immagini indicizzate in un :image 1
image 2
image 3
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. - Utilizzare immagini con risoluzione più alta. otteniamo risultati migliori.
- Includi alcuni esempi nel prompt.
- Ruota le immagini per orientarle prima di aggiungerle a richiesta.
- Evita immagini sfocate.
Limitazioni
Sebbene i modelli multimodali Gemini siano potenti in molti utilizzi multimodali, in questi casi, è importante comprendere i limiti dei modelli:
- Moderazione dei contenuti: i modelli si rifiutano di fornire risposte. sulle immagini che violano le nostre norme sulla sicurezza.
- Ragionamento spaziale: i modelli non sono precisi nel localizzare di testo o oggetti nelle immagini. Potrebbero restituire solo i conteggi approssimativi di di oggetti strutturati.
- Utilizzi medici: i modelli non sono adatti per l'interpretazione immagini mediche (ad esempio radiografie e tomografie) o assistenza medica Google Cloud.
- Riconoscimento delle persone: i modelli non sono destinati a essere utilizzati per: identificare persone che non sono celebrità nelle immagini.
- Accuratezza: i modelli potrebbero avere allucinazioni o commettere errori. quando si interpretano immagini di bassa qualità, ruotate o con risoluzione estremamente bassa. I modelli potrebbero anche avere allucinazioni quando interpretano il testo scritto a mano in di immagine.
Passaggi successivi
- Inizia a creare con i modelli multimodali Gemini. I nuovi clienti ricevono 300 $di crediti Google Cloud gratuiti per scoprire cosa possono fare con Gemini.
- Scopri come inviare richieste di prompt di chat.
- Scopri di più sulle best practice per l'IA responsabile e sui filtri di sicurezza di Vertex AI.