Sicherheitsfilter konfigurieren

Die generativen KI-Modelle von Google wie Gemini 1.5 Flash und Gemini 1.5 Pro sind so konzipiert, dass Sicherheit an erster Stelle steht. Sie können jedoch trotzdem schädliche Antworten generieren, insbesondere wenn sie ausdrücklich dazu aufgefordert werden. Um die Sicherheit weiter zu erhöhen und Missbrauch zu minimieren, können Sie Sicherheitsfilter konfigurieren, um potenziell schädliche Antworten zu blockieren.

Auf dieser Seite werden die einzelnen Sicherheitsfiltertypen und wichtige Sicherheitskonzepte beschrieben. Bei konfigurierbaren Filtern erfahren Sie, wie Sie die Grenzwerte für die Blockierung jeder Kategorie schädlichen Inhalts konfigurieren, um zu steuern, wie oft Prompts und Antworten blockiert werden.

Sicherheitsfilter dienen als Hürde und verhindern schädliche Ausgaben, beeinflussen aber nicht direkt das Verhalten des Modells. Weitere Informationen zur Modellsteuerung finden Sie in der Systemanleitung.

Unsichere Prompts

Die Vertex AI Gemini API gibt einen der folgenden enum-Codes an, um zu erklären, warum ein Prompt abgelehnt wurde:

Enum Filtertyp Beschreibung
PROHIBITED_CONTENT Nicht konfigurierbarer Sicherheitsfilter Der Prompt wurde blockiert, weil er wegen verbotener Inhalte gemeldet wurde, in der Regel CSAM.
BLOCKED_REASON_UNSPECIFIED Es wurde kein Grund für das Blockieren des Prompts angegeben.
ANDERE Diese Aufzählung bezieht sich auf alle anderen Gründe für das Blockieren eines Prompts. Die Vertex AI Gemini API unterstützt nicht alle Sprachen. Eine Liste der unterstützten Sprachen finden Sie unter Sprachunterstützung für Gemini.

Weitere Informationen finden Sie unter BlockedReason.

Das folgende Beispiel zeigt ein Beispiel für die Ausgabe der Vertex AI Gemini API, wenn ein Prompt blockiert ist, da sie PROHIBITED_CONTENT enthalten:

{
  "promptFeedback": {
    "blockReason": "PROHIBITED_CONTENT"
  },
  "usageMetadata": {
    "promptTokenCount": 7,
    "totalTokenCount": 7
  }
}

Antworten mit Sicherheitsrisiko

Mit den folgenden Filtern können potenziell unsichere Antworten erkannt und blockiert werden:

  • Nicht konfigurierbare Sicherheitsfilter, die Darstellungen des sexuellen Missbrauchs von Kindern und personenidentifizierbare Informationen blockieren.
  • Konfigurierbare Sicherheitsfilter, die unsichere Inhalte anhand einer Liste von Kategorien für schädliche Inhalte und ihren vom Nutzer konfigurierten Grenzwerten für die Blockierung blockieren. Sie können Blockierungsgrenzwerte für jeden dieser Schäden konfigurieren, je nachdem, was für Ihren Anwendungsfall und Ihr Unternehmen geeignet ist. Weitere Informationen finden Sie unter Konfigurationsoptionen für Sicherheitsfilter.
  • Zitatfilter, die Missbrauch verhindern und eine korrekte Quellenangabe urheberrechtlich geschützter Daten sicherstellen. Weitere Informationen finden Sie unter Zitatfilter.

Ein LLM generiert Antworten in Texteinheiten, die als Tokens bezeichnet werden. Ein Modell generiert keine Tokens mehr, wenn es einen natürlichen Endpunkt erreicht hat oder einer der Filter die Antwort blockiert. Die Vertex AI Gemini API gibt einen der folgenden enum-Codes aus, um zu erklären, warum die Tokengenerierung beendet wurde:

