I prompt multimodali si riferiscono agli input del modello che includono più di una modalità, ad esempio testo, immagini, audio, video e documenti.
In questa guida, invii le seguenti richieste multimodali a Gemini utilizzando l'API e visualizzi le risposte del modello:
- Un prompt e l'URL di un'immagine archiviata in un bucket
- Un prompt e una traccia audio in linea
Scopri di più sulle altre funzionalità multimodali di Gemini, inclusi i prompt con video e documenti.
Puoi completare questa guida utilizzando le librerie client per Python nel tuo ambiente locale o inviando richieste dalla riga di comando all'API REST.
Scopri le lingue supportate da Gemini in cui puoi inviare i prompt.
Prima di iniziare
Prima di poter iniziare a inviare prompt multimodali a Gemini per generare testo, devi disporre di un progetto con l'API Gemini abilitata e devi disporre di ruoli e credenziali appropriati. Devi installare, inizializzare e autenticarti con gcloud CLI e installare le librerie client per Python.
Per maggiori informazioni, vedi Guida introduttiva.
Invia un prompt e un URL immagine
Utilizza il seguente codice per inviare un prompt che include testo e un'immagine all'API Gemini. Fornisci un'immagine JPG che indica il relativo URL da un bucket di archiviazione GDC (s3://file-bucket/image.jpg). Questo esempio restituisce una descrizione dell'immagine fornita.
Puoi eseguire il codice dalla riga di comando, utilizzando un IDE o includendolo nella tua applicazione.
Python
Segui questi passaggi per inviare un prompt e un'immagine e generare testo da uno script Python:
Installa le librerie Python richieste:
pip install openai pip install absl-py pip install typing pip install protobufCarica l'immagine in un bucket di archiviazione GDC. In questo esempio, il percorso dell'immagine nel bucket è
s3://file-bucket/image.jpg.Salva la richiesta API in un file JSON denominato
request.json. Il file deve essere simile al seguente esempio:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Per i dettagli del corpo della richiesta, consulta Formattare le richieste API.
Puoi sperimentare con i parametri nella richiesta. Per ulteriori informazioni, consulta Funzionalità.
Imposta le variabili di ambiente richieste in uno script Python.
Aggiungi il seguente codice allo script Python che hai creato:
import json import os from absl import app from absl import flags from openai import OpenAI, OpenAIError from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from typing import Sequence _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) def chat_completion_client(host): return OpenAI( api_key="None", base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID" ) def chat_completion(client, messages, token): try: response = client.chat.completions.create( model="MODEL_ID", messages=messages, extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"} ) print("response:", response) except Exception as e: print("Got exception:", e) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) print("Request: ", data) client = chat_completion_client(_HOST.value,) chat_completion(client=client, messages=data["messages"], token=_TOKEN.value) if __name__=="__main__": app.run(main)Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.MODEL_ID: l'ID dell'endpoint del modello per cui vuoi generare la risposta.
Salva lo script Python.
Invia una richiesta a Gemini con l'interfaccia di Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSostituisci quanto segue:
SCRIPT_NAME: il nome che hai assegnato allo script Python, ad esempioclient.py.ENDPOINT: l'endpoint Gemini che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato del servizio e gli endpoint.TOKEN: il token di autenticazione che hai ottenuto.
Devi ottenere una risposta simile alla seguente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s what\'s in the image: Several freshly baked blueberry scones are arranged on parchment paper.\n", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
curl
Segui questi passaggi per inviare un prompt e un'immagine e generare testo tramite una richiesta
curl all'API REST:
Carica l'immagine in un bucket di archiviazione GDC. In questo esempio, il percorso dell'immagine nel bucket è
s3://file-bucket/image.jpg.Salva la richiesta API in un file JSON denominato
request.json. Il file deve essere simile al seguente esempio:{ "messages": [ { "role": "user", "content": "What's in this image?" }, { "role": "user", "content": [ { "type": "image_url", "image_url": { "url": "s3://file-bucket/image.jpg" } } ] } ] }Per i dettagli del corpo della richiesta, consulta Formattare le richieste API.
Puoi sperimentare con i parametri nella richiesta. Per ulteriori informazioni, consulta Funzionalità.
Effettua la richiesta:
curl \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -X POST https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions -d @./request.jsonSostituisci quanto segue:
TOKEN: il token di autenticazione che hai ottenuto.ENDPOINT: l'endpoint Gemini che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato del servizio e gli endpoint.PROJECT_ID: il tuo ID progetto.MODEL_ID: l'ID dell'endpoint del modello per cui vuoi generare la risposta.
Devi ottenere una risposta simile alla seguente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s what\'s in the image: Several freshly baked blueberry scones are arranged on parchment paper.\n", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
Inviare un prompt e l'audio in linea
Utilizza il seguente codice per inviare un prompt che includa testo e audio all'API Gemini. Fornisci un file audio MP3 incorporato come dati codificati in base64. Questo esempio restituisce il testo della canzone fornita.
Puoi eseguire il codice dalla riga di comando, utilizzando un IDE o includendolo nella tua applicazione.
Python
Segui questi passaggi per inviare un prompt e un audio per generare testo da uno script Python:
Installa le librerie Python richieste:
pip install openai pip install absl-py pip install typing pip install protobufCodifica il file utilizzando lo strumento a riga di comando
base64, assicurandoti di evitare l'a capo utilizzando il flag-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESalva la richiesta API in un file JSON denominato
request.json. Il file deve essere simile al seguente esempio:{ "messages": [ { "role": "user", "content": "Show me the lyrics of this song." }, { "role": "user", "content": [ { "type": "input_audio", "input_audio": { "data": "BASE64_ENCODED_DATA", "format": "mp3" } } ] } ] }Per i dettagli del corpo della richiesta, consulta Formattare le richieste API.
Puoi sperimentare con i parametri nella richiesta. Per ulteriori informazioni, consulta Funzionalità.
Imposta le variabili di ambiente richieste in uno script Python.
Aggiungi il seguente codice allo script Python che hai creato:
import json import os from absl import app from absl import flags from openai import OpenAI, OpenAIError from google.protobuf import json_format from google.protobuf.struct_pb2 import Value from typing import Sequence _INPUT = flags.DEFINE_string("input", None, "input", required=True) _HOST = flags.DEFINE_string("host", None, "Chat Completion endpoint", required=True) _TOKEN = flags.DEFINE_string("token", None, "STS token", required=True) def chat_completion_client(host): return OpenAI( api_key="None", base_url="https://" + host + "/v1/projects/PROJECT_ID/locations/PROJECT_ID" ) def chat_completion(client, messages, token): try: response = client.chat.completions.create( model="MODEL_ID", messages=messages, extra_headers={"Authorization" : "Bearer " + token, "Content-Type": "application/json"} ) print("response:", response) except Exception as e: print("Got exception:", e) def main(argv: Sequence[str]): del argv # Unused. with open(_INPUT.value) as json_file: data = json.load(json_file) print("Request: ", data) client = chat_completion_client(_HOST.value,) chat_completion(client=client, messages=data["messages"], token=_TOKEN.value) if __name__=="__main__": app.run(main)Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.MODEL_ID: l'ID dell'endpoint del modello per cui vuoi generare la risposta.
Salva lo script Python.
Invia una richiesta a Gemini con l'interfaccia di Chat Completions:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENSostituisci quanto segue:
SCRIPT_NAME: il nome che hai assegnato allo script Python, ad esempioclient.py.ENDPOINT: l'endpoint Gemini che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato del servizio e gli endpoint.TOKEN: il token di autenticazione che hai ottenuto.
Devi ottenere una risposta simile alla seguente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s the lyrics of the song: There are places I remember all my life, though some have changed...", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))
curl
Segui questi passaggi per inviare un prompt e un audio per generare testo tramite una richiesta curl all'API REST:
Codifica il file utilizzando lo strumento a riga di comando
base64, assicurandoti di evitare l'a capo utilizzando il flag-w 0:base64 AUDIO_FILE -w 0 > OUTPUT_FILESalva la richiesta API in un file JSON denominato
request.json. Il file deve essere simile al seguente esempio:{ "messages": [ { "role": "user", "content": "Show me the lyrics of this song." }, { "role": "user", "content": [ { "type": "input_audio", "input_audio": { "data": "BASE64_ENCODED_DATA", "format": "mp3" } } ] } ] }Per i dettagli del corpo della richiesta, consulta Formattare le richieste API.
Puoi sperimentare con i parametri nella richiesta. Per ulteriori informazioni, consulta Funzionalità.
Effettua la richiesta:
curl \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -X POST https://ENDPOINT:443/v1/projects/PROJECT_ID/locations/PROJECT_ID/chat/completions -d @./request.jsonSostituisci quanto segue:
TOKEN: il token di autenticazione che hai ottenuto.ENDPOINT: l'endpoint Gemini che utilizzi per la tua organizzazione. Per saperne di più, visualizza lo stato del servizio e gli endpoint.PROJECT_ID: il tuo ID progetto.MODEL_ID: l'ID dell'endpoint del modello per cui vuoi generare la risposta.
Devi ottenere una risposta simile alla seguente:
ChatCompletion(id='', choices=[Choice(finish_reason='', index=0, logprobs=0, message=ChatCompletionMessage(content="Here\'s the lyrics of the song: There are places I remember all my life, though some have changed...", refusal=None, role='assistant', function_call=None, tool_calls=None))], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=CompletionUsage(completion_tokens=0, prompt_tokens=0, total_tokens=0))