Bildverständnis

Sie können Gemini-Anfragen Bilder hinzufügen, um Aufgaben auszuführen, bei denen die Inhalte der enthaltenen Bilder berücksichtigt werden müssen. Auf dieser Seite erfahren Sie, wie Sie mithilfe der Google Cloud Console und der Vertex AI API Ihren Anfragen an Gemini in Vertex AI Bilder hinzufügen.

Unterstützte Modelle

In der folgenden Tabelle sind die Modelle aufgeführt, die die Bilderkennung unterstützen:

Modell Details zur Bildmodalität

Gemini 1.5 Flash

Zur Modellkarte „Gemini 1.5 Flash“
Maximale Anzahl von Bildern pro Prompt: 3.000

Gemini 1.5 Pro,

Zur Modellkarte „Gemini 1.5 Pro“
Maximale Anzahl von Bildern pro Prompt: 3.000

Gemini 1.0 Pro Vision

Zur Modellkarte „Gemini 1.0 Pro Vision“
Maximale Anzahl von Bildern pro Prompt: 16

Eine Liste der von Gemini-Modellen unterstützten Sprachen finden Sie in den Modellinformationen der Google-Modelle. Weitere Informationen zum Entwerfen multimodaler Prompts finden Sie unter Multimodale Prompts entwerfen. Wenn Sie nach einer Möglichkeit suchen, Gemini direkt über Ihre mobilen und Ihre Web-Apps zu verwenden, finden Sie weitere Informationen in den Vertex AI in Firebase SDKs für Android-, Swift-, Web- und Flutter-Apps.

Einem Antrag Bilder hinzufügen

Sie können Anfragen in Gemini ein einzelnes Bild oder mehrere Bilder hinzufügen.

Einzelnes Bild

Der Beispielcode auf den folgenden Tabs zeigt eine andere Methode zum Erkennen der Inhalte im Bild. Dieses Beispiel funktioniert mit allen multimodalen Gemini-Modellen.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Streaming-Antwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode

import vertexai

from vertexai.generative_models import GenerativeModel, Part

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-002")

image_file = Part.from_uri(
    "gs://cloud-samples-data/generative-ai/image/scones.jpg", "image/jpeg"
)

# Query the model
response = model.generate_content([image_file, "what is this image?"])
print(response.text)
# Example response:
# That's a lovely overhead flatlay photograph of blueberry scones.
# The image features:
# * **Several blueberry scones:** These are the main focus,
# arranged on parchment paper with some blueberry juice stains.
# ...

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Java SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Beispielcode

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.PartMaker;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.util.Base64;

public class MultimodalQuery {

  public static void main(String[] args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";
    String dataImageBase64 = "your-base64-encoded-image";

    String output = multimodalQuery(projectId, location, modelName, dataImageBase64);
    System.out.println(output);
  }


  // Ask the model to recognise the brand associated with the logo image.
  public static String multimodalQuery(String projectId, String location, String modelName,
      String dataImageBase64) throws Exception {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      String output;
      byte[] imageBytes = Base64.getDecoder().decode(dataImageBase64);

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(
          ContentMaker.fromMultiModalData(
              "What is this image?",
              PartMaker.fromMimeTypeAndData("image/png", imageBytes)
          ));

      output = ResponseHandler.getText(response);
      return output;
    }
  }
}

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der Kurzanleitung zur generativen KI mit dem Node.js SDK. Weitere Informationen finden Sie in der Referenzdokumentation zum Node.js SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Beispielcode

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function createNonStreamingMultipartContent(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.5-flash-001',
  image = 'gs://generativeai-downloads/images/scones.jpg',
  mimeType = 'image/jpeg'
) {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: projectId, location: location});

  // Instantiate the model
  const generativeVisionModel = vertexAI.getGenerativeModel({
    model: model,
  });

  // For images, the SDK supports both Google Cloud Storage URI and base64 strings
  const filePart = {
    fileData: {
      fileUri: image,
      mimeType: mimeType,
    },
  };

  const textPart = {
    text: 'what is shown in this image?',
  };

  const request = {
    contents: [{role: 'user', parts: [filePart, textPart]}],
  };

  console.log('Prompt Text:');
  console.log(request.contents[0].parts[1].text);

  console.log('Non-Streaming Response Text:');

  // Generate a response
  const response = await generativeVisionModel.generateContent(request);

  // Select the text from the response
  const fullTextResponse =
    response.response.candidates[0].content.parts[0].text;

  console.log(fullTextResponse);
}

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Go SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Beispielcode

import (
	"context"
	"encoding/json"
	"fmt"
	"io"

	"cloud.google.com/go/vertexai/genai"
)

func tryGemini(w io.Writer, projectID string, location string, modelName string) error {
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"

	ctx := context.Background()
	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("error creating client: %w", err)
	}
	gemini := client.GenerativeModel(modelName)

	img := genai.FileData{
		MIMEType: "image/jpeg",
		FileURI:  "gs://generativeai-downloads/images/scones.jpg",
	}
	prompt := genai.Text("What is in this image?")

	resp, err := gemini.GenerateContent(ctx, img, prompt)
	if err != nil {
		return fmt.Errorf("error generating content: %w", err)
	}
	rb, err := json.MarshalIndent(resp, "", "  ")
	if err != nil {
		return fmt.Errorf("json.MarshalIndent: %w", err)
	}
	fmt.Fprintln(w, string(rb))
	return nil
}

