Multimodalen Prompt senden

Multimodale Prompts sind Modelleingaben, die mehr als eine Modalität umfassen, z. B. Text, Bilder, Audio, Video und Dokumente.

In dieser Anleitung senden Sie die folgenden multimodalen Anfragen an Gemini und sehen sich die Modellantworten an:

  • Ein Prompt und eine URL eines in einem Bucket gespeicherten Bilds
  • Ein Prompt und ein Audiotrack inline

Weitere Informationen zu anderen multimodalen Gemini-Funktionen, einschließlich Prompts mit Videos und Dokumenten

Sie können diese Anleitung mit Clientbibliotheken für Python in Ihrer lokalen Umgebung oder durch Senden von Befehlszeilenanfragen an die REST API durcharbeiten.

Informationen zu den von Gemini unterstützten Sprachen, in denen Sie Ihre Prompts senden können.

Hinweise

Bevor Sie multimodale Prompts an Gemini senden können, um Text zu generieren, benötigen Sie ein Projekt, für das die Gemini API aktiviert ist, sowie die entsprechenden Rollen und Anmeldedaten. Sie müssen die gcloud CLI installieren, initialisieren und authentifizieren und Clientbibliotheken für Python installieren.

Weitere Informationen finden Sie unter Erste Schritte.

Prompt und Bild-URL senden

Mit dem folgenden Code können Sie einen Prompt, der Text und ein Bild enthält, an die Gemini API senden. Sie stellen ein JPG-Bild bereit und geben die URL aus einem GDC-Speicher-Bucket (s3://file-bucket/image.jpg) an. In diesem Beispiel wird eine Beschreibung des bereitgestellten Bilds zurückgegeben.

Sie können den Code über die Befehlszeile, mit einer IDE oder durch Einbinden des Codes in Ihre Anwendung ausführen.

Python

So senden Sie einen Prompt und ein Bild und generieren Text aus einem Python-Skript:

  1. Installieren Sie die erforderlichen Python-Bibliotheken:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. Bild in einen GDC-Storage-Bucket hochladen In diesem Beispiel lautet der Bildpfad im Bucket s3://file-bucket/image.jpg.

  3. Speichern Sie Ihre API-Anfrage in einer JSON-Datei mit dem Namen request.json. Die Datei muss so aussehen wie im folgenden Beispiel:

    {
        "messages": [
          {
            "role": "user",
            "content": "What's in this image?"
          },
          {
            "role": "user",
            "content": [
              {
                "type": "image_url",
                "image_url": {
                  "url": "s3://file-bucket/image.jpg"
                }
              }
            ]
          }
        ]
    }
    

    Details zum Anfragetext finden Sie unter API-Anfragen formatieren.

    Sie können mit Parametern in Ihrer Anfrage experimentieren. Weitere Informationen finden Sie unter Funktionen.

  4. Erforderliche Umgebungsvariablen in einem Python-Skript festlegen

  5. API-Anfrage authentifizieren

  6. Fügen Sie dem von Ihnen erstellten Python-Skript den folgenden Code hinzu:

    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)
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • MODEL_ID: Die Modellendpunkt-ID, für die Sie die Antwort generieren möchten.
  7. Speichern Sie das Python-Skript.

  8. So senden Sie eine Anfrage an Gemini über die Chat Completions-Oberfläche:

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

    Ersetzen Sie Folgendes:

    • SCRIPT_NAME: Der Name, den Sie Ihrem Python-Skript gegeben haben, z. B. client.py.
    • ENDPOINT: Der Gemini-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
    • TOKEN: Das Authentifizierungstoken, das Sie erhalten haben.

Sie müssen eine Antwort ähnlich der folgenden erhalten:

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

