Kurzanleitung: Text mit der Vertex AI Gemini API generieren

In dieser Kurzanleitung senden Sie die folgenden multimodalen Anfragen an die Vertex AI Gemini API und sehen sich die Antworten an:

  • Text-Prompt
  • Einen Prompt und ein Bild
  • Einen Prompt und eine Videodatei (mit Audiotrack)

Sie können diese Kurzanleitung mit einem SDK für Programmiersprachen in Ihrer lokalen Umgebung oder mit der REST API ausführen.

Vorbereitung

Für diese Kurzanleitung benötigen Sie Folgendes:

  • Google Cloud-Projekt einrichten und Vertex AI API aktivieren
  • Auf Ihrem lokalen Computer:
    • Google Cloud CLI installieren, initialisieren und mit ihr authentifizieren
    • SDK für Ihre Sprache installieren

Google Cloud-Projekt einrichten

Richten Sie Ihr Google Cloud-Projekt ein und aktivieren Sie die Vertex AI API.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

Google Cloud CLI einrichten

Richten Sie die Google Cloud CLI auf Ihrem lokalen Computer ein und authentifizieren Sie sich damit. Wenn Sie mit der Gemini API in Google AI Studio vertraut sind, beachten Sie, dass die Vertex AI Gemini API Identity and Access Management anstelle von API-Schlüsseln zur Verwaltung des Zugriffs verwendet.

  1. Installieren und initialisieren Sie Google Cloud CLI.

  2. Wenn Sie die gcloud CLI bereits installiert haben, prüfen Sie mit diesem Befehl, ob Ihre gcloud-Komponenten auf dem neuesten Stand sind.

    gcloud components update
  3. Wenn Sie sich mit der gcloud CLI authentifizieren möchten, generieren Sie eine lokale Datei mit Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC). Führen Sie dazu diesen Befehl aus. Über den Befehl gestartete Webabläufe werden verwendet, um Ihre Nutzeranmeldedaten anzugeben.

    gcloud auth application-default login

    Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen einrichten.

SDK für Ihre Programmiersprache einrichten

Klicken Sie auf Ihrem lokalen Computer auf einen der folgenden Tabs, um das SDK für Ihre Programmiersprache zu installieren.

Python

Installieren und aktualisieren Sie das Vertex AI SDK for Python, indem Sie diesen Befehl ausführen.

pip3 install --upgrade "google-cloud-aiplatform>=1.64"

Node.js

Installieren oder aktualisieren Sie das aiplatform SDK für Node.js, indem Sie diesen Befehl ausführen.

npm install @google-cloud/vertexai

Java

Wenn Sie google-cloud-vertexai als Abhängigkeit hinzufügen möchten, fügen Sie den entsprechenden Code für Ihre Umgebung hinzu.

Maven mit BOM

Fügen Sie Ihrem pom.xml folgenden HTML-Code hinzu:

<dependencyManagement>
<dependencies>
  <dependency>
    <artifactId>libraries-bom</artifactId>
    <groupId>com.google.cloud</groupId>
    <scope>import</scope>
    <type>pom</type>
    <version>26.34.0</version>
  </dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-vertexai</artifactId>
</dependency>
</dependencies>

Maven ohne BOM

Fügen Sie pom.xml Folgendes hinzu:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-vertexai</artifactId>
  <version>0.4.0</version>
</dependency>

Gradle ohne BOM

Fügen Sie zum build.gradle Folgendes hinzu:

implementation 'com.google.cloud:google-cloud-vertexai:0.4.0'

Go

Prüfen Sie die verfügbaren Go-Pakete für die Vertex AI API, um festzustellen, welches Paket die Anforderungen Ihres Projekts am besten erfüllt.

  • (Empfohlen) cloud.google.com/go/vertexai

    vertexai ist ein von Menschen erstelltes Paket, das Zugriff auf gängige Funktionen und Features bietet.

    Dieses Paket wird als Ausgangspunkt für die meisten Entwickler empfohlen, die mit der Vertex AI API erstellen. Verwenden Sie stattdessen das automatisch generierte aiplatform-Paket, um auf Funktionen und zuzugreifen, die noch nicht von diesem Paket abgedeckt sind.

    Führen Sie diesen Befehl aus, um dieses Paket zu installieren.

    go get cloud.google.com/go/vertexai
  • cloud.google.com/go/aiplatform

    aiplatform ist ein automatisch generiertes Paket.

    Dieses Paket ist für Projekte gedacht, die Zugriff auf die Funktionen und Features der Vertex AI API benötigen, die noch nicht vom menschlichen vertexai-Paket bereitgestellt werden.

    Führen Sie diesen Befehl aus, um dieses Paket zu installieren.

    go get cloud.google.com/go/aiplatform

C#

Installieren Sie das Paket Google.Cloud.AIPlatform.V1 von NuGet. Verwenden Sie die bevorzugte Methode, um Ihrem Projekt Pakete hinzuzufügen. Klicken Sie beispielsweise in Visual Studio mit der rechten Maustaste auf das Projekt und wählen Sie NuGet-Pakete verwalten… aus.

