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
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:
Installieren Sie die erforderlichen Python-Bibliotheken:
pip install openai pip install absl-py pip install typing pip install protobufBild in einen GDC-Storage-Bucket hochladen In diesem Beispiel lautet der Bildpfad im Bucket
s3://file-bucket/image.jpg.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.
Erforderliche Umgebungsvariablen in einem Python-Skript festlegen
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.
Speichern Sie das Python-Skript.
So senden Sie eine Anfrage an Gemini über die Chat Completions-Oberfläche:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENErsetzen 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 InformationenTOKEN: 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:
Bild in einen GDC-Storage-Bucket hochladen In diesem Beispiel lautet der Bildpfad im Bucket
s3://file-bucket/image.jpg.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.
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.jsonErsetzen Sie Folgendes:
TOKEN: Das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT: Der Gemini-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere InformationenPROJECT_ID: Ihre Projekt-ID.MODEL_ID: Die Modellendpunkt-ID, für die Sie die Antwort generieren möchten.
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:
Installieren Sie die erforderlichen Python-Bibliotheken:
pip install openai pip install absl-py pip install typing pip install protobufCodieren 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_FILESpeichern 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.
Erforderliche Umgebungsvariablen in einem Python-Skript festlegen
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.
Speichern Sie das Python-Skript.
So senden Sie eine Anfrage an Gemini über die Chat Completions-Oberfläche:
python SCRIPT_NAME --input=request.json --host=ENDPOINT --token=TOKENErsetzen 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 InformationenTOKEN: 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:
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_FILESpeichern 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.
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.jsonErsetzen Sie Folgendes:
TOKEN: Das Authentifizierungstoken, das Sie erhalten haben.ENDPOINT: Der Gemini-Endpunkt, den Sie für Ihre Organisation verwenden. Weitere InformationenPROJECT_ID: Ihre Projekt-ID.MODEL_ID: Die Modellendpunkt-ID, für die Sie die Antwort generieren möchten.
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
- Weitere Informationen zu den Funktionen von Gemini
- Informationen zu den von Gemini unterstützten Sprachen