So senden Sie einen Prompt und ein Bild und generieren Text über eine curl-Anfrage an die REST API:

  1. Bild in einen GDC-Storage-Bucket hochladen In diesem Beispiel lautet der Bildpfad im Bucket s3://file-bucket/image.jpg.

  2. Speichern Sie Ihre API-Anfrage in einer JSON-Datei mit dem Namen request.json. Die Datei muss so aussehen wie im folgenden Beispiel:

    {
        "messages": [
          {
            "role": "user",
            "content": "What's in this image?"
          },
          {
            "role": "user",
            "content": [
              {
                "type": "image_url",
                "image_url": {
                  "url": "s3://file-bucket/image.jpg"
                }
              }
            ]
          }
        ]
    }
    

    Details zum Anfragetext finden Sie unter API-Anfragen formatieren.

    Sie können mit Parametern in Ihrer Anfrage experimentieren. Weitere Informationen finden Sie unter Funktionen.

  3. API-Anfrage authentifizieren

  4. Stellen Sie die Anfrage:

    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
    

    Ersetzen Sie Folgendes:

Sie müssen eine Antwort ähnlich der folgenden erhalten:

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

Prompt und Audio inline senden

Mit dem folgenden Code können Sie einen Prompt mit Text und Audio an die Gemini API senden. Sie stellen eine MP3-Audiodatei inline als base64-codierte Daten bereit. In diesem Beispiel wird der Text des angegebenen Songs zurückgegeben.

Sie können den Code über die Befehlszeile, mit einer IDE oder durch Einbinden des Codes in Ihre Anwendung ausführen.

Python

So senden Sie einen Prompt und Audio, um Text aus einem Python-Script zu generieren:

  1. Installieren Sie die erforderlichen Python-Bibliotheken:

    pip install openai
    pip install absl-py
    pip install typing
    pip install protobuf
    
  2. Codieren Sie die Datei mit dem base64-Befehlszeilentool und achten Sie darauf, dass Zeilenumbrüche verhindert werden. Verwenden Sie dazu das Flag -w 0:

    base64 AUDIO_FILE -w 0 > OUTPUT_FILE
    
  3. Speichern Sie Ihre API-Anfrage in einer JSON-Datei mit dem Namen request.json. Die Datei muss so aussehen wie im folgenden Beispiel:

    {
        "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"
                }
              }
            ]
          }
        ]
    }
    

    Details zum Anfragetext finden Sie unter API-Anfragen formatieren.

    Sie können mit Parametern in Ihrer Anfrage experimentieren. Weitere Informationen finden Sie unter Funktionen.

  4. Erforderliche Umgebungsvariablen in einem Python-Skript festlegen

  5. API-Anfrage authentifizieren

  6. Fügen Sie dem von Ihnen erstellten Python-Skript den folgenden Code hinzu:

    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)
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Ihre Projekt-ID.
    • MODEL_ID: Die Modellendpunkt-ID, für die Sie die Antwort generieren möchten.
  7. Speichern Sie das Python-Skript.

  8. So senden Sie eine Anfrage an Gemini über die Chat Completions-Oberfläche:

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

    Ersetzen Sie Folgendes:

    • SCRIPT_NAME: Der Name, den Sie Ihrem Python-Skript gegeben haben, z. B. client.py.
    • ENDPOINT: Der Gemini-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere Informationen
    • TOKEN: Das Authentifizierungstoken, das Sie erhalten haben.

Sie müssen eine Antwort ähnlich der folgenden erhalten:

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

So senden Sie einen Prompt und Audio, um Text über eine curl-Anfrage an die REST API zu generieren:

  1. Codieren Sie die Datei mit dem base64-Befehlszeilentool und achten Sie darauf, dass Zeilenumbrüche verhindert werden. Verwenden Sie dazu das Flag -w 0:

    base64 AUDIO_FILE -w 0 > OUTPUT_FILE
    
  2. Speichern Sie Ihre API-Anfrage in einer JSON-Datei mit dem Namen request.json. Die Datei muss so aussehen wie im folgenden Beispiel:

    {
        "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"
                }
              }
            ]
          }
        ]
    }
    

    Details zum Anfragetext finden Sie unter API-Anfragen formatieren.

    Sie können mit Parametern in Ihrer Anfrage experimentieren. Weitere Informationen finden Sie unter Funktionen.

  3. API-Anfrage authentifizieren

  4. Stellen Sie die Anfrage:

    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
    

    Ersetzen Sie Folgendes:

Sie müssen eine Antwort ähnlich der folgenden erhalten:

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

Nächste Schritte