Enum Filtertyp Beschreibung
STOP Dieser Enum-Wert gibt an, dass das Modell einen natürlichen Stopppunkt oder die angegebene Stoppsequenz erreicht hat.
MAX_TOKENS Die Tokengenerierung wurde gestoppt, da das Modell die in der Anfrage angegebene maximale Anzahl von Tokens erreicht hat.
SAFETY Konfigurierbarer Sicherheitsfilter Die Tokengenerierung wurde gestoppt, da die Antwort aus Sicherheitsgründen gemeldet wurde.
RECITATION Zitatfilter Die Tokengenerierung wurde gestoppt, da die Antwort wegen nicht autorisierter Zitate gekennzeichnet wurde.
SPII Nicht konfigurierbarer Sicherheitsfilter Die Tokengenerierung wurde gestoppt, da die Antwort wegen vertraulicher personenidentifizierbarer Informationen gekennzeichnet wurde.
PROHIBITED_CONTENT Nicht konfigurierbarer Sicherheitsfilter Die Tokengenerierung wurde gestoppt, weil die Antwort wegen verbotener Inhalte (normalerweise CSAM) gemeldet wurde.
FINISH_REASON_UNSPECIFIED Der Grund für Fertig ist nicht angegeben.
ANDERE Diese Aufzählung bezieht sich auf alle anderen Gründe, die die Tokengenerierung beenden. Die Tokengenerierung wird nicht für alle Sprachen unterstützt. Eine Liste der unterstützten Sprachen finden Sie unter Sprachunterstützung für Gemini.

Weitere Informationen finden Sie unter FinishReason.

Wenn ein Filter die Antwort blockiert, wird das Candidate.content-Feld der Antwort ungültig. Es gibt dem Modell kein Feedback.

Konfigurierbare Sicherheitsfilter

Bei Sicherheitsfiltern werden Inhalte anhand einer Liste von schädlichen Inhalten bewertet. Für jede Schadenskategorie weisen die Sicherheitsfilter eine Sicherheitsbewertung anhand der Wahrscheinlichkeit der Inhalte zu, die unsicher sind, und eine weitere Sicherheitsbewertung auf Grundlage des Schweregrads des schädlichen Inhalts aus.

Die konfigurierbaren Sicherheitsfilter haben keine von Modellversionen unabhängige Versionsverwaltung. Google aktualisiert den konfigurierbaren Sicherheitsfilter für eine zuvor veröffentlichte Version eines Modells nicht. Es kann jedoch den konfigurierbaren Sicherheitsfilter für eine zukünftige Version eines Modells aktualisieren.

Kategorien für schädliche Inhalte

Bei Sicherheitsfiltern werden Inhalte anhand der folgenden Kategorien für schädliche Inhalte bewertet:

Kategorie Definition
Hassrede Negative oder schädliche Kommentare, die auf Identität und/oder geschützte Merkmale ausgerichtet sind
Belästigung Böswillige, einschüchternde, mobbende oder missbräuchliche Kommentare, die auf andere Personen ausgerichtet sind
Sexuell explizit Enthält Verweise auf sexuelle Handlungen oder andere vulgäre Inhalte
Gefährliche Inhalte Fördert oder ermöglicht den Zugriff auf schädliche Waren, Dienste und Aktivitäten

Vergleich von Wahrscheinlichkeitswerten und Schweregradwerten

Der Sicherheitswert Wahrscheinlichkeit gibt die Wahrscheinlichkeit an, mit der eine Modellantwort mit dem entsprechenden Schaden verknüpft ist. Sie hat einen zugehörigen Konfidenzwert zwischen 0.0 und 1.0, gerundet auf eine Dezimalstelle. Der Konfidenzwert wird in vier Sicherheitskonfidenzstufen diskretisiert: NEGLIGIBLE, LOW, MEDIUM und HIGH.

Das Sicherheitswert Schweregrad gibt an, wie schädlich eine Modellantwort sein kann. Sie hat einen zugehörigen Schweregrad von 0.0 bis 1.0, gerundet auf eine Dezimalstelle. Der Schweregrad ist in vier Ebenen diskretisiert: NEGLIGIBLE, LOW, MEDIUM und HIGH.

Inhalte können einen niedrigen Wahrscheinlichkeitswert und einen hohen Schweregrad haben oder einen hohen Wahrscheinlichkeitswert und einen niedrigen Schweregrad.