REST

  1. Konfigurieren Sie die Umgebungsvariablen. Dazu geben Sie Folgendes ein. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.

    MODEL_ID="gemini-1.5-flash-002"
    PROJECT_ID="PROJECT_ID"
  2. Verwenden Sie die Google Cloud CLI, um den Endpunkt zu provisionieren. Führen Sie dazu diesen Befehl aus.

    gcloud beta services identity create --service=aiplatform.googleapis.com --project=${PROJECT_ID}

Prompt an die Vertex AI Gemini API senden

Mit dem folgenden Code senden Sie einen Prompt an die Vertex AI Gemini API. In diesem Beispiel wird eine Liste möglicher Namen für ein Blumengeschäft zurückgegeben.

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

Python

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Python-Datei (.py) und kopieren Sie den folgenden Code in die Datei. Legen Sie den Wert von PROJECT_ID auf die ID Ihres Google Cloud-Projekts fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

import vertexai
from vertexai.generative_models import GenerativeModel

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

response = model.generate_content(
    "What's a good name for a flower shop that specializes in selling bouquets of dried flowers?"
)

print(response.text)
# Example response:
# **Emphasizing the Dried Aspect:**
# * Everlasting Blooms
# * Dried & Delightful
# * The Petal Preserve
# ...

Node.js

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Node.js-Datei (.js) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function generate_from_text_input(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
  });

  const prompt =
    "What's a good name for a flower shop that specializes in selling bouquets of dried flowers?";

  const resp = await generativeModel.generateContent(prompt);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

Java

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Java-Datei (.java) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-google-cloud-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class TextInput {

  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";
    String textPrompt =
        "What's a good name for a flower shop that specializes in selling bouquets of"
            + " dried flowers?";

    String output = textInput(projectId, location, modelName, textPrompt);
    System.out.println(output);
  }

  // Passes the provided text input to the Gemini model and returns the text-only response.
  // For the specified textPrompt, the model returns a list of possible store names.
  public static String textInput(
      String projectId, String location, String modelName, String textPrompt) 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);

      GenerateContentResponse response = model.generateContent(textPrompt);
      String output = ResponseHandler.getText(response);
      return output;
    }
  }
}

Go

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Go-Datei (.go) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie projectID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

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

func generateContentFromText(w io.Writer, projectID 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)
	prompt := genai.Text(
		"What's a good name for a flower shop that specializes in selling bouquets of dried flowers?")

	resp, err := gemini.GenerateContent(ctx, prompt)
	if err != nil {
		return fmt.Errorf("error generating content: %w", err)
	}
	// See the JSON response in
	// https://pkg.go.dev/cloud.google.com/go/vertexai/genai#GenerateContentResponse.
	rb, err := json.MarshalIndent(resp, "", "  ")
	if err != nil {
		return fmt.Errorf("json.MarshalIndent: %w", err)
	}
	fmt.Fprintln(w, string(rb))
	return nil
}

C#

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine C#-Datei (.cs) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class TextInputSample
{
    public async Task<string> TextInput(
        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();
        string prompt = @"What's a good name for a flower shop that specializes in selling bouquets of dried flowers?";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt }
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

REST

Um diese Prompt-Anfrage zu senden, führen Sie den Befehl „curl“ über die Befehlszeile aus oder fügen Sie den REST-Aufruf in Ihre Anwendung ein.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent -d \
$'{
  "contents": {
    "role": "user",
    "parts": [
      {
        "text": "What\'s a good name for a flower shop that specializes in selling bouquets of dried flowers?"
      }
    ]
  }
}'

Das Modell gibt eine Antwort zurück. Die Antwort wird in Abschnitten generiert, die jeweils separat auf Sicherheit geprüft werden.

Prompt und Bild an die Vertex AI Gemini API senden

Mit dem folgenden Code senden Sie einen Prompt mit Text und einem Bild an die Vertex AI Gemini API. In diesem Beispiel wird eine Beschreibung des bereitgestellten Bilds zurückgegeben (Bild für Java-Beispiel).

Python

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Python-Datei (.py) und kopieren Sie den folgenden Code in die Datei. Legen Sie den Wert von PROJECT_ID auf die ID Ihres Google Cloud-Projekts fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

response = model.generate_content(
    [
        Part.from_uri(
            "gs://cloud-samples-data/generative-ai/image/scones.jpg",
            mime_type="image/jpeg",
        ),
        "What is shown in this image?",
    ]
)

print(response.text)
# That's a lovely overhead shot of a rustic-style breakfast or brunch spread.
# Here's what's in the image:
# * **Blueberry scones:** Several freshly baked blueberry scones are arranged on parchment paper.
# They look crumbly and delicious.
# ...

Node.js

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Node.js-Datei (.js) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

Java

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Java-Datei (.java) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-google-cloud-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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 java.io.IOException;

public class Quickstart {

  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";

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

