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 che non sono multimodali accettano solo richieste di testo. Le modalità possono includere testo, audio, video e altro ancora.
Esistono diversi modi per implementare soluzioni multimodali utilizzando l'API Gemini, tra cui gli SDK Python, Node.js, Java e Go, la console Google Cloud e l'API REST. Gli esempi di codice più avanti in questo documento mostrano come creare soluzioni multimodali utilizzando queste opzioni.
I modelli multimodali Gemini sono:
- Gemini 1.5 Flash
- Gemini 1.5 Pro
- Gemini 1.0 Pro Vision
La seguente tabella indica le modalità con cui funziona ogni API Gemini multimodale in una richiesta di prompt.
Modello | Testo | Codice | Immagini | Audio | Video | Video/audio | |
---|---|---|---|---|---|---|---|
Gemini 1.5 Flash | |||||||
Gemini 1.5 Pro | |||||||
Gemini 1.0 Pro Vision | |||||||
Gemini 1.0 Pro |
Per esplorare un modello multimodale nella console Google Cloud, seleziona la relativa scheda in Model Garden:
- Vai alla scheda del modello Flash Gemini 1.5
- Vai alla scheda del modello Gemini 1.5 Pro
- Vai alla scheda del modello Gemini 1.0 Pro Vision
Per un elenco delle lingue supportate dai modelli Gemini, consulta le informazioni sul modello Supporto delle lingue. Per saperne di più su come progettare prompt multimodali, consulta Progettazione di prompt multimodali. Se stai cercando un modo per utilizzare Gemini direttamente dalle tue app per dispositivi mobili e web, consulta gli SDK Google AI per Android, Swift e web.
Differenze nei modelli multimodali
Le differenze tra i modelli multimodali Gemini sono specificate nelle seguenti tabelle. Puoi utilizzare queste informazioni per decidere qual è il modello migliore per te.
Testo
Di seguito sono riportate alcune delle differenze nella modalità di testo tra i modelli multimodali Gemini:
Modello | Dettagli della modalità di testo |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
La lunghezza del contesto è di 1 milione di token,che equivale a circa un libro di 4000 pagine. In questo modo, il modello può generare testo in formato lungo, ad esempio libri, più PDF o manuali dell'utente. |
Gemini 1.0 Pro Vision | Il numero massimo di token è 16.384,pari a circa 128 pagine di un libro, supponendo che ci siano 250 parole per pagina. Questo valore massimo include i token di input e di output. Il numero massimo di token di output è 2048. |
Codice
Di seguito sono riportate alcune delle differenze tra i modelli multimodali Gemini quando si lavora con il codice:
Modello | Dettagli modalità di codice |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
La lunghezza del contesto è di 1 milione di token, che consente al modello di funzionare con un intero codebase o un intero codebase dell'applicazione. |
Gemini 1.0 Pro Vision | Il numero massimo di token è 16.384,pari a circa 128 pagine di un libro, supponendo che ci siano 250 parole per pagina. Questo valore massimo include i token di input e di output. Il numero massimo di token di output è 2048. |
Immagine
Di seguito sono riportate alcune delle differenze nella modalità dell'immagine tra i modelli multimodali Gemini:
Modello | Dettagli delle modalità delle immagini |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
Il numero massimo di immagini per prompt è 3000. |
Gemini 1.0 Pro Vision | Il numero massimo di immagini per prompt è 16. |
Audio (solo voce)
Di seguito sono riportate alcune delle differenze nella modalità audio tra i modelli multimodali di Gemini:
Modello | Dettagli modalità audio |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
Il numero massimo di ore di audio per prompt è di circa 8, 4 ore o fino a 1 milione di token. Il parlato può essere compreso per il riassunto, la trascrizione e la traduzione audio. |
Gemini 1.0 Pro Vision | L'audio non è supportato. |
Video
Di seguito sono riportate alcune delle differenze nella modalità video tra i modelli multimodali Gemini:
Modello | Dettagli della modalità video |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
La durata massima del video quando è incluso l'audio è di circa 50 minuti. La durata massima del video senza audio è di un'ora. Il numero massimo di video per richiesta è 10. Il modello è in grado di utilizzare i dati video e audio per rispondere al prompt. Ad esempio, può riassumere un video utilizzando sia i contenuti visivi sia il parlato. |
Gemini 1.0 Pro Vision | La durata massima del video è 2 minuti. Il numero massimo di video per richiesta è 1. L'audio nel video viene ignorato. |
Di seguito sono riportate alcune delle differenze nella modalità PDF tra i modelli multimodali Gemini:
Modello | Dettagli sulla modalità PDF |
---|---|
Gemini 1.5 Flash, Gemini 1.5 Pro |
Il numero massimo di pagine per prompt è 300. La dimensione massima di un PDF è 30 MB. |
Gemini 1.0 Pro Vision | Il numero massimo di pagine per prompt è 16. La dimensione massima di un PDF è 30 MB. |
Guida rapida
Usa i seguenti esempi di codice per iniziare a utilizzare l'API Gemini. Ogni esempio di codice mostra come lavorare con una modalità diversa. Alcuni esempi di codice in questo documento funzionano con tutti i modelli multimodali Gemini, mentre altri funzionano solo con Gemini 1.5 Pro. Ogni esempio di codice specifica i modelli con cui funziona.
Per eseguire test e iterazioni di prompt multimodali, consigliamo di utilizzare la console Google Cloud. Per inviare al modello in modo programmatico un prompt multimodale, puoi utilizzare l'API REST, l'SDK Vertex AI per Python o uno degli altri SDK e librerie supportati mostrati nelle schede seguenti.
Immagine singola
Gli esempi di codice mostrano come identificare i contenuti di un'immagine.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
REST
Puoi utilizzare REST per testare un prompt di testo utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- GENERATE_RESPONSE_METHOD: il tipo di risposta che deve essere generato dal modello.
Scegli un metodo che generi il modo in cui vuoi che venga restituita la risposta del modello:
streamGenerateContent
: la risposta viene riprodotta in streaming durante la generazione per ridurre la percezione della latenza per un pubblico umano.generateContent
: la risposta viene restituita dopo che è stata completamente generata.
- LOCATION: la regione in cui elaborare la richiesta. Le opzioni disponibili sono le seguenti:
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.
- MODEL_ID: l'ID del modello multimodale
che vuoi utilizzare. Le opzioni sono:
gemini-1.0-pro-vision
- ROLE:
il ruolo in una conversazione associata ai contenuti. È necessario specificare un ruolo anche
nei casi d'uso a turno singolo.
I valori accettati sono:
USER
: specifica i contenuti inviati da te.
- TEXT: le istruzioni di testo da includere nel prompt.
- B64_BASE:
la codifica base64 dell'immagine, del PDF o del video
da includere nel prompt. Quando vengono inclusi elementi multimediali in linea, devi specificare anche il tipo di elemento multimediale (
mimeType
) dei dati. - FILE_URI:
l'URI Cloud Storage del file da includere nel prompt. L'oggetto del bucket deve essere leggibile pubblicamente o risiedere nello stesso progetto Google Cloud che invia la richiesta. Devi anche specificare il tipo di supporto (
mimeType
) del file. - MIME_TYPE:
il tipo di supporto del file specificato nei campi
data
ofileUri
. 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
- SAFETY_CATEGORY:
la categoria di sicurezza per cui configurare una soglia. I valori accettati sono:
Fai clic per espandere le categorie di sicurezza
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:
la soglia per il blocco delle risposte che potrebbero appartenere alla categoria di sicurezza specificata in base alla
probabilità. I valori accettati sono:
Fai clic per espandere le soglie di blocco
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(valore predefinito)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
blocca di più, mentreBLOCK_ONLY_HIGH
blocca meno. - TEMPERATURE:
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati
topP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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.
- TOP_P:
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 probabilità non corrisponde 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 selezionerà 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.
- TOP_K:
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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.
- MAX_OUTPUT_TOKENS:
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.
- STOP_SEQUENCES:
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 appare 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 quandostopSequences
non è specificato:
public static string reverse(string myString)
La risposta restituita constopSequences
impostato su["Str", "reverse"]
è:
public static string
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corpo JSON della richiesta:
{ "contents": { "role": "ROLE", "parts": [ { "inlineDATA": { "mimeType": "MIME_TYPE", "data": "B64_BASE_IMAGE" } }, { "fileData": { "mimeType": "MIME_TYPE", "fileUri": "FILE_URI" } }, { "text": "TEXT" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
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/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$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/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Comando curl di esempio
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": {
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "image/png",
"fileUri": "gs://my-bucket/images/cat.png"
}
},
{
"text": "Describe this picture."
},
]
},
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.4,
"topP": 1,
"topK": 32,
"maxOutputTokens": 2048,
}
}'
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
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 applicatitopP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.
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: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
- (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzato e configura come segue:
Top-K: utilizza il cursore o la casella di testo per inserire un valore per top-K.
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di1
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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 dal più probabile al meno probabile finché la somma delle probabilità non corrisponde al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: se abilitata, questa opzione fornisce risposte del modello basate sui fatti. Il grounding supporta solo l'input di testo e l'output di testo. Per maggiori informazioni, consulta Panoramica del grounding.
- Seleziona Abilita grounding.
- Fai clic su Personalizza.
- Specifica l'origine e il percorso di grounding.
- Fai clic su Salva.
- Risposte dinamiche: questa opzione non è attiva. La console Google Cloud supporta solo i flussi di dati, che prevedono la ricezione di risposte ai prompt man mano che vengono generate.
- Per caricare contenuti multimediali, ad esempio file PDF, MP4, WAV e JPG, procedi nel seguente modo:
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- Fai clic su Inserisci elemento multimediale e seleziona un'origine. Se scegli Google Drive come origine, devi scegliere un account e dare il consenso a Vertex AI Studio ad accedere al tuo account la prima volta che selezioni questa opzione. Per caricare più file, ripeti questo passaggio. Puoi caricare più immagini con una dimensione totale del prompt di 10 MB. Un singolo file non può superare i 7 MB.
- Vai al file che vuoi caricare, fai clic sul file e poi su Seleziona. La miniatura del file viene visualizzata nel riquadro Prompt.
- Fai clic su Invia per generare la risposta.
- (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 Ottieni codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
PDF singolo
Gli esempi di codice mostrano come includere un PDF in una richiesta di prompt utilizzando l'SDK Vertex AI per Python.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
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 applicatitopP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.
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: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
- (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzato e configura come segue:
Top-K: utilizza il cursore o la casella di testo per inserire un valore per top-K.
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di1
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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 dal più probabile al meno probabile finché la somma delle probabilità non corrisponde al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: se abilitata, questa opzione fornisce risposte del modello basate sui fatti. Il grounding supporta solo l'input di testo e l'output di testo. Per maggiori informazioni, consulta Panoramica del grounding.
- Seleziona Abilita grounding.
- Fai clic su Personalizza.
- Specifica l'origine e il percorso di grounding.
- Fai clic su Salva.
- Risposte dinamiche: questa opzione non è attiva. La console Google Cloud supporta solo i flussi di dati, che prevedono la ricezione di risposte ai prompt man mano che vengono generate.
- Per caricare contenuti multimediali, ad esempio file PDF, MP4, WAV e JPG, procedi nel seguente modo:
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- Fai clic su Inserisci elemento multimediale e seleziona un'origine. Se scegli Google Drive come origine, devi scegliere un account e dare il consenso a Vertex AI Studio ad accedere al tuo account la prima volta che selezioni questa opzione. Per caricare più file, ripeti questo passaggio. Puoi caricare più immagini con una dimensione totale del prompt di 10 MB. Un singolo file non può superare i 7 MB.
- Vai al file che vuoi caricare, fai clic sul file e poi su Seleziona. La miniatura del file viene visualizzata nel riquadro Prompt.
- Fai clic su Invia per generare la risposta.
- (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 Ottieni codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Video singolo
Gli esempi di codice mostrano come includere un video in una richiesta di prompt.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, 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 nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Go per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
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 per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
REST
Puoi utilizzare REST per testare un prompt di testo utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- GENERATE_RESPONSE_METHOD: il tipo di risposta che deve essere generato dal modello.
Scegli un metodo che generi il modo in cui vuoi che venga restituita la risposta del modello:
streamGenerateContent
: la risposta viene riprodotta in streaming durante la generazione per ridurre la percezione della latenza per un pubblico umano.generateContent
: la risposta viene restituita dopo che è stata completamente generata.
- LOCATION: la regione in cui elaborare la richiesta. Le opzioni disponibili sono le seguenti:
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.
- MODEL_ID: l'ID del modello multimodale
che vuoi utilizzare. Le opzioni sono:
gemini-1.0-pro-vision
- ROLE:
il ruolo in una conversazione associata ai contenuti. È necessario specificare un ruolo anche
nei casi d'uso a turno singolo.
I valori accettati sono:
USER
: specifica i contenuti inviati da te.
- TEXT: le istruzioni di testo da includere nel prompt.
- B64_BASE:
la codifica base64 dell'immagine, del PDF o del video
da includere nel prompt. Quando vengono inclusi elementi multimediali in linea, devi specificare anche il tipo di elemento multimediale (
mimeType
) dei dati. - FILE_URI:
l'URI Cloud Storage del file da includere nel prompt. L'oggetto del bucket deve essere leggibile pubblicamente o risiedere nello stesso progetto Google Cloud che invia la richiesta. Devi anche specificare il tipo di supporto (
mimeType
) del file. - MIME_TYPE:
il tipo di supporto del file specificato nei campi
data
ofileUri
. 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
- SAFETY_CATEGORY:
la categoria di sicurezza per cui configurare una soglia. I valori accettati sono:
Fai clic per espandere le categorie di sicurezza
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:
la soglia per il blocco delle risposte che potrebbero appartenere alla categoria di sicurezza specificata in base alla
probabilità. I valori accettati sono:
Fai clic per espandere le soglie di blocco
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(valore predefinito)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
blocca di più, mentreBLOCK_ONLY_HIGH
blocca meno. - TEMPERATURE:
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati
topP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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.
- TOP_P:
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 probabilità non corrisponde 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 selezionerà 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.
- TOP_K:
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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.
- MAX_OUTPUT_TOKENS:
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.
- STOP_SEQUENCES:
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 appare 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 quandostopSequences
non è specificato:
public static string reverse(string myString)
La risposta restituita constopSequences
impostato su["Str", "reverse"]
è:
public static string
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corpo JSON della richiesta:
{ "contents": { "role": "ROLE", "parts": [ { "inlineDATA": { "mimeType": "MIME_TYPE", "data": "B64_BASE_IMAGE" } }, { "fileData": { "mimeType": "MIME_TYPE", "fileUri": "FILE_URI" } }, { "text": "TEXT" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
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/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$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/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Comando curl di esempio
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": {
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "image/png",
"fileUri": "gs://my-bucket/images/cat.png"
}
},
{
"text": "Describe this picture."
},
]
},
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.4,
"topP": 1,
"topK": 32,
"maxOutputTokens": 2048,
}
}'
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
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 applicatitopP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.
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: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
- (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzato e configura come segue:
Top-K: utilizza il cursore o la casella di testo per inserire un valore per top-K.
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di1
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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 dal più probabile al meno probabile finché la somma delle probabilità non corrisponde al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: se abilitata, questa opzione fornisce risposte del modello basate sui fatti. Il grounding supporta solo l'input di testo e l'output di testo. Per maggiori informazioni, consulta Panoramica del grounding.
- Seleziona Abilita grounding.
- Fai clic su Personalizza.
- Specifica l'origine e il percorso di grounding.
- Fai clic su Salva.
- Risposte dinamiche: questa opzione non è attiva. La console Google Cloud supporta solo i flussi di dati, che prevedono la ricezione di risposte ai prompt man mano che vengono generate.
- Per caricare contenuti multimediali, ad esempio file PDF, MP4, WAV e JPG, procedi nel seguente modo:
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- Fai clic su Inserisci elemento multimediale e seleziona un'origine. Se scegli Google Drive come origine, devi scegliere un account e dare il consenso a Vertex AI Studio ad accedere al tuo account la prima volta che selezioni questa opzione. Per caricare più file, ripeti questo passaggio. Puoi caricare più immagini con una dimensione totale del prompt di 10 MB. Un singolo file non può superare i 7 MB.
- Vai al file che vuoi caricare, fai clic sul file e poi su Seleziona. La miniatura del file viene visualizzata nel riquadro Prompt.
- Fai clic su Invia per generare la risposta.
- (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 Ottieni codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Audio singolo
Gli esempi di codice mostrano come utilizzare un file audio per riassumere un podcast. Questo esempio funziona solo con Gemini 1.5 Pro.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
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 applicatitopP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.
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: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
- (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzato e configura come segue:
Top-K: utilizza il cursore o la casella di testo per inserire un valore per top-K.
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di1
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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 dal più probabile al meno probabile finché la somma delle probabilità non corrisponde al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: se abilitata, questa opzione fornisce risposte del modello basate sui fatti. Il grounding supporta solo l'input di testo e l'output di testo. Per maggiori informazioni, consulta Panoramica del grounding.
- Seleziona Abilita grounding.
- Fai clic su Personalizza.
- Specifica l'origine e il percorso di grounding.
- Fai clic su Salva.
- Risposte dinamiche: questa opzione non è attiva. La console Google Cloud supporta solo i flussi di dati, che prevedono la ricezione di risposte ai prompt man mano che vengono generate.
- Per caricare contenuti multimediali, ad esempio file PDF, MP4, WAV e JPG, procedi nel seguente modo:
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- Fai clic su Inserisci elemento multimediale e seleziona un'origine. Se scegli Google Drive come origine, devi scegliere un account e dare il consenso a Vertex AI Studio ad accedere al tuo account la prima volta che selezioni questa opzione. Per caricare più file, ripeti questo passaggio. Puoi caricare più immagini con una dimensione totale del prompt di 10 MB. Un singolo file non può superare i 7 MB.
- Vai al file che vuoi caricare, fai clic sul file e poi su Seleziona. La miniatura del file viene visualizzata nel riquadro Prompt.
- Fai clic su Invia per generare la risposta.
- (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 Ottieni codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Esempi avanzati
I seguenti esempi sono più complessi rispetto ai precedenti.
Più immagini
Gli esempi di codice mostrano come includere più immagini in una richiesta di prompt.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, 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 nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Go per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
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 per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
REST
Puoi utilizzare REST per testare un prompt di testo utilizzando l'API Vertex AI per inviare una richiesta POST all'endpoint del modello del publisher.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- GENERATE_RESPONSE_METHOD: il tipo di risposta che deve essere generato dal modello.
Scegli un metodo che generi il modo in cui vuoi che venga restituita la risposta del modello:
streamGenerateContent
: la risposta viene riprodotta in streaming durante la generazione per ridurre la percezione della latenza per un pubblico umano.generateContent
: la risposta viene restituita dopo che è stata completamente generata.
- LOCATION: la regione in cui elaborare la richiesta. Le opzioni disponibili sono le seguenti:
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.
- MODEL_ID: l'ID del modello multimodale
che vuoi utilizzare. Le opzioni sono:
gemini-1.0-pro-vision
- ROLE:
il ruolo in una conversazione associata ai contenuti. È necessario specificare un ruolo anche
nei casi d'uso a turno singolo.
I valori accettati sono:
USER
: specifica i contenuti inviati da te.
- TEXT: le istruzioni di testo da includere nel prompt.
- B64_BASE:
la codifica base64 dell'immagine, del PDF o del video
da includere nel prompt. Quando vengono inclusi elementi multimediali in linea, devi specificare anche il tipo di elemento multimediale (
mimeType
) dei dati. - FILE_URI:
l'URI Cloud Storage del file da includere nel prompt. L'oggetto del bucket deve essere leggibile pubblicamente o risiedere nello stesso progetto Google Cloud che invia la richiesta. Devi anche specificare il tipo di supporto (
mimeType
) del file. - MIME_TYPE:
il tipo di supporto del file specificato nei campi
data
ofileUri
. 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
- SAFETY_CATEGORY:
la categoria di sicurezza per cui configurare una soglia. I valori accettati sono:
Fai clic per espandere le categorie di sicurezza
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:
la soglia per il blocco delle risposte che potrebbero appartenere alla categoria di sicurezza specificata in base alla
probabilità. I valori accettati sono:
Fai clic per espandere le soglie di blocco
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(valore predefinito)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
blocca di più, mentreBLOCK_ONLY_HIGH
blocca meno. - TEMPERATURE:
La temperatura viene utilizzata per il campionamento durante la generazione della risposta, che si verifica quando vengono applicati
topP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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.
- TOP_P:
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 probabilità non corrisponde 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 selezionerà 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.
- TOP_K:
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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.
- MAX_OUTPUT_TOKENS:
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.
- STOP_SEQUENCES:
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 appare 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 quandostopSequences
non è specificato:
public static string reverse(string myString)
La risposta restituita constopSequences
impostato su["Str", "reverse"]
è:
public static string
Metodo HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD
Corpo JSON della richiesta:
{ "contents": { "role": "ROLE", "parts": [ { "inlineDATA": { "mimeType": "MIME_TYPE", "data": "B64_BASE_IMAGE" } }, { "fileData": { "mimeType": "MIME_TYPE", "fileUri": "FILE_URI" } }, { "text": "TEXT" } ] }, "safety_settings": { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" }, "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS, "stopSequences": STOP_SEQUENCES, } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
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/MODEL_ID:GENERATE_RESPONSE_METHOD"
PowerShell
Salva il corpo della richiesta in un file denominato request.json
ed esegui questo comando:
$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/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content
Dovresti ricevere una risposta JSON simile alla seguente.
Comando curl di esempio
LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro-vision"
PROJECT_ID="test-project"
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json"
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:${GENERATE_RESPONSE_METHOD} -d \
$'{
"contents": {
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "image/png",
"fileUri": "gs://my-bucket/images/cat.png"
}
},
{
"text": "Describe this picture."
},
]
},
"safety_settings": {
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_LOW_AND_ABOVE"
},
"generation_config": {
"temperature": 0.4,
"topP": 1,
"topK": 32,
"maxOutputTokens": 2048,
}
}'
Console
Per inviare un prompt multimodale utilizzando la console Google Cloud, segui questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- In Progettazione di prompt (a turno singolo), fai clic su Apri.
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 applicatitopP
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 le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata richiesta 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: utilizza il cursore o la casella di testo per inserire un valore per il limite massimo di output.
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: inserisci una sequenza di interruzioni, ovvero una serie di caratteri (spazi inclusi) che interrompe la generazione di risposte se il modello la rileva. La sequenza non è inclusa nella risposta. Puoi aggiungere fino a cinque sequenze di interruzioni.
- (Facoltativo) Per configurare i parametri avanzati, fai clic su Avanzato e configura come segue:
Top-K: utilizza il cursore o la casella di testo per inserire un valore per top-K.
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di1
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 a3
indica che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.Per ogni passaggio 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 dal più probabile al meno probabile finché la somma delle probabilità non corrisponde al valore di top-P. Per ottenere risultati meno variabili,
imposta top-P su
0
. - Abilita grounding: se abilitata, questa opzione fornisce risposte del modello basate sui fatti. Il grounding supporta solo l'input di testo e l'output di testo. Per maggiori informazioni, consulta Panoramica del grounding.
- Seleziona Abilita grounding.
- Fai clic su Personalizza.
- Specifica l'origine e il percorso di grounding.
- Fai clic su Salva.
- Risposte dinamiche: questa opzione non è attiva. La console Google Cloud supporta solo i flussi di dati, che prevedono la ricezione di risposte ai prompt man mano che vengono generate.
- Per caricare contenuti multimediali, ad esempio file PDF, MP4, WAV e JPG, procedi nel seguente modo:
- Inserisci il prompt di testo nel riquadro Prompt. Il modello utilizza i messaggi precedenti come contesto per le nuove risposte.
- Fai clic su Inserisci elemento multimediale e seleziona un'origine. Se scegli Google Drive come origine, devi scegliere un account e dare il consenso a Vertex AI Studio ad accedere al tuo account la prima volta che selezioni questa opzione. Per caricare più file, ripeti questo passaggio. Puoi caricare più immagini con una dimensione totale del prompt di 10 MB. Un singolo file non può superare i 7 MB.
- Vai al file che vuoi caricare, fai clic sul file e poi su Seleziona. La miniatura del file viene visualizzata nel riquadro Prompt.
- Fai clic su Invia per generare la risposta.
- (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 Ottieni codice.
- (Facoltativo) Per cancellare tutti i messaggi precedenti, fai clic su Cancella conversazione.
Fai clic per espandere le configurazioni avanzate
Trascrizione audio
Gli esempi di codice mostrano come utilizzare un file audio per trascrivere un'intervista. Questo esempio funziona solo con Gemini 1.5 Pro.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Go per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
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 per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
Video con audio
Gli esempi di codice mostrano come riassumere un file video con audio. Gli esempi di codice restituiscono anche i capitoli con timestamp. Questi esempi funzionano solo con Gemini 1.5 Pro.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
Tutte le modalità
Gli esempi di codice mostrano come elaborare contemporaneamente immagini, video, audio e testo. Questi esempi funzionano con Gemini 1.5 Pro e Gemini 1.5 Flash.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Vertex AI SDK per Python.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai 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 di configurazione di Java nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'SDK Vertex AI Java per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
public ResponseStreamgenerateContentStream(Content content)
Per una risposta non in modalità flusso, 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 guida rapida dell'IA generativa utilizzando l'SDK Node.js. Per maggiori informazioni, consulta la documentazione di riferimento dell'SDK Node.js per Gemini.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
generateContentStream
.
const streamingResp = await generativeModel.generateContentStream(request);
Per una risposta non in modalità flusso, utilizza il metodo
generateContent
.
const streamingResp = await generativeModel.generateContent(request);
Codice di esempio
C#
Prima di provare questo esempio, segui le istruzioni per la configurazione di C# nella guida rapida di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento C# di Vertex AI.
Per eseguire l'autenticazione su Vertex AI, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare l'autenticazione per un ambiente di sviluppo locale.
Risposte dinamiche e non dinamiche
Puoi scegliere se il modello genera risposte in streaming o non in streaming. Per le risposte dinamiche, ricevi ogni risposta non appena viene generato il relativo token di output. Per le risposte non in streaming, riceverai tutte le risposte dopo che sono stati generati tutti i token di output.
Per una risposta in modalità flusso, utilizza il metodo
StreamGenerateContent
.
public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
Per una risposta non in modalità flusso, 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 lo streaming.
Codice di esempio
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. I token vengono selezionati dal più probabile (vedi top-K) al meno probabile finché la somma delle probabilità non corrisponde 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 selezionerà 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.
Top-K
Top-K cambia il modo in cui il modello seleziona i token per l'output. Un top-K di 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 che il token successivo viene selezionato tra i tre token più probabili utilizzando la temperatura.
Per ogni passaggio 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.
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 più basse sono ideali per prompt che richiedono una risposta meno aperta o creativa, mentre
le temperature più alte possono portare a risultati più diversificati o creativi. Una temperatura pari a 0
significa che vengono sempre selezionati i token con la probabilità più alta. In questo caso, le risposte a una determinata
richiesta 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.
Valori parametro validi
Parametro | Gemini 1.0 Pro Vision | Gemini 1.5 Pro | Gemini 1.5 Flash |
---|---|---|---|
Top-K | 1 - 40 (valore predefinito 32) | Funzionalità non supportata | Funzionalità 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 dei contenuti multimediali
Quando utilizzi un file multimediale nelle richieste di prompt, assicurati che soddisfi i seguenti requisiti:
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.
Per Gemini 1.0 Pro Vision, ogni immagine corrisponde a 258 token.
Per Gemini 1.5 Flash e Gemini 1.5 Pro:
- Se entrambe le dimensioni delle proporzioni dell'immagine sono minori o uguali a 384, vengono utilizzati 258 token.
- Se una dimensione delle proporzioni di un'immagine è maggiore di 384, l'immagine viene ritagliata in riquadri. Per impostazione predefinita, ogni dimensione del riquadro viene impostata sulla dimensione più piccola (larghezza o altezza) divisa per 1,5. Se necessario, regola ogni riquadro in modo che non sia inferiore a 256 e non superiore a 768. Ogni riquadro viene quindi ridimensionato a 768 x 768 e utilizza 258 token.
Il numero massimo di immagini che possono essere incluse in una richiesta di prompt è:
- 16 per Gemini 1.0 Pro Vision
- 3000 per Gemini 1.5 Flash e Gemini 1.5 Pro
Requisiti audio
Gemini 1.5 Flash e Gemini 1.5 Pro supportano i seguenti tipi MIME audio. Gemini 1.0 Pro Vision non supporta l'audio.
Tipo MIME audio | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
AAC - audio/aac |
|||
FLAC: audio/flac |
|||
MP3 - audio/mp3 |
|||
MPA - audio/m4a |
|||
MPEG - audio/mpeg |
|||
MPGA - audio/mpga |
|||
MP4 - audio/mp4 |
|||
OPUS - audio/opus |
|||
PCM - audio/pcm |
|||
WAV - audio/wav |
|||
WEBM - audio/webm |
Requisiti del video
I video vengono campionati a 1 f/s. Ogni fotogramma video corrisponde a 258 token.
Per Gemini 1.5 Flash e Gemini 1.5 Pro, la traccia audio è codificata con fotogrammi video. La traccia audio è inoltre suddivisa in trunk di 1 secondo, ognuno di 32 token. Il frame video e i token audio sono interlacciati con i relativi timestamp. I timestamp sono rappresentati da sette token.
I modelli multimodali Gemini supportano i seguenti tipi MIME video:
Tipo MIME video | Gemini 1.5 Flash | Gemini 1.5 Pro | Gemini 1.0 Pro Vision |
---|---|---|---|
FLV - video/x-flv |
|||
MOV - video/mov |
|||
MPEG - video/mpeg |
|||
MPEGPS - video/mpegps |
|||
MPG - video/mpg |
|||
MP4 - video/mp4 |
|||
WEBM - video/webm |
|||
WMV - video/wmv |
|||
3GPP - video/3gpp |
Requisiti per i PDF
Il tipo MIME richiesto per un PDF è application/pdf
.
Best practice
Questa sezione include le best practice per diverse modalità.
Best practice per le immagini
Quando utilizzi le immagini, attieniti alle best practice e alle informazioni riportate di seguito per ottenere risultati ottimali.
- Utilizza i prompt con una singola immagine per produrre risultati migliori rispetto a quelli con più immagini quando vuoi rilevare il testo in un'immagine.
- Se il prompt contiene una singola immagine, posizionala prima del prompt di testo.
Se il prompt contiene più immagini e vuoi farvi riferimento in un secondo momento nel prompt o fare in modo che il modello vi faccia riferimento nella risposta del modello, può essere utile assegnare un indice a ciascuna immagine prima dell'immagine stessa. Usa
a
b
c
oimage 1
image 2
image 3
per il tuo indice. Di seguito è riportato un esempio di utilizzo di immagini indicizzate in un prompt:image 1 <piano_recital.jpeg> image 2 <family_dinner.jpeg> image 3 <coffee_shop.jpeg> Write a blogpost about my day using image 1 and image 2. Then, give me ideas for tomorrow based on image 3.
Le immagini con risoluzione più alta generano risultati migliori.
Includi alcuni esempi nel prompt.
Ruota le immagini per orientarle correttamente prima di aggiungerle al prompt.
Evita immagini sfocate.
Best practice per i video
Quando utilizzi i video, segui le best practice e le informazioni riportate di seguito per ottenere risultati ottimali:
- Non utilizzare più di un video per richiesta.
- Se il prompt contiene un solo video, posizionalo prima del prompt di testo.
- Se utilizzi Gemini 1.0 Pro Vision, il modello elabora i video come fotogrammi non contigui del video. L'audio non è incluso. Se noti che nel modello mancano alcuni contenuti del video, prova ad accorciare il video, in modo che acquisisca una parte maggiore dei contenuti del video.
- Se utilizzi Gemini 1.0 Pro Vision, vengono elaborate solo le informazioni nei primi due minuti.
- Se utilizzi Gemini 1.0 Pro Vision, le informazioni audio o i metadati timestamp non vengono analizzati. Per questo motivo, il modello potrebbe non funzionare correttamente nei casi d'uso che richiedono un input audio, come l'audio dei sottotitoli codificati, o informazioni correlate al tempo, come velocità o ritmo.
- Quando è necessaria la localizzazione dei timestamp in un video con audio, chiedi al modello di generare timestamp nel formato
MM:SS
, in cui le prime due cifre rappresentano i minuti e le ultime due cifre i secondi. Usa lo stesso formato per le domande relative a un timestamp.
Best practice per i PDF
Quando utilizzi i PDF, segui le best practice e le informazioni riportate di seguito per ottenere risultati ottimali:
- I PDF vengono trattati come immagini, quindi una singola pagina di un PDF viene considerata come un'unica immagine.
- Il numero di pagine supportate è limitato al numero di immagini supportate da un modello. Per Gemini 1.0 Pro Vision, il limite è 16. Per Gemini 1.5 Pro e Gemini 1.5 Flash il limite è 300. Se hai un documento lungo, valuta la possibilità di suddividerlo in più PDF per elaborarlo.
- Quando utilizzi PDF come input, il costo segue i prezzi delle immagini di Gemini. Ad esempio, se includi un PDF di due pagine in una chiamata API Gemini, devi pagare una tariffa per l'elaborazione di due immagini.
- Se il prompt contiene un singolo PDF, posizionalo prima del prompt di testo.
- Utilizza PDF creati con testo reso come testo anziché utilizzare testo nelle immagini scansionate. Questo formato garantisce che il testo sia leggibile dalle macchine in modo che sia più semplice per il modello modificare, cercare e manipolare rispetto ai PDF di immagini scansionati. Questa pratica offre risultati ottimali quando si lavora con documenti con molto testo, come i contratti.
Per altri suggerimenti per i prompt multimodali, consulta Progettare prompt multimodali.
Limitazioni multimodali
Sebbene i modelli multimodali Gemini siano potenti in molti casi utente multimodali, è importante comprendere i limiti dei modelli:
- Ragionamento spaziale: i modelli non consentono di individuare in modo preciso testo o oggetti nelle immagini e nei PDF. Potrebbero restituire solo i conteggi approssimativi degli oggetti.
- Utilizzi medici: i modelli non sono adatti per interpretare immagini mediche (ad esempio radiografia e TAC) o per fornire consulenza medica.
- Riconoscimento delle persone: i modelli non sono pensati per essere utilizzati per identificare persone non celebrità nelle immagini.
- Moderazione dei contenuti: i modelli si rifiutano di fornire risposte su immagini o video che violano le nostre norme sulla sicurezza.
- Accuratezza: i modelli potrebbero avere allucinazioni o commettere errori durante l'interpretazione di immagini di bassa qualità, ruotate o a risoluzione estremamente bassa. I modelli potrebbero anche avere allucinazioni quando si interpretano il testo scritto a mano nelle immagini o nei documenti PDF.
- Riconoscimento dei suoni non vocali: i modelli che supportano l'audio potrebbero far riconoscere errori di suoni diversi dalla voce.
- Movimento ad alta velocità: a causa della frequenza di campionamento fissa di 1 frame al secondo (f/s), i modelli potrebbero commettere errori nella comprensione dei movimenti ad alta velocità nei video.
- Timestamp solo audio: i modelli che supportano l'audio non sono in grado di generare con precisione timestamp per le richieste con file audio. Sono inclusi i timestamp di segmentazione e localizzazione temporale. I timestamp possono essere generati con precisione per l'input che include un video che contiene audio.
- Punteggiatura delle trascrizioni: le trascrizioni restituite da Gemini 1.5 Flash potrebbero non includere la punteggiatura.
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 progettare prompt multimodali.
- 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.