Sicherheitsfilter konfigurieren

Sie können die Vertex AI Gemini API oder die Google Cloud Console verwenden, um den Sicherheitsfilter zu konfigurieren.

Vertex AI Gemini API

Die Vertex AI Gemini API bietet zwei Methoden zur „schädlichen Blockierung“:

  • SCHWEREGRAD: Diese Methode verwendet Punktzahlen sowohl für die Wahrscheinlichkeit als auch den Schweregrad.
  • WAHRSCHEINLICHKEIT: Diese Methode verwendet nur den Wahrscheinlichkeitswert.

Die Standardmethode ist SEVERITY. Bei Modellen älter als gemini-1.5-flash und gemini-1.5-pro ist die Standardmethode PROBABILITY. Weitere Informationen finden Sie in der Referenz zur HarmBlockMethod API.

Die Vertex AI Gemini API bietet die folgenden Schwellenwerte für die „schädlichen Blockierung“:

  • BLOCK_LOW_AND_ABOVE: Blockieren Sie, wenn der Wahrscheinlichkeitswert oder der Schweregrad LOW, MEDIUM oder HIGH ist.
  • BLOCK_MEDIUM_AND_ABOVE: Blockieren Sie, wenn der Wahrscheinlichkeitswert oder der Schweregrad MEDIUM oder HIGH ist. Für gemini-1.5-flash-001 und gemini-1.5-pro-001 ist BLOCK_MEDIUM_AND_ABOVE der Standardwert.
  • BLOCK_ONLY_HIGH: Blockieren Sie, wenn der Wahrscheinlichkeitswert oder der Schweregrad HIGH ist.
  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: Blockieren Sie mit dem Standardschwellenwert.
  • AUS: Es erfolgt keine automatische Antwortblockierung und es werden keine Sicherheitsmetadaten zurückgegeben. Für gemini-1.5-flash-002 und gemini-1.5-pro-002 ist OFF der Standardwert.
  • BLOCK_NONE: Die Sicherheitseinstellung BLOCK_NONE entfernt die automatische Antwortblockierung. Stattdessen können Sie Ihre eigenen Sicherheitsrichtlinien mit den zurückgegebenen Werten konfigurieren. Dies ist ein eingeschränktes Feld, das nicht für alle Nutzer in GA-Modellversionen verfügbar ist.

Der folgende Python-Code zeigt beispielsweise, wie Sie die Methode der Schadenssperre auf SEVERITY und den Schwellenwert für die die Schadenssperre auf BLOCK_ONLY_HIGH für die Kategorie gefährlicher Inhalte setzen können:

generative_models.SafetySetting(
        category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        method=generative_models.HarmBlockMethod.SEVERITY,
        threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
    ),

Dadurch werden die meisten Inhalte blockiert, die als gefährliche Inhalte eingestuft werden. Weitere Informationen finden Sie in der API-Referenz zu HarmBlockThreshold.

End-to-End-Beispiele in Python, Node.js, Java, Go, C# und REST finden Sie unter Beispiele für die Konfiguration von Sicherheitsfiltern.

Google Cloud Console

In der Google Cloud Console können Sie für jedes Sicherheitsattribut einen Schwellenwert konfigurieren. Der Sicherheitsfilter verwendet nur die Wahrscheinlichkeitswerte. Es gibt keine Option, die Schweregradwerte zu verwenden.

Die Google Cloud Console bietet die folgenden Grenzwerte:

  • Aus (Standardeinstellung): Automatische Antworten werden nicht blockiert.
  • Wenige blockieren: Blockieren Sie, wenn der Wahrscheinlichkeitswert HIGH ist.
  • Einige blockieren: Blockieren Sie, wenn der Wahrscheinlichkeitswert MEDIUM oder HIGH ist.
  • Meiste blockieren: Blockieren Sie, wenn der Wahrscheinlichkeitswert LOW, MEDIUM oder HIGH ist.

Wenn Sie beispielsweise die Blockierungseinstellung für die Kategorie Gefährliche Inhalte auf Wenige blockieren setzen, werden alle Inhalte blockiert, die mit hoher Wahrscheinlichkeit gefährliche Inhalte enthalten. Alles mit einer niedrigeren Wahrscheinlichkeit ist zulässig. Der Standardgrenzwert ist Block some.