  // Analyzes the provided Multimodal input.
  public static String quickstart(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)) {
      String imageUri = "gs://generativeai-downloads/images/scones.jpg";

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(ContentMaker.fromMultiModalData(
          PartMaker.fromMimeTypeAndData("image/png", imageUri),
          "What's in this photo"
      ));

      return response.toString();
    }
  }
}

Go

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Go-Datei (.go) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie projectID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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#

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine C#-Datei (.cs) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.


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

Sie können diese Prompt-Anfrage über Ihre IDE senden oder den REST-Aufruf bei Bedarf in Ihre Anwendung einbetten.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent -d \
$'{
  "contents": {
    "role": "user",
    "parts": [
      {
      "fileData": {
        "mimeType": "image/jpeg",
        "fileUri": "gs://generativeai-downloads/images/scones.jpg"
        }
      },
      {
        "text": "Describe this picture."
      }
    ]
  }
}'

Das Modell gibt eine Antwort zurück. Die Antwort wird in Abschnitten generiert, die jeweils separat auf Sicherheit geprüft werden.

Prompt und Video an die Vertex AI Gemini API senden

Mit dem folgenden Code senden Sie einen Prompt mit Text, Audio und Video an die Vertex AI Gemini API. In diesem Beispiel wird eine Beschreibung des angegebenen Videos zurückgegeben, einschließlich aller wichtigen Informationen aus dem Audiotrack.

Sie können diese Prompt-Anfrage über die Befehlszeile, über Ihre IDE oder durch Einfügen des REST-Aufrufs in Ihre Anwendung senden.

Python

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Python-Datei (.py) und kopieren Sie den folgenden Code in die Datei. Legen Sie den Wert von PROJECT_ID auf die ID Ihres Google Cloud-Projekts fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.


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

prompt = """
Provide a description of the video.
The description should also contain anything important which people say in the video.
"""

video_file = Part.from_uri(
    uri="gs://cloud-samples-data/generative-ai/video/pixel8.mp4",
    mime_type="video/mp4",
)

contents = [video_file, prompt]

response = model.generate_content(contents)
print(response.text)
# Example response:
# Here is a description of the video.
# ... Then, the scene changes to a woman named Saeko Shimada..
# She says, "Tokyo has many faces. The city at night is totally different
# from what you see during the day."
# ...

Node.js

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Node.js-Datei (.js) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function analyze_video_with_audio(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
  });

  const filePart = {
    file_data: {
      file_uri: 'gs://cloud-samples-data/generative-ai/video/pixel8.mp4',
      mime_type: 'video/mp4',
    },
  };
  const textPart = {
    text: `
    Provide a description of the video.
    The description should also contain anything important which people say in the video.`,
  };

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

  const resp = await generativeModel.generateContent(request);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

Java

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Java-Datei (.java) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-google-cloud-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.


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.io.IOException;

public class VideoInputWithAudio {

  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";

    videoAudioInput(projectId, location, modelName);
  }

  // Analyzes the given video input, including its audio track.
  public static String videoAudioInput(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)) {
      String videoUri = "gs://cloud-samples-data/generative-ai/video/pixel8.mp4";

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(
          ContentMaker.fromMultiModalData(
              "Provide a description of the video.\n The description should also "
                  + "contain anything important which people say in the video.",
              PartMaker.fromMimeTypeAndData("video/mp4", videoUri)
          ));

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

      return output;
    }
  }
}

Go

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine Go-Datei (.go) und kopieren Sie den folgenden Code in die Datei. Ersetzen Sie projectID durch die ID Ihres Google Cloud-Projekts. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.

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

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

// generateMultimodalContent shows how to send video and text prompts to a 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()

	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)

	// Given a video file URL, prepare video file as genai.Part
	part := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("pixel8.mp4")),
		FileURI:  "gs://cloud-samples-data/generative-ai/video/pixel8.mp4",
	}

	res, err := model.GenerateContent(ctx, part, genai.Text(`
			Provide a description of the video.
			The description should also contain anything important which people say in the video.
	`))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}

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

C#

Wenn Sie eine Prompt-Anfrage senden möchten, erstellen Sie eine C#-Datei (.cs) und kopieren Sie den folgenden Code in die Datei. Legen Sie your-project-id auf Ihre Google Cloud-Projekt-ID fest. Führen Sie den Code aus, nachdem Sie die Werte aktualisiert haben.


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class VideoInputWithAudio
{
    public async Task<string> DescribeVideo(
        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();

        string prompt = @"Provide a description of the video.
The description should also contain anything important which people say in the video.";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                        new Part { FileData = new() { MimeType = "video/mp4", FileUri = "gs://cloud-samples-data/generative-ai/video/pixel8.mp4" }}
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/${MODEL_ID}:generateContent -d \
$'{
  "contents": {
    "role": "user",
    "parts": [
      {
      "fileData": {
        "mimeType": "video/mp4",
        "fileUri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4"
        }
      },
      {
        "text": "Provide a description of the video. The description should also contain anything important which people say in the video."
      }
    ]
  }
}'

Das Modell gibt eine Antwort zurück. Die Antwort wird in Abschnitten generiert, die jeweils separat auf Sicherheit geprüft werden.

Nächste Schritte