C#

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von C# in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zu Vertex AI C#.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode StreamGenerateContent.

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentAsync.

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

Weitere Informationen dazu, wie der Server Antworten streamen kann, finden Sie unter Streaming-RPCs.

Beispielcode


using Google.Api.Gax.Grpc;
using Google.Cloud.AIPlatform.V1;
using System.Text;
using System.Threading.Tasks;

public class GeminiQuickstart
{
    public async Task<string> GenerateContent(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001"
    )
    {
        // Create client
        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        // Initialize content request
        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            GenerationConfig = new GenerationConfig
            {
                Temperature = 0.4f,
                TopP = 1,
                TopK = 32,
                MaxOutputTokens = 2048
            },
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = "What's in this photo?" },
                        new Part { FileData = new() { MimeType = "image/png", FileUri = "gs://generativeai-downloads/images/scones.jpg" } }
                    }
                }
            }
        };

        // Make the request, returning a streaming response
        using PredictionServiceClient.StreamGenerateContentStream response = predictionServiceClient.StreamGenerateContent(generateContentRequest);

        StringBuilder fullText = new();

        // Read streaming responses from server until complete
        AsyncResponseStream<GenerateContentResponse> responseStream = response.GetResponseStream();
        await foreach (GenerateContentResponse responseItem in responseStream)
        {
            fullText.Append(responseItem.Candidates[0].Content.Parts[0].Text);
        }

        return fullText.ToString();
    }
}

REST

Nachdem Sie Ihre Umgebung eingerichtet haben, können Sie mit REST einen Text-Prompt testen. Im folgenden Beispiel wird eine Anfrage an den Publisher gesendet Modellendpunkt zu erstellen.

Sie können Bilder einfügen, die in Cloud Storage gespeichert sind, oder base64-codierte Bilddaten verwenden.

Bild in Cloud Storage

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Geben Sie eine unterstützte Region ein. Eine vollständige Liste der unterstützten Regionen finden Sie unter Verfügbare Standorte.

    Klicken Sie, um eine unvollständige Liste der verfügbaren Regionen einzublenden

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Ihre Projekt-ID.
  • FILE_URI: Der URI oder die URL der Datei, die in den Prompt aufgenommen werden soll. Unter anderem sind folgende Werte zulässig:
    • Cloud Storage-Bucket-URI: Das Objekt muss entweder öffentlich lesbar sein oder sich im selben Google Cloud-Projekt befinden, von dem die Anfrage gesendet wird. Für gemini-1.5-pro und gemini-1.5-flash beträgt die Größenbeschränkung 2 GB. Für gemini-1.0-pro-vision beträgt die Größenbeschränkung 20 MB.
    • HTTP-URL: Die Datei-URL muss öffentlich lesbar sein. Sie können eine Videodatei, eine Audiodatei und bis zu 10 Bilddateien pro Anfrage angeben. Audiodateien, Videodateien und Dokumente dürfen nicht größer als 15 MB sein.
    • YouTube-Video-URL: Das YouTube-Video muss entweder dem Konto gehören, mit dem Sie sich in der Google Cloud Console angemeldet haben, oder öffentlich sein. Pro Anfrage wird nur eine YouTube-Video-URL unterstützt.

    Wenn Sie einen fileURI angeben, müssen Sie auch den Medientyp (mimeType) der Datei angeben.

    Wenn Sie keine Bilddatei in Cloud Storage haben, können Sie die folgende öffentlich zugängliche Datei: gs://cloud-samples-data/generative-ai/image/scones.jpg mit dem MIME-Typ image/jpeg. Öffnen Sie die Beispielbilddatei, um dieses Bild anzusehen.

  • MIME_TYPE: Der Medientyp der Datei, die in den Feldern data oder fileUri angegeben wurde. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren von MIME-Typen klicken

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel:What is shown in this image?

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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/gemini-1.5-flash:generateContent"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Base64-Bilddaten

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Geben Sie eine unterstützte Region ein. Eine vollständige Liste der unterstützten Regionen finden Sie unter Verfügbare Standorte.

    Klicken Sie, um eine unvollständige Liste der verfügbaren Regionen einzublenden

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Ihre Projekt-ID.
  • B64_BASE_IMAGE
    Die base64-Codierung des Bildes, PDFs oder Videos, das inline in den Prompt aufgenommen werden soll. Wenn Sie Medien inline einschließen, müssen Sie auch den Medientyp (mimeType) der Daten angeben.
  • MIME_TYPE: Der Medientyp der Datei, die in den Feldern data oder fileUri angegeben wurde. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren von MIME-Typen klicken

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel: What is shown in this image?.

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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/gemini-1.5-flash:generateContent"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "inlineData": {
          "data": "B64_BASE_IMAGE",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Beachten Sie Folgendes in der URL für dieses Beispiel:
  • Mit der Methode generateContent können Sie anfordern, dass die Antwort zurückgegeben wird, nachdem sie vollständig generiert wurde. Um die Wahrnehmung von Latenz für menschliche Zielgruppen zu verringern, streame die Antwort, während sie mithilfe der Methode streamGenerateContent erzeugt wird.
  • Die multimodale Modell-ID befindet sich am Ende der URL vor der Methode (z. B. gemini-1.5-flash oder gemini-1.0-pro-vision). Dieses Beispiel unterstützt möglicherweise auch andere Modelle.

Console