So legen Sie die Schwellenwerte fest:

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

    Zu Vertex AI Studio

  2. Klicken Sie unter Neuen Prompt erstellen auf eine der Schaltflächen, um die Designseite für Prompts zu öffnen.

  3. Klicken Sie auf Sicherheitseinstellungen.

    Das Dialogfeld Sicherheitseinstellungen wird geöffnet.

  4. Konfigurieren Sie für jede Kategorie von Schäden den gewünschten Grenzwert.

  5. Klicken Sie auf Speichern.

Beispielausgabe, wenn eine Antwort durch den konfigurierbaren Sicherheitsfilter blockiert wird

Das folgende Beispiel zeigt die Ausgabe der Vertex AI Gemini API, wenn eine Antwort durch den konfigurierbaren Sicherheitsfilter mit gefährlichen Inhalten blockiert wird:

{
  "candidates": [{
    "finishReason": "SAFETY",
    "safetyRatings": [{
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.11027937,
      "severity": "HARM_SEVERITY_LOW",
      "severityScore": 0.28487435
    }, {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "probability": "HIGH",
      "blocked": true,
      "probabilityScore": 0.95422274,
      "severity": "HARM_SEVERITY_MEDIUM",
      "severityScore": 0.43398145
    }, {
      "category": "HARM_CATEGORY_HARASSMENT",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.11085559,
      "severity": "HARM_SEVERITY_NEGLIGIBLE",
      "severityScore": 0.19027223
    }, {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.22901751,
      "severity": "HARM_SEVERITY_NEGLIGIBLE",
      "severityScore": 0.09089675
    }]
  }],
  "usageMetadata": {
    "promptTokenCount": 38,
    "totalTokenCount": 38
  }
}

Beispiele für die Konfiguration von Sicherheitsfiltern

Die folgenden Beispiele zeigen, wie Sie den Sicherheitsfilter mit der Vertex AI Gemini API konfigurieren können:

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 Referenzdokumentation zur Python API.

import vertexai

from vertexai.generative_models import (
    GenerativeModel,
    HarmCategory,
    HarmBlockThreshold,
    Part,
    SafetySetting,
)

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

# Safety config
safety_config = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

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

# Generate content
response = model.generate_content(
    [image_file, "What is in this image?"],
    safety_settings=safety_config,
)

print(response.text)
print(response.candidates[0].safety_ratings)
# Example response:
# The image contains a beautiful arrangement of blueberry scones, flowers, coffee, and blueberries.
# The scene is set on a rustic blue background. The image evokes a sense of comfort and indulgence.
# ...

Node.js

Bevor Sie dieses Beispiel anwenden, folgen Sie den Node.js-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Node.js API.

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

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

/**
 * TODO(developer): Update these variables before running the sample.
 */
const PROJECT_ID = process.env.CAIP_PROJECT_ID;
const LOCATION = 'us-central1';
const MODEL = 'gemini-1.5-flash-001';

async function setSafetySettings() {
  // Initialize Vertex with your Cloud project and location
  const vertexAI = new VertexAI({project: PROJECT_ID, location: LOCATION});

  // Instantiate the model
  const generativeModel = vertexAI.getGenerativeModel({
    model: MODEL,
    // The following parameters are optional
    // They can also be passed to individual content generation requests
    safetySettings: [
      {
        category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      },
      {
        category: HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      },
    ],
  });

  const request = {
    contents: [{role: 'user', parts: [{text: 'Tell me something dangerous.'}]}],
  };

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

  // Create the response stream
  const responseStream = await generativeModel.generateContentStream(request);

  // Log the text response as it streams
  for await (const item of responseStream.stream) {
    if (item.candidates[0].finishReason === 'SAFETY') {
      console.log('This response stream terminated due to safety concerns.');
      break;
    } else {
      process.stdout.write(item.candidates[0].content.parts[0].text);
    }
  }
  console.log('This response stream terminated due to safety concerns.');
}

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Java-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Java API.

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

