Inviare un prompt multimodale

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:

  1. Installa le librerie Python richieste:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. Carica l'immagine in un bucket di archiviazione GDC. In questo esempio, il percorso dell'immagine nel bucket è s3://file-bucket/image.jpg.

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

  4. Imposta le variabili di ambiente richieste in uno script Python.

  5. Autentica la richiesta API.

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

  7. Salva lo script Python.

  8. Invia una richiesta a Gemini con l'interfaccia di Chat Completions:

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN
    

    Sostituisci quanto segue:

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:

  1. Carica l'immagine in un bucket di archiviazione GDC. In questo esempio, il percorso dell'immagine nel bucket è s3://file-bucket/image.jpg.

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

  3. Autentica la richiesta API.

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

    Sostituisci quanto segue:

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:

  1. Installa le librerie Python richieste:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. 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_FILE
    
  3. Salva 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à.

  4. Imposta le variabili di ambiente richieste in uno script Python.

  5. Autentica la richiesta API.

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

  7. Salva lo script Python.

  8. Invia una richiesta a Gemini con l'interfaccia di Chat Completions:

    python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKEN
    

    Sostituisci quanto segue:

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:

  1. 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_FILE
    
  2. Salva 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à.

  3. Autentica la richiesta API.

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

    Sostituisci quanto segue:

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

Passaggi successivi