So senden Sie einen multimodalen Prompt mit der Google Cloud Console:

  1. Rufen Sie im Bereich „Vertex AI“ der Google Cloud Console die Seite Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf Im freien Format öffnen.

  3. Optional – Konfigurieren Sie Modell und Parameter:

    • Modell: Wählen Sie ein Modell aus.
    • Region: Wählen Sie die Region aus, die Sie verwenden möchten.
    • Temperaturen: Geben Sie über den Schieberegler oder das Textfeld einen Temperaturwert ein.

      Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Dies passiert, wenn topP und topK angewendet werden. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich gut für Prompts, die eine weniger offene oder kreative Antwort erfordern, während höhere Temperaturen zu vielfältigeren oder kreativeren Ergebnissen führen können. Eine Temperatur von 0 bedeutet, dass immer die Tokens mit der höchsten Wahrscheinlichkeit ausgewählt werden. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich.

      Wenn das Modell eine zu allgemeine oder zu kurze Antwort zurückgibt, oder wenn das Modell eine Fallback-Antwort ausgibt, versuchen Sie, die Temperatur zu erhöhen.

    • Token-Ausgabelimit: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für das maximale Ausgabelimit einzugeben.

      Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

      Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

    • Stoppsequenz hinzufügen: Optional. Geben Sie eine Stoppsequenz ein, die aus einer Reihe von Zeichen (einschließlich Leerzeichen) besteht. Wenn das Modell auf eine Stoppsequenz stößt, wird die Antwortgenerierung beendet. Die Stoppsequenz ist nicht in der Antwort enthalten. Sie können bis zu fünf Stoppsequenzen hinzufügen.

  4. Optional: Klicken Sie zum Konfigurieren erweiterter Parameter auf Erweitert und konfigurieren Sie so:

    Klicken Sie, um erweiterte Konfigurationen zu maximieren.

    • Top-K: Sie können den Schieberegler oder das Textfeld verwenden, um einen Wert für Top-K einzugeben. (nicht für Gemini 1.5 unterstützt)

      Der Wert „Top-K“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Ein „Top-K“ von 1 bedeutet, dass das nächste ausgewählte Token unter den Tokens im Modell-Vokabular (auch als gierige Decodierung bezeichnet) am wahrscheinlichsten ist, während ein „Top-K“ von 3 bedeutet, dass das nächste Token mithilfe der Temperatur aus den drei wahrscheinlichsten Tokens ausgewählt wird.

      Für jeden Tokenauswahlschritt werden die „Top-K“-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Anschließend werden Tokens weiter auf der Grundlage von „Top-P“ gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.

      Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.

    • Top-P: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für „Top-P“ einzugeben. Tokens werden vom wahrscheinlichsten bis zum am wenigsten wahrscheinlichen Token ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Wert von „Top-P“ entspricht. Für die Ergebnisse der geringsten Variablen legen Sie Top-P auf 0 fest.
    • Maximale Anzahl von Antworten: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für die Anzahl der zu generierenden Antworten einzugeben.
    • Streamingantworten: Wenn Sie diese Option aktivieren, werden Antworten ausgedruckt, sobald sie generiert werden.
    • Schwellenwert für Sicherheitsfilter: Wählen Sie den Schwellenwert aus, mit dem Sie festlegen, wie wahrscheinlich es ist, dass Sie Antworten sehen, die möglicherweise schädlich sind.
    • Fundierung aktivieren: Die Funktion „Fundierung“ wird für multimodale Prompts nicht unterstützt.

  5. Klicken Sie auf Medien einfügen und wählen Sie eine Quelle für die Datei aus.

    Hochladen

    Wählen Sie die Datei aus, die Sie hochladen möchten, und klicken Sie auf Öffnen.

    Über URL

    Geben Sie die URL der Datei ein, die Sie verwenden möchten, und klicken Sie auf Einfügen.

    Cloud Storage

    Wählen Sie den Bucket und dann die Datei aus dem Bucket aus, die Sie importieren möchten, und klicken Sie auf Auswählen.

    Google Drive

    1. Wählen Sie ein Konto aus und erteilen Sie Vertex AI Studio die Einwilligung, bei der ersten Auswahl dieser Option auf Ihr Konto zuzugreifen. Sie können mehrere Dateien mit einer Gesamtgröße von bis zu 10 MB hochladen. Eine einzelne Datei darf nicht größer als 7 MB sein.
    2. Klicken Sie auf die Datei, die Sie hinzufügen möchten.
    3. Klicken Sie auf Auswählen.

      Die Miniaturansicht der Datei wird im Bereich Prompt angezeigt. Außerdem wird die Gesamtzahl der Tokens angezeigt. Wenn Ihre Prompt-Daten das Tokenlimit überschreiten, werden die Tokens abgeschnitten und nicht bei der Verarbeitung Ihrer Daten berücksichtigt.

  6. Geben Sie Ihren Prompt in den Bereich Prompt ein.

  7. Optional: Wenn Sie Token-ID zu Text und Token-IDs sehen möchten, klicken Sie im Bereich Prompt auf die Anzahl der Tokens.

  8. Klicken Sie auf Senden.

  9. Optional: Klicken Sie auf Speichern, um den Prompt unter Meine Prompts zu speichern.

  10. Optional: Klicken Sie auf Code abrufen, um den Python-Code oder einen curl-Befehl für den Prompt abzurufen.

Mehrere Bilder