import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.Candidate;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.api.GenerationConfig;
import com.google.cloud.vertexai.api.HarmCategory;
import com.google.cloud.vertexai.api.SafetySetting;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import java.util.Arrays;
import java.util.List;

public class WithSafetySettings {

  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 textPrompt = "your-text-here";

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

  // Use safety settings to avoid harmful questions and content generation.
  public static String safetyCheck(String projectId, String location, String modelName,
      String textPrompt) 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)) {
      StringBuilder output = new StringBuilder();

      GenerationConfig generationConfig =
          GenerationConfig.newBuilder()
              .setMaxOutputTokens(2048)
              .setTemperature(0.4F)
              .build();

      List<SafetySetting> safetySettings = Arrays.asList(
          SafetySetting.newBuilder()
              .setCategory(HarmCategory.HARM_CATEGORY_HATE_SPEECH)
              .setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE)
              .build(),
          SafetySetting.newBuilder()
              .setCategory(HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT)
              .setThreshold(SafetySetting.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE)
              .build()
      );

      GenerativeModel model = new GenerativeModel(modelName, vertexAI)
          .withGenerationConfig(generationConfig)
          .withSafetySettings(safetySettings);

      GenerateContentResponse response = model.generateContent(textPrompt);
      output.append(response).append("\n");

      // Verifies if the above content has been blocked for safety reasons.
      boolean blockedForSafetyReason = response.getCandidatesList()
          .stream()
          .anyMatch(candidate -> candidate.getFinishReason() == Candidate.FinishReason.SAFETY);
      output.append("Blocked for safety reasons?: ").append(blockedForSafetyReason);

      return output.toString();
    }
  }
}

Go

Bevor Sie dieses Beispiel anwenden, folgen Sie den Go-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Go API.

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

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

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

// generateMultimodalContent generates a response into w, based upon the  provided image.
func generateMultimodalContent(w io.Writer, projectID, location, modelName string) error {
	// location := "us-central1"
	// model := "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)
	model.SetTemperature(0.4)
	// configure the safety settings thresholds
	model.SafetySettings = []*genai.SafetySetting{
		{
			Category:  genai.HarmCategoryHarassment,
			Threshold: genai.HarmBlockLowAndAbove,
		},
		{
			Category:  genai.HarmCategoryDangerousContent,
			Threshold: genai.HarmBlockLowAndAbove,
		},
	}

	// Given an image file URL, prepare image file as genai.Part
	img := genai.FileData{
		MIMEType: mime.TypeByExtension(filepath.Ext("320px-Felis_catus-cat_on_snow.jpg")),
		FileURI:  "gs://cloud-samples-data/generative-ai/image/320px-Felis_catus-cat_on_snow.jpg",
	}

	res, err := model.GenerateContent(ctx, img, genai.Text("describe this image."))
	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 C#-Einrichtungsschritten in der Vertex AI-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI C# API.

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


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

public class WithSafetySettings
{
    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();


        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = "Hello!" }
                    }
                }
            },
            SafetySettings =
            {
                new SafetySetting
                {
                    Category = HarmCategory.HateSpeech,
                    Threshold = HarmBlockThreshold.BlockLowAndAbove
                },
                new SafetySetting
                {
                    Category = HarmCategory.DangerousContent,
                    Threshold = HarmBlockThreshold.BlockMediumAndAbove
                }
            }
        };

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

        StringBuilder fullText = new();

        AsyncResponseStream<GenerateContentResponse> responseStream = response.GetResponseStream();
        await foreach (GenerateContentResponse responseItem in responseStream)
        {
            // Check if the content has been blocked for safety reasons.
            bool blockForSafetyReason = responseItem.Candidates[0].FinishReason == Candidate.Types.FinishReason.Safety;
            if (blockForSafetyReason)
            {
                fullText.Append("Blocked for safety reasons");
            }
            else
            {
                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.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Folgende Optionen sind verfügbar:

    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.
  • MODEL_ID: die Modell-ID des multimodalen Modells, das Sie verwenden möchten. Folgende Optionen sind verfügbar:
    • gemini-1.0-pro
    • gemini-1.0-pro-vision
  • ROLE: Die Rolle in einer Unterhaltung, die mit dem Inhalt verknüpft ist. Die Angabe einer Rolle ist auch bei Anwendungsfällen mit nur einem Schritt erforderlich. Unter anderem sind folgende Werte zulässig:
    • USER: Gibt Inhalte an, die von Ihnen gesendet werden
    • MODEL: Gibt die Antwort des Modells an.
  • TEXT: Die Textanleitung, die in den Prompt eingefügt werden soll.
  • SAFETY_CATEGORY: Die Sicherheitskategorie, für die ein Schwellenwert konfiguriert wird. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren von Sicherheitskategorien klicken

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: Der Schwellenwert für das Blockieren von Antworten, die basierend auf der Wahrscheinlichkeit zur angegebenen Sicherheitskategorie gehören könnten. Unter anderem sind folgende Werte zulässig:

    Zum Maximieren der Grenzwerte für die Blockierung klicken

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (Standard)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE blockiert am meisten, während BLOCK_ONLY_HIGH am wenigsten blockiert.

HTTP-Methode und URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent

JSON-Text der Anfrage:

{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "safetySettings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
}

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 und führen Sie den folgenden Befehl aus:

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/MODEL_ID:streamGenerateContent"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$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/MODEL_ID:streamGenerateContent" | Select-Object -Expand Content

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

Beispiel: cURL-Befehls

LOCATION="us-central1"
MODEL_ID="gemini-1.0-pro"
PROJECT_ID="test-project"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent -d \
$'{
  "contents": {
    "role": "user",
    "parts": { "text": "Hello!" }
  },
  "safety_settings": [
    {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "threshold": "OFF"
    },
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_LOW_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_ONLY_HIGH"
    }
  ]
}'

Zitatfilter

Die generativen Code-Features von Vertex AI sind zum Erstellen von Originalinhalten vorgesehen. Gemini begrenzt die Wahrscheinlichkeit, dass vorhandene Inhalte umfassend repliziert werden. Wenn eine Gemini-Funktion aus einer Webseite ein umfangreiches zitiert, wird von Gemini diese Seite zitiert.

Manchmal sind dieselben Inhalte auf mehreren Webseiten zu finden. Gemini versucht, Sie auf eine beliebte Quelle zu verweisen. Bei Zitaten von Code-Repositories kann auch auf eine gültige Open-Source-Lizenz verwiesen werden. Es liegt in Ihrer eigenen Verantwortung, die Lizenzanforderungen einzuhalten.

Weitere Informationen zu den Metadaten des Zitatfilters finden Sie in der Referenz zur Citation API.

Filter für die Integrität öffentlicher Dokumente

Der Filter für die Integrität öffentlicher Äußerungen erkennt und blockiert Prompts, in denen politische Wahlen und Kandidaten erwähnt oder Bezug darauf genommen werden. Dieser Filter ist standardmäßig deaktiviert. Wenn Sie die Funktion aktivieren möchten, legen Sie den Blockierungsgrenzwert für CIVIC_INTEGRITY auf einen der folgenden Werte fest. Es spielt keine Rolle, welchen Wert Sie angeben.

  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

Im folgenden Python-Code wird gezeigt, wie Sie den Filter für die demokratische Integrität aktivieren:

  generative_models.SafetySetting(
          category=generative_models.HarmCategory.HarmCategory.CIVIC_INTEGRITY,
          threshold=generative_models.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
      ),

Weitere Informationen zum Filter für die demokratische Integrität erhalten Sie von Ihrem Google Cloud-Ansprechpartner.

Best Practices

Sicherheitsfilter tragen zwar dazu bei, unsichere Inhalte zu verhindern, aber es kann vorkommen, dass sie auch sichere Inhalte blockieren oder unsichere Inhalte übersehen. Erweiterte Modelle wie Gemini 1.5 Flash und Gemini 1.5 Pro sind so konzipiert, dass sie auch ohne Filter sichere Antworten generieren. Testen Sie verschiedene Filtereinstellungen, um die richtige Balance zwischen Sicherheit und zulässigen Inhalten zu finden.

Nächste Schritte