Auf den folgenden Tabs wird jeweils eine andere Methode zum Einbeziehen mehrerer Bilder in eine Prompt-Anfrage veranschaulicht. Für jedes Beispiel werden zwei Sätze der folgenden Eingaben verwendet:

  • Ein Bild einer beliebten Sehenswürdigkeit der Stadt
  • Der Medientyp des Bilds
  • Text, der die Stadt und die Sehenswürdigkeit im Bild angibt

Das Beispiel enthält auch ein drittes Bild und einen dritten Medientyp, aber keinen Text. Im Beispiel wird eine Textantwort zurückgegeben, die die Stadt und das Wahrzeichen im dritten Bild angibt.

Diese Bildbeispiele funktionieren mit allen multimodalen Gemini-Modellen.

Python

Informationen zur Installation des Vertex AI SDK for Python finden Sie unter Vertex AI SDK for Python installieren. Weitere Informationen finden Sie in der API-Referenzdokumentation zur Vertex AI SDK for Python.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Streaming-Antwort den Parameter stream in generate_content.

  response = model.generate_content(contents=[...], stream = True)
  

Entfernen Sie für eine Nicht-Streamingantwort den Parameter oder setzen Sie den Parameter auf False.

Beispielcode

import vertexai

from vertexai.generative_models import GenerativeModel, Part

# TODO(developer): Update and un-comment below line
# PROJECT_ID = "your-project-id"
vertexai.init(project=PROJECT_ID, location="us-central1")

# Load images from Cloud Storage URI
image_file1 = Part.from_uri(
    "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png",
    mime_type="image/png",
)
image_file2 = Part.from_uri(
    "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png",
    mime_type="image/png",
)
image_file3 = Part.from_uri(
    "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png",
    mime_type="image/png",
)

model = GenerativeModel("gemini-1.5-flash-002")
response = model.generate_content(
    [
        image_file1,
        "city: Rome, Landmark: the Colosseum",
        image_file2,
        "city: Beijing, Landmark: Forbidden City",
        image_file3,
    ]
)
print(response.text)
# Example response:
# city: Rio de Janeiro, Landmark: Christ the Redeemer

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Java SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  public GenerateContentResponse generateContent(Content content)
  

Beispielcode

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.Content;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.PartMaker;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MultimodalMultiImage {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";

    multimodalMultiImage(projectId, location, modelName);
  }

  // Generates content from multiple input images.
  public static void multimodalMultiImage(String projectId, String location, String modelName)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      GenerativeModel model = new GenerativeModel(modelName, vertexAI);

      Content content = ContentMaker.fromMultiModalData(
          PartMaker.fromMimeTypeAndData("image/png", readImageFile(
              "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark1.png")),
          "city: Rome, Landmark: the Colosseum",
          PartMaker.fromMimeTypeAndData("image/png", readImageFile(
              "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark2.png")),
          "city: Beijing, Landmark: Forbidden City",
          PartMaker.fromMimeTypeAndData("image/png", readImageFile(
              "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark3.png"))
      );

      GenerateContentResponse response = model.generateContent(content);

      String output = ResponseHandler.getText(response);
      System.out.println(output);
    }
  }

  // Reads the image data from the given URL.
  public static byte[] readImageFile(String url) throws IOException {
    URL urlObj = new URL(url);
    HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
    connection.setRequestMethod("GET");

    int responseCode = connection.getResponseCode();

    if (responseCode == HttpURLConnection.HTTP_OK) {
      InputStream inputStream = connection.getInputStream();
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

      byte[] buffer = new byte[1024];
      int bytesRead;
      while ((bytesRead = inputStream.read(buffer)) != -1) {
        outputStream.write(buffer, 0, bytesRead);
      }

      return outputStream.toByteArray();
    } else {
      throw new RuntimeException("Error fetching file: " + responseCode);
    }
  }
}

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Node.js in der Kurzanleitung zur generativen KI mit dem Node.js SDK. Weitere Informationen finden Sie in der Referenzdokumentation zum Node.js SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContentStream.

  const streamingResp = await generativeModel.generateContentStream(request);
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode generateContent.

  const streamingResp = await generativeModel.generateContent(request);
  

Beispielcode

const {VertexAI} = require('@google-cloud/vertexai');
const axios = require('axios');

async function getBase64(url) {
  const image = await axios.get(url, {responseType: 'arraybuffer'});
  return Buffer.from(image.data).toString('base64');
}

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function sendMultiModalPromptWithImage(
  projectId = 'PROJECT_ID',
  location = 'us-central1',
  model = 'gemini-1.5-flash-001'
) {
  // For images, the SDK supports base64 strings
  const landmarkImage1 = await getBase64(
    'https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark1.png'
  );
  const landmarkImage2 = await getBase64(
    'https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark2.png'
  );
  const landmarkImage3 = await getBase64(
    'https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark3.png'
  );

  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: projectId, location: location});

  const generativeVisionModel = vertexAI.getGenerativeModel({
    model: model,
  });

  // Pass multimodal prompt
  const request = {
    contents: [
      {
        role: 'user',
        parts: [
          {
            inlineData: {
              data: landmarkImage1,
              mimeType: 'image/png',
            },
          },
          {
            text: 'city: Rome, Landmark: the Colosseum',
          },

          {
            inlineData: {
              data: landmarkImage2,
              mimeType: 'image/png',
            },
          },
          {
            text: 'city: Beijing, Landmark: Forbidden City',
          },
          {
            inlineData: {
              data: landmarkImage3,
              mimeType: 'image/png',
            },
          },
        ],
      },
    ],
  };

  // Create the response
  const response = await generativeVisionModel.generateContent(request);
  // Wait for the response to complete
  const aggregatedResponse = await response.response;
  // Select the text from the response
  const fullTextResponse =
    aggregatedResponse.candidates[0].content.parts[0].text;

  console.log(fullTextResponse);
}

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Go in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zum Vertex AI Go SDK für Gemini.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentStream.

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContent.

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

Beispielcode

import (
	"context"
	"fmt"
	"io"
	"mime"
	"path/filepath"

	"cloud.google.com/go/vertexai/genai"
)

// generateMultimodalContent shows how to generate a text from a multimodal prompt using the Gemini model,
// writing the response to the provided io.Writer.
func generateMultimodalContent(w io.Writer, projectID, location, modelName string) error {
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"
	ctx := context.Background()

	// create prompt image parts
	colosseum := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("landmark1.png")),
		FileURI:  "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png",
	}
	forbiddenCity := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("landmark2.png")),
		FileURI:  "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png",
	}
	newImage := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("landmark3.png")),
		FileURI:  "gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png",
	}
	// create a multimodal (multipart) prompt
	prompt := []genai.Part{
		colosseum,
		genai.Text("city: Rome, Landmark: the Colosseum "),
		forbiddenCity,
		genai.Text("city: Beijing, Landmark: the Forbidden City "),
		newImage,
	}

	// generate the response
	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)

	res, err := model.GenerateContent(ctx, prompt...)
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	fmt.Fprintf(w, "generated response: %s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

C#

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von C# in der Vertex AI-Kurzanleitung. Weitere Informationen finden Sie in der Referenzdokumentation zu Vertex AI C#.

Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

Streaming- und Nicht-Streaming-Antworten

Sie können auswählen, ob das Modell Streaming-Antworten oder Nicht-Streaming-Antworten generiert. Bei Streaming-Antworten erhalten Sie jede Antwort, sobald ihr Ausgabetoken generiert wurde. Bei Nicht-Streaming-Antworten erhalten Sie alle Antworten, nachdem alle Ausgabetokens erzeugt wurden.

Verwenden Sie für eine Nicht-Streamingantwort die Methode StreamGenerateContent.

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

Verwenden Sie für eine Nicht-Streamingantwort die Methode GenerateContentAsync.

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

Weitere Informationen dazu, wie der Server Antworten streamen kann, finden Sie unter Streaming-RPCs.

Beispielcode


using Google.Api.Gax.Grpc;
using Google.Cloud.AIPlatform.V1;
using Google.Protobuf;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

public class MultimodalMultiImage
{
    public async Task<string> GenerateContent(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001"
    )
    {
        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        ByteString colosseum = await ReadImageFileAsync(
            "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark1.png");

        ByteString forbiddenCity = await ReadImageFileAsync(
            "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark2.png");

        ByteString christRedeemer = await ReadImageFileAsync(
            "https://storage.googleapis.com/cloud-samples-data/vertex-ai/llm/prompts/landmark3.png");

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { InlineData = new() { MimeType = "image/png", Data = colosseum }},
                        new Part { Text = "city: Rome, Landmark: the Colosseum" },
                        new Part { InlineData = new() { MimeType = "image/png", Data = forbiddenCity }},
                        new Part { Text = "city: Beijing, Landmark: Forbidden City"},
                        new Part { InlineData = new() { MimeType = "image/png", Data = christRedeemer }}
                    }
                }
            }
        };

        using PredictionServiceClient.StreamGenerateContentStream response = predictionServiceClient.StreamGenerateContent(generateContentRequest);

        StringBuilder fullText = new();

        AsyncResponseStream<GenerateContentResponse> responseStream = response.GetResponseStream();
        await foreach (GenerateContentResponse responseItem in responseStream)
        {
            fullText.Append(responseItem.Candidates[0].Content.Parts[0].Text);
        }
        return fullText.ToString();
    }

    private static async Task<ByteString> ReadImageFileAsync(string url)
    {
        using HttpClient client = new();
        using var response = await client.GetAsync(url);
        byte[] imageBytes = await response.Content.ReadAsByteArrayAsync();
        return ByteString.CopyFrom(imageBytes);
    }
}

REST

Nachdem Sie Ihre Umgebung eingerichtet haben, können Sie mit REST einen Text-Prompt testen. Im folgenden Beispiel wird eine Anfrage an den Publisher gesendet Modellendpunkt zu erstellen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Geben Sie eine unterstützte Region ein. Eine vollständige Liste der unterstützten Regionen finden Sie unter Verfügbare Standorte.

    Klicken Sie, um eine unvollständige Liste der verfügbaren Regionen einzublenden

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Ihre Projekt-ID.
  • FILE_URI1: Der URI oder die URL der Datei, die in den Prompt aufgenommen werden soll. Unter anderem sind folgende Werte zulässig:
    • Cloud Storage-Bucket-URI: Das Objekt muss entweder öffentlich lesbar sein oder sich im selben Google Cloud-Projekt befinden, von dem die Anfrage gesendet wird. Für gemini-1.5-pro und gemini-1.5-flash beträgt die Größenbeschränkung 2 GB. Für gemini-1.0-pro-vision beträgt die Größenbeschränkung 20 MB.
    • HTTP-URL: Die Datei-URL muss öffentlich lesbar sein. Sie können eine Videodatei, eine Audiodatei und bis zu 10 Bilddateien pro Anfrage angeben. Audiodateien, Videodateien und Dokumente dürfen nicht größer als 15 MB sein.
    • YouTube-Video-URL: Das YouTube-Video muss entweder dem Konto gehören, mit dem Sie sich in der Google Cloud Console angemeldet haben, oder öffentlich sein. Pro Anfrage wird nur eine YouTube-Video-URL unterstützt.

    Wenn Sie einen fileURI angeben, müssen Sie auch den Medientyp (mimeType) der Datei angeben.

    Wenn Sie keine Bilddatei in Cloud Storage haben, können Sie die folgende öffentlich zugängliche Datei: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png mit dem MIME-Typ image/png. Öffnen Sie die Beispielbilddatei, um dieses Bild anzusehen.

  • MIME_TYPE: Der Medientyp der Datei, die in den Feldern data oder fileUri angegeben wurde. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren von MIME-Typen klicken

    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
    Zur Vereinfachung wird in diesem Beispiel für alle drei Eingabebilder derselbe Medientyp verwendet.
  • TEXT1: Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel:city: Rome, Landmark: the Colosseum
  • FILE_URI2: Der URI oder die URL der Datei, die in den Prompt aufgenommen werden soll. Unter anderem sind folgende Werte zulässig:
    • Cloud Storage-Bucket-URI: Das Objekt muss entweder öffentlich lesbar sein oder sich im selben Google Cloud-Projekt befinden, von dem die Anfrage gesendet wird. Für gemini-1.5-pro und gemini-1.5-flash beträgt die Größenbeschränkung 2 GB. Für gemini-1.0-pro-vision beträgt die Größenbeschränkung 20 MB.
    • HTTP-URL: Die Datei-URL muss öffentlich lesbar sein. Sie können eine Videodatei, eine Audiodatei und bis zu 10 Bilddateien pro Anfrage angeben. Audiodateien, Videodateien und Dokumente dürfen nicht größer als 15 MB sein.
    • YouTube-Video-URL: Das YouTube-Video muss entweder dem Konto gehören, mit dem Sie sich in der Google Cloud Console angemeldet haben, oder öffentlich sein. Pro Anfrage wird nur eine YouTube-Video-URL unterstützt.

    Wenn Sie einen fileURI angeben, müssen Sie auch den Medientyp (mimeType) der Datei angeben.

    Wenn Sie keine Bilddatei in Cloud Storage haben, können Sie die folgende öffentlich zugängliche Datei: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.png mit dem MIME-Typ image/png. Öffnen Sie die Beispielbilddatei, um dieses Bild anzusehen.

  • TEXT2: Die Textanleitung, die in den Prompt eingefügt werden soll. Beispiel:city: Beijing, Landmark: Forbidden City
  • FILE_URI3: Der URI oder die URL der Datei, die in den Prompt aufgenommen werden soll. Unter anderem sind folgende Werte zulässig:
    • Cloud Storage-Bucket-URI: Das Objekt muss entweder öffentlich lesbar sein oder sich im selben Google Cloud-Projekt befinden, von dem die Anfrage gesendet wird. Für gemini-1.5-pro und gemini-1.5-flash beträgt die Größenbeschränkung 2 GB. Für gemini-1.0-pro-vision beträgt die Größenbeschränkung 20 MB.
    • HTTP-URL: Die Datei-URL muss öffentlich lesbar sein. Sie können eine Videodatei, eine Audiodatei und bis zu 10 Bilddateien pro Anfrage angeben. Audiodateien, Videodateien und Dokumente dürfen nicht größer als 15 MB sein.
    • YouTube-Video-URL: Das YouTube-Video muss entweder dem Konto gehören, mit dem Sie sich in der Google Cloud Console angemeldet haben, oder öffentlich sein. Pro Anfrage wird nur eine YouTube-Video-URL unterstützt.

    Wenn Sie einen fileURI angeben, müssen Sie auch den Medientyp (mimeType) der Datei angeben.

    Wenn Sie keine Bilddatei in Cloud Storage haben, können Sie die folgende öffentlich zugängliche Datei: gs://cloud-samples-data/vertex-ai/llm/prompts/landmark3.png mit dem MIME-Typ image/png. Öffnen Sie die Beispielbilddatei, um dieses Bild anzusehen.

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
EOF

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

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/gemini-1.5-flash:generateContent"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI1",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT1"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI2",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT2"
      },
      {
        "fileData": {
          "fileUri": "FILE_URI3",
          "mimeType": "MIME_TYPE"
        }
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

$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/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Beachten Sie Folgendes in der URL für dieses Beispiel:
  • Mit der Methode generateContent können Sie anfordern, dass die Antwort zurückgegeben wird, nachdem sie vollständig generiert wurde. Um die Wahrnehmung von Latenz für menschliche Zielgruppen zu verringern, streame die Antwort, während sie mithilfe der Methode streamGenerateContent erzeugt wird.
  • Die multimodale Modell-ID befindet sich am Ende der URL vor der Methode (z. B. gemini-1.5-flash oder gemini-1.0-pro-vision). Dieses Beispiel unterstützt möglicherweise auch andere Modelle.

Console

So senden Sie einen multimodalen Prompt mit der Google Cloud Console:

  1. Rufen Sie im Bereich „Vertex AI“ der Google Cloud Console die Seite Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf Im freien Format öffnen.

  3. Optional – Konfigurieren Sie Modell und Parameter:

    • Modell: Wählen Sie ein Modell aus.
    • Region: Wählen Sie die Region aus, die Sie verwenden möchten.
    • Temperaturen: Geben Sie über den Schieberegler oder das Textfeld einen Temperaturwert ein.

      Die Temperatur wird für die Probenahme während der Antwortgenerierung verwendet. Dies passiert, wenn topP und topK angewendet werden. Die Temperatur bestimmt den Grad der Zufälligkeit bei der Tokenauswahl. Niedrigere Temperaturen eignen sich gut für Prompts, die eine weniger offene oder kreative Antwort erfordern, während höhere Temperaturen zu vielfältigeren oder kreativeren Ergebnissen führen können. Eine Temperatur von 0 bedeutet, dass immer die Tokens mit der höchsten Wahrscheinlichkeit ausgewählt werden. In diesem Fall sind die Antworten auf einen bestimmten Prompt größtenteils deterministisch, aber eine gewisse Variation ist dennoch möglich.

      Wenn das Modell eine zu allgemeine oder zu kurze Antwort zurückgibt, oder wenn das Modell eine Fallback-Antwort ausgibt, versuchen Sie, die Temperatur zu erhöhen.

    • Token-Ausgabelimit: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für das maximale Ausgabelimit einzugeben.

      Maximale Anzahl an Tokens, die in der Antwort generiert werden können. Ein Token besteht aus etwa vier Zeichen. 100 Tokens entsprechen etwa 60–80 Wörtern.

      Geben Sie kürzere Werte für kürzere Antworten und höhere Werte für längere Antworten an.

    • Stoppsequenz hinzufügen: Optional. Geben Sie eine Stoppsequenz ein, die aus einer Reihe von Zeichen (einschließlich Leerzeichen) besteht. Wenn das Modell auf eine Stoppsequenz stößt, wird die Antwortgenerierung beendet. Die Stoppsequenz ist nicht in der Antwort enthalten. Sie können bis zu fünf Stoppsequenzen hinzufügen.

  4. Optional: Klicken Sie zum Konfigurieren erweiterter Parameter auf Erweitert und konfigurieren Sie so:

    Klicken Sie, um erweiterte Konfigurationen zu maximieren.

    • Top-K: Sie können den Schieberegler oder das Textfeld verwenden, um einen Wert für Top-K einzugeben. (nicht für Gemini 1.5 unterstützt)

      Der Wert „Top-K“ ändert, wie das Modell Tokens für die Ausgabe auswählt. Ein „Top-K“ von 1 bedeutet, dass das nächste ausgewählte Token unter den Tokens im Modell-Vokabular (auch als gierige Decodierung bezeichnet) am wahrscheinlichsten ist, während ein „Top-K“ von 3 bedeutet, dass das nächste Token mithilfe der Temperatur aus den drei wahrscheinlichsten Tokens ausgewählt wird.

      Für jeden Tokenauswahlschritt werden die „Top-K“-Tokens mit den höchsten Wahrscheinlichkeiten abgetastet. Anschließend werden Tokens weiter auf der Grundlage von „Top-P“ gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.

      Geben Sie einen niedrigeren Wert für weniger zufällige Antworten und einen höheren Wert für zufälligere Antworten an.

    • Top-P: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für „Top-P“ einzugeben. Tokens werden vom wahrscheinlichsten bis zum am wenigsten wahrscheinlichen Token ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Wert von „Top-P“ entspricht. Für die Ergebnisse der geringsten Variablen legen Sie Top-P auf 0 fest.
    • Maximale Anzahl von Antworten: Verwenden Sie den Schieberegler oder das Textfeld, um einen Wert für die Anzahl der zu generierenden Antworten einzugeben.
    • Streamingantworten: Wenn Sie diese Option aktivieren, werden Antworten ausgedruckt, sobald sie generiert werden.
    • Schwellenwert für Sicherheitsfilter: Wählen Sie den Schwellenwert aus, mit dem Sie festlegen, wie wahrscheinlich es ist, dass Sie Antworten sehen, die möglicherweise schädlich sind.
    • Fundierung aktivieren: Die Funktion „Fundierung“ wird für multimodale Prompts nicht unterstützt.

  5. Klicken Sie auf Medien einfügen und wählen Sie eine Quelle für die Datei aus.

    Hochladen

    Wählen Sie die Datei aus, die Sie hochladen möchten, und klicken Sie auf Öffnen.

    Über URL

    Geben Sie die URL der Datei ein, die Sie verwenden möchten, und klicken Sie auf Einfügen.

    Cloud Storage

    Wählen Sie den Bucket und dann die Datei aus dem Bucket aus, die Sie importieren möchten, und klicken Sie auf Auswählen.

    Google Drive

    1. Wählen Sie ein Konto aus und erteilen Sie Vertex AI Studio die Einwilligung, bei der ersten Auswahl dieser Option auf Ihr Konto zuzugreifen. Sie können mehrere Dateien mit einer Gesamtgröße von bis zu 10 MB hochladen. Eine einzelne Datei darf nicht größer als 7 MB sein.
    2. Klicken Sie auf die Datei, die Sie hinzufügen möchten.
    3. Klicken Sie auf Auswählen.

      Die Miniaturansicht der Datei wird im Bereich Prompt angezeigt. Außerdem wird die Gesamtzahl der Tokens angezeigt. Wenn Ihre Prompt-Daten das Tokenlimit überschreiten, werden die Tokens abgeschnitten und nicht bei der Verarbeitung Ihrer Daten berücksichtigt.

  6. Geben Sie Ihren Prompt in den Bereich Prompt ein.

  7. Optional: Wenn Sie Token-ID zu Text und Token-IDs sehen möchten, klicken Sie im Bereich Prompt auf die Anzahl der Tokens.

  8. Klicken Sie auf Senden.

  9. Optional: Klicken Sie auf Speichern, um den Prompt unter Meine Prompts zu speichern.

  10. Optional: Klicken Sie auf Code abrufen, um den Python-Code oder einen curl-Befehl für den Prompt abzurufen.

Optionale Modellparameter festlegen

Jedes Modell hat eine Reihe von optionalen Parametern, die Sie festlegen können. Weitere Informationen finden Sie unter Parameter für die Inhaltsgenerierung.

Bildgröße und Formatanforderungen

Gemini-Multimodal-Modelle unterstützen die folgenden MIME-Bildtypen:

MIME-Typ für Bild Gemini 1.5 Flash Gemini 1.5 Pro, Gemini 1.0 Pro Vision
PNG - image/png
JPEG - image/jpeg
WebP – image/webp

Die Anzahl der Pixel in einem Bild ist nicht begrenzt. Größere Bilder werden jedoch herunterskaliert und auf eine maximale Auflösung von 3072 × 3072 aufgefüllt, wobei ihr ursprüngliches Seitenverhältnis beibehalten wird.

Die maximale Anzahl von Bilddateien, die in einer Prompt-Anfrage zulässig sind:

  • Gemini 1.0 Pro Vision: 16 Bilder
  • Gemini 1.5 Flash und Gemini 1.5 Pro: 3.000 Bilder

So werden Tokens für Bilder berechnet:

  • Gemini 1.0 Pro Vision: Jedes Bild berücksichtigt 258 Tokens.
  • Gemini 1.5 Flash und Gemini 1.5 Pro:
    • Wenn beide Seiten eines Bildes maximal 384 Pixel haben, werden 258 Tokens verwendet.
    • Wenn eine Dimension eines Bildes größer als 384 Pixel ist, wird das Bild in Kacheln zugeschnitten. Die Standardgröße der einzelnen Kacheln entspricht der kleinsten Dimension (Breite oder Höhe) geteilt durch 1,5. Falls erforderlich, wird jede Kachel so angepasst, dass sie nicht kleiner als 256 Pixel und nicht größer als 768 Pixel ist. Jede Kachel wird dann auf 768 × 768 Pixel skaliert und verwendet 258 Token.

Best Practices

Beachten Sie bei der Verwendung von Bildern die folgenden Best Practices und Informationen, um die besten Ergebnisse zu erzielen:

  • Wenn Sie Text in einem Bild erkennen möchten, erzielen Sie mit Prompts mit einem einzelnen Bild bessere Ergebnisse als mit Prompts mit mehreren Bildern.
  • Wenn Ihr Prompt ein einzelnes Bild enthält, platzieren Sie das Bild in Ihrer Anfrage vor dem Text-Prompt.
  • Wenn sich in Ihrem Prompt mehrere Bilder befinden und Sie später in Ihrem Prompt darauf verweisen möchten oder das Modell in der Modellantwort auf sie verweisen soll, kann es hilfreich sein, jedem Bild einen Index vor dem Bild zu geben. Verwenden Sie a b c oder image 1 image 2 image 3 für Ihren Index. Das folgende Beispiel zeigt die Verwendung indexierter Bilder in einem Prompt:
    image 1 
    image 2 
    image 3 
    
    Write a blogpost about my day using image 1 and image 2. Then, give me ideas
    for tomorrow based on image 3.
  • Verwenden Sie Bilder mit höherer Auflösung, da sie bessere Ergebnisse liefern.
  • Fügen Sie einige Beispiele in den Prompt ein.
  • Drehen Sie die Bilder in der richtigen Ausrichtung, bevor Sie sie dem Prompt hinzufügen.
  • Vermeiden Sie unscharfe Bilder.

Beschränkungen

Multimodale Gemini-Modelle sind zwar in vielen multimodalen Anwendungsfällen nützlich, aber es ist wichtig, die Einschränkungen der Modelle zu verstehen:

  • Inhaltsmoderation: Die Modelle geben keine Antworten zu Bildern, die gegen unsere Sicherheitsrichtlinien verstoßen.
  • Räumliches Denken: Die Modelle können Text oder Objekte in Bildern nicht genau finden. Sie geben möglicherweise nur eine ungefähre Anzahl an Objekten zurück.
  • Medizinische Zwecke: Die Modelle sind nicht für die Interpretation medizinischer Bilder (z. B. Röntgen- und CT-Scans) oder die Bereitstellung von medizinischem Rat geeignet.
  • Personenerkennung: Die Modelle sind nicht dazu gedacht, Personen in Bildern zu identifizieren, die keine Prominenten sind.
  • Genauigkeit: Die Modelle können bei der Interpretation von gedrehten Bildern sowie Bildern mit niedriger Qualität oder sehr niedrigen Auflösungen halluzinieren oder Fehler machen. Die Modelle können auch bei der Interpretation von handgeschriebenem Text in Bilddokumenten halluzinieren.

Nächste Schritte