Auf dieser Seite wird ausführlich beschrieben, wie Sie Prompts und Antworten bereinigen. Model Armor bietet eine Reihe von Filtern, um Ihre KI-Anwendungen zu schützen. Model Armor prüft Prompts und Antworten anhand der konfigurierten Konfidenzniveaus für die Überprüfung.
Hinweis
Erstellen Sie eine Vorlage. Folgen Sie dazu der Anleitung unter Vorlagen erstellen.
Erforderliche Berechtigungen erhalten
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Model Armor zuzuweisen, damit Sie die nötigen Berechtigungen zum Bereinigen von Prompts und Antworten haben:
- Model Armor User (
roles/modelarmor.user) - Model Armor Viewer (
roles/modelarmor.viewer)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Weisen Sie im Projekt, das die Sensitive Data Protection-Vorlage enthält, dem Dienst-Agenten, der im Rahmen des Schritts Vorlagen erstellen für den erweiterten Schutz sensibler Daten erstellt wurde, die Rolle „DLP-Nutzer“ (roles/dlp.user) und die Rolle „DLP-Leser“ (roles/dlp.reader) zu.
Überspringen Sie diesen Schritt, wenn sich die Sensitive Data Protection-Vorlage im selben Projekt wie die Model Armor-Vorlage befindet.
gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.user gcloud projects add-iam-policy-binding SDP_PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role=roles/dlp.reader
Ersetzen Sie Folgendes:
SDP_PROJECT_ID: die ID des Projekts, zu dem die erweiterte Vorlage für Sensitive Data Protection gehört.PROJECT_NUMBER: die Nummer des Projekts, zu dem die Vorlage gehört.
APIs aktivieren
Sie müssen die Model Armor API aktivieren, bevor Sie Model Armor verwenden können.
Console
Aktivieren Sie die Model Armor API.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (
roles/serviceusage.serviceUsageAdmin), die die Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von RollenWählen Sie das Projekt aus, für das Sie Model Armor aktivieren möchten.
gcloud
Führen Sie die folgenden Schritte mit der Google Cloud CLI und der Model Armor API aus, bevor Sie beginnen:
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
API-Endpunktüberschreibung mit der gcloud CLI festlegen
Dieser Schritt ist nur erforderlich, wenn Sie die gcloud CLI verwenden, um die Model Armor API zu aktivieren. Sie müssen die Überschreibung des API-Endpunkt manuell festlegen, damit die gcloud CLI Anfragen korrekt an den Model Armor-Dienst weiterleitet.
Führen Sie den folgenden Befehl aus, um den API-Endpunkt für den Model Armor-Dienst festzulegen.
gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.LOCATION.rep.googleapis.com/"
Ersetzen Sie LOCATION durch die Region, in der Sie Model Armor verwenden möchten.
Prompts bereinigen
Prompts bereinigen, um schädliche Eingaben zu verhindern und dafür zu sorgen, dass sichere und angemessene Prompts an Ihre LLMs gesendet werden.
Text-Prompts
Model Armor bereinigt Text-Prompts, indem der Text analysiert und verschiedene Filter angewendet werden, um potenzielle Bedrohungen zu erkennen und zu minimieren.
REST
Verwenden Sie den folgenden Befehl, um einen Text-Prompt in Model Armor zu bereinigen.
curl -X POST \
-d '{"userPromptData":{"text":"[UNSAFE TEXT]"}}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts für die Vorlage.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Das führt zu folgender Antwort: Beachten Sie, dass MATCH_FOUND in die Kategorie „Gefährlich“ fällt.
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" }, "dangerous": { "matchState": "MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND" } }, "sdp": { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } } } } } }
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Model Armor C# SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
Node.js
Um diesen Code auszuführen, müssen Sie zuerst eine Node.js-Entwicklungsumgebung einrichten und das Model Armor Node.js SDK installieren.
PHP
Um diesen Code auszuführen, müssen Sie zuerst eine PHP-Entwicklungsumgebung einrichten und das Model Armor PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
Das führt zu folgender Antwort:
sanitization_result { filter_match_state: MATCH_FOUND filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "dangerous" value { confidence_level: HIGH match_state: MATCH_FOUND } } } } } filter_results { key: "pi_and_jailbreak" value { pi_and_jailbreak_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND confidence_level: HIGH } } } filter_results { key: "malicious_uris" value { malicious_uri_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } filter_results { key: "csam" value { csam_filter_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } invocation_result: SUCCESS }
Best Practices für das Bereinigen von Prompts in konversationeller KI
Wenn Sie Model Armor verwenden, um Eingaben in einer konversationellen KI-Anwendung zu bereinigen, ist es wichtig zu wissen, was Sie in das Feld userPromptData für die Methode SanitizeUserPrompt aufnehmen müssen.
Jede Nutzereingabe separat bereinigen: Rufen Sie die
SanitizeUserPromptAPI für jede neue Nachricht auf, die Sie vom Nutzer erhalten. So wird jede Benutzereingabe auf potenzielle Bedrohungen analysiert, bevor sie von Ihrem LLM verarbeitet wird. Das FelduserPromptDatadarf nur den Inhalt der letzten Nachricht des Nutzers in der aktuellen Unterhaltung enthalten.Kein Unterhaltungsverlauf: Vermeiden Sie es, den gesamten Chatverlauf in das Feld
userPromptDataeinzufügen.Systemprompts nicht einfügen: Schließen Sie den Systemprompt aus dem Feld
userPromptDataaus. Model Armor konzentriert sich auf die Erkennung von Bedrohungen nur in von Nutzern bereitgestellten Eingaben.
Text-Prompts mit aktivierter mehrsprachiger Erkennung bereinigen
Sie können die Erkennung mehrerer Sprachen pro Anfrage aktivieren, indem Sie das Flag enableMultiLanguageDetection für jede einzelne Anfrage auf true setzen.
Optional können Sie die Ausgangssprache angeben, um genauere Ergebnisse zu erhalten.
- Wenn Sie die Ausgangssprache nicht angeben, erkennt Model Armor die Sprache automatisch, um mehrsprachigen Support zu bieten.
- Wenn Sie die Ausgangssprache angeben, verwendet Model Armor diese Sprache, um den Text-Prompt zu bewerten, und führt keine automatische Spracherkennung durch.
Verwenden Sie den folgenden Befehl, um einen Text-Prompt in Model Armor zu bereinigen, wobei die mehrsprachige Erkennung auf Anfrageebene aktiviert ist.
curl -X POST \ -d '{"userPromptData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts für die Vorlage.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Streaming-Text-Prompts bereinigen
Bei den Streaming-Methoden von Model Armor werden Prompts und Antworten in Echtzeit als Textstreams bereinigt, ohne dass der gesamte Inhalt verfügbar sein muss. Diese Funktion ist besonders nützlich für Anwendungen, die große Text-Payloads verarbeiten oder Interaktionen mit LLMs mit geringer Latenz erfordern.
So aktivierst du das Streaming:
- StreamSanitizeUserPrompt: Streamt und bereinigt vom Nutzer bereitgestellten Text.
- StreamSanitizeModelResponse: Streamt und bereinigt von LLM generierten Text.
Model Armor bietet die folgenden Streamingmodi:
- Gepufferter Modus:Alle gestreamten Chunks werden erfasst und als eine Einheit verarbeitet.
- Echtzeitmodus:Jeder Chunk wird einzeln verarbeitet, sobald er empfangen wird. So erhalten Sie kontinuierliches Feedback.
Model Armor unterstützt unbegrenzte Tokens im Echtzeit-Streamingmodus, während der gepufferte Modus Tokenlimits unterliegt.
So funktioniert das Streaming:
- Eingabe in Chunks: Ihre Anwendung sendet Text in kleineren Teilen (Chunks) an Model Armor, anstatt den gesamten Textkörper auf einmal zu senden.
- Echtzeitverarbeitung: Model Armor verarbeitet diese Chunks, sobald sie eingehen, und wendet die in Ihrer Vorlage konfigurierten Sicherheits- und Schutzfilter an.
- Kontinuierliches Feedback: Je nach Modus (Echtzeitmodus oder gepufferter Modus) gibt Model Armor Ergebnisse pro verarbeitetem Chunk oder nach dem Empfang aller Chunks zurück.
Verwenden Sie den folgenden Befehl, um einen Streaming-Text-Prompt zu bereinigen.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
package main
import (
"context"
"fmt"
"io"
"log"
modelarmor "cloud.google.com/go/modelarmor/apiv1beta"
modelarmorpb "cloud.google.com/go/modelarmor/apiv1beta/modelarmorpb"
"google.golang.org/api/option"
"google.golang.org/protobuf/encoding/protojson"
)
func main() {
ctx := context.Background()
// Define variables for project, location, and template ID
projectID := "your-project-id"
location := "your-location-id"
templateID := "your-template-id"
// 1. Create the client with the custom regional endpoint.
opts := option.WithEndpoint("modelarmor.us-central1.rep.googleapis.com:443")
c, err := modelarmor.NewClient(ctx, opts)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
defer c.Close()
// 2. Start the StreamSanitizeUserPrompt bidirectional stream.
stream, err := c.StreamSanitizeUserPrompt(ctx)
if err != nil {
log.Fatalf("failed to initialize stream: %v", err)
}
// 3. Use a goroutine to send the requests.
go func() {
// Define the user prompt data
userPromptData := &modelarmorpb.DataItem{
DataItem: &modelarmorpb.DataItem_Text{
// Specify the user prompt.
Text: "This is a sample user prompt",
},
}
// Create the request object
req := &modelarmorpb.SanitizeUserPromptRequest{ // Use fmt.Sprintf to construct the resource name
Name: fmt.Sprintf("projects/%s/locations/%s/templates/%s", projectID, location, templateID),
UserPromptData: userPromptData,
}
reqs := []*modelarmorpb.SanitizeUserPromptRequest{req}
for _, r := range reqs {
if err := stream.Send(r); err != nil {
log.Printf("Failed to send request: %v", err)
return
}
}
stream.CloseSend()
}()
// 4. Iterate over the responses from the stream.
for {
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
log.Fatalf("failed to receive response: %v", err)
}
// Marshal the proto message to a formatted JSON string
b, _ := protojson.MarshalOptions{
Multiline: true,
Indent: " ",
}.Marshal(resp)
// Results can be consumed or assigned here in production workflows
}
}
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
package com.example.armor;
import com.google.api.gax.rpc.BidiStream;
import com.google.cloud.modelarmor.v1beta.DataItem;
import com.google.cloud.modelarmor.v1beta.ModelArmorClient;
import com.google.cloud.modelarmor.v1beta.ModelArmorSettings;
import com.google.cloud.modelarmor.v1beta.SanitizationResult;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptRequest;
import com.google.cloud.modelarmor.v1beta.SanitizeUserPromptResponse;
import com.google.cloud.modelarmor.v1beta.StreamingMode;
import com.google.cloud.modelarmor.v1beta.TemplateName;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
public class StreamSanitizeUserPrompt {
public static void main(String[] args) {
try {
streamSanitizeUserPromptExample();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void streamSanitizeUserPromptExample()
throws IOException, InterruptedException, ExecutionException {
// Specify the Google Project ID.
String projectId = "your-project-id";
// Specify the location ID. For example, us-central1.
String locationId = "your-location-id";
// Specify the template ID.
String templateId = "your-template-id";
String customApiEndpoint = "modelarmor.us-central1.rep.googleapis.com:443";
List<String> promptChunks = Arrays.asList(
"This is the first part of the user prompt. ",
"This is the second part. ",
"And this is the final part."
);
// ModelArmorSettings is now properly imported and recognized here
try (
ModelArmorClient modelArmorClient = ModelArmorClient.create(
ModelArmorSettings.newBuilder()
.setEndpoint(customApiEndpoint)
.build()
)
) {
BidiStream<SanitizeUserPromptRequest, SanitizeUserPromptResponse> stream =
modelArmorClient.streamSanitizeUserPromptCallable().call();
String resourceName = TemplateName.of(projectId, locationId, templateId).toString();
// --- Send First Request ---
SanitizeUserPromptRequest firstRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(0)))
.setStreamingMode(StreamingMode.STREAMING_MODE_BUFFERED)
.build();
stream.send(firstRequest);
// --- Send Subsequent Requests ---
for (int i = 1; i < promptChunks.size(); i++) {
SanitizeUserPromptRequest subsequentRequest = SanitizeUserPromptRequest.newBuilder()
.setName(resourceName)
.setUserPromptData(DataItem.newBuilder().setText(promptChunks.get(i)))
.build();
stream.send(subsequentRequest);
}
stream.closeSend();
// --- Receive Responses ---
for (SanitizeUserPromptResponse response : stream) {
if (response.hasSanitizationResult()) {
SanitizationResult result = response.getSanitizationResult();
// Results can be consumed or assigned here in production workflows
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
from google.cloud import modelarmor_v1beta
def sample_stream_sanitize_user_prompt():
# Create a client
client = modelarmor_v1beta.ModelArmorClient(transport="grpc", client_options = {"api_endpoint" : "modelarmor.us-central1.rep.googleapis.com"})
# Specify the Google Project ID.
project_id = "your-project-id"
# Specify the location ID. For example, us-central1.
location = "your-location-id"
# Specify the template ID.
template_id = "your-template-id"
template_name = client.template_path(project_id, location, template_id)
# Initialize request argument(s)
user_prompt_data = modelarmor_v1beta.DataItem()
# Specify the user prompt.
user_prompt_data.text = "This is a sample user prompt"
request = modelarmor_v1beta.SanitizeUserPromptRequest(
name=template_name,
user_prompt_data=user_prompt_data,
)
# This method expects an iterator which contains
# 'modelarmor_v1beta.SanitizeUserPromptRequest' objects
# Here we create a generator that yields a single `request` for
# demonstrative purposes.
requests = [request]
def request_generator():
for request in requests:
yield request
# Make the request
stream = client.stream_sanitize_user_prompt(requests=request_generator())
# Handle the response
for response in stream:
# Results can be consumed or assigned here in production workflows
sample_stream_sanitize_user_prompt()
Beachten Sie beim Bereinigen eines Streaming-Text-Prompts oder einer Streaming-Text-Antwort Folgendes:
- Damit die Inhalte effektiv bereinigt werden, dürfen die einzelnen Chunks die Token-Limits nicht überschreiten.
- Die Streamingmethoden von Model Armor unterstützen nur Texteingaben, keine Anhänge wie Bilder und Dateien.
- Verwenden Sie die Korrelations-ID, um die Streaming-Bereinigungslogs für eine bestimmte Anfrage zu verfolgen.
- Die Streamingmethoden von Model Armor unterstützen keine De-Identifizierung von Sensitive Data Protection.
Dateibasierte Prompts
Wenn Sie einen Prompt bereinigen möchten, der in einer Datei gespeichert ist, geben Sie den Dateiinhalt im Base64-Format an. Model Armor erkennt den Dateityp nicht automatisch. Sie müssen das Feld byteDataType explizit festlegen, um das Dateiformat anzugeben. Wenn das Feld fehlt oder nicht angegeben ist, schlägt die Anfrage fehl. Mögliche byteDataType-Werte sind PLAINTEXT_UTF8, PDF, WORD_DOCUMENT, EXCEL_DOCUMENT, POWERPOINT_DOCUMENT, TXT und CSV.
Die De-Identifizierung durch Sensitive Data Protection wird für dateibasierte Prompts nicht unterstützt.
REST
curl -X POST \ -d "$(jq -n \ --arg data "$(base64 -w 0 -i sample.pdf)" \ '{userPromptData: {byteItem: {byteDataType: "FILE_TYPE", byteData: $data}}}')" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.FILE_TYPE: Das Format der Eingabedatei.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Model Armor C# SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
Node.js
Um diesen Code auszuführen, müssen Sie zuerst eine Node.js-Entwicklungsumgebung einrichten und das Model Armor Node.js SDK installieren.
PHP
Um diesen Code auszuführen, müssen Sie zuerst eine PHP-Entwicklungsumgebung einrichten und das Model Armor PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
Grundeinrichtung für den Schutz sensibler Daten
Model Armor ist in Sensitive Data Protection integriert, um die versehentliche Offenlegung privater Informationen zu verhindern. Erstellen Sie eine Vorlage mit aktivierten grundlegenden Einstellungen für Sensitive Data Protection. Der grundlegende Schutz sensibler Daten hilft Ihnen, nach einem festen Satz von Sensitive Data Protection-infoTypes zu filtern.
Die folgenden Sensitive Data Protection infoTypes werden im Prompt für alle Regionen gescannt:
CREDIT_CARD_NUMBER: Eine Kreditkartennummer ist 12 bis 19 Ziffern lang. Sie wird weltweit für Zahlungsvorgänge verwendet.FINANCIAL_ACCOUNT_NUMBER: Eine Nummer, die sich auf ein bestimmtes Finanzkonto bezieht, z. B. eine Bankkontonummer oder eine Rentenkontonummer.GCP_CREDENTIALS: Google Cloud Anmeldedaten des Dienstkontos. Anmeldedaten, die zur Authentifizierung bei {api_client_lib_name} und Dienstkonten verwendet werden können.GCP_API_KEY: Google Cloud API-Schlüssel. Ein verschlüsselter String, der beim Aufrufen von Google Cloud APIs verwendet wird, die nicht auf private Nutzerdaten zugreifen müssen.PASSWORD: Klartext-Passwörter in Konfigurationen, Code und anderem Text.
Die folgenden zusätzlichen Sensitive Data Protection infoTypes werden im Prompt für Regionen in den USA gescannt:
US_SOCIAL_SECURITY_NUMBER: Eine US-amerikanische Sozialversicherungsnummer (SSN) ist eine 9-stellige Nummer für US-Staatsbürger, Inhaber einer unbeschränkten und Inhaber einer zeitlich beschränkten Aufenthaltsgenehmigung. Dieser Detektor gleicht keine Nummern ab, bei denen in einer der Zahlengruppen nur Nullen enthalten sind (d. h. 000-##-####, ###-00-#### oder ###-##-0000), deren erste Zahlengruppe 666 lautet oder deren erste Ziffer eine 9 ist.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: Eine US-amerikanische Steueridentifikationsnummer für Einzelpersonen (Individual Taxpayer Identification Number, ITIN) ist eine Art Steueridentifikationsnummer (Tax Identification Number, TIN), die vom IRS (Internal Revenue Service) ausgestellt wird. Eine ITIN ist eine Steuerbearbeitungsnummer, die nur für bestimmte nicht ansässige und ansässige Ausländer, deren Ehepartner und Familienangehörige verfügbar ist, die keine Sozialversicherungsnummer (SSN) erhalten können.
Hier sehen Sie ein Beispiel für eine einfache Konfiguration für Sensitive Data Protection:
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --project=PROJECT_ID \ --basic-config-filter-enforcement=enabled
Ersetzen Sie Folgendes:
TEMPLATE_ID: die ID der Vorlage.LOCATION: der Speicherort der Vorlage.
REST
export FILTER_CONFIG_SDP_BASIC='{ "filterConfig": { "sdpSettings": { "basicConfig": { "filterEnforcement": "ENABLED" } } } }' curl -X PATCH \ -d "$FILTER_CONFIG_SDP_BASIC" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID?updateMask=filterConfig.sdpSettings.basicConfig.filterEnforcement"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Model Armor C# SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
Node.js
Um diesen Code auszuführen, müssen Sie zuerst eine Node.js-Entwicklungsumgebung einrichten und das Model Armor Node.js SDK installieren.
PHP
Um diesen Code auszuführen, müssen Sie zuerst eine PHP-Entwicklungsumgebung einrichten und das Model Armor PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
Verwenden Sie die erstellte Vorlage, um Ihre Prompts zu prüfen. Beispiel:
curl -X POST \ -d '{"userPromptData":{"text":"can you remember my ITIN : ###-##-####"}}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Dieses Beispiel gibt die folgende Antwort zurück:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "inspectResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "findings": [ { "infoType": "US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER", "likelihood": "LIKELY", "location": { "byteRange": { "start": "26", "end": "37" }, "codepointRange": { "start": "26", "end": "37" } } } ] } } } ] } }
Erweiterte Konfiguration für den Schutz sensibler Daten
Model Armor prüft die LLM-Prompts und ‑Antworten mithilfe der erweiterten Konfigurationseinstellung für Sensitive Data Protection. So können Sie die Funktionen von Sensitive Data Protection über die infoTypes hinaus nutzen, die in der grundlegenden Einstellung für Sensitive Data Protection angeboten werden.
Wenn Sie den erweiterten Filter für Sensitive Data Protection in Model Armor verwenden möchten, müssen sich die Sensitive Data Protection-Vorlagen am selben Cloud-Standort wie die Model Armor-Vorlage befinden.
gcloud
gcloud model-armor templates create TEMPLATE_ID \ --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
Ersetzen Sie Folgendes:
TEMPLATE_ID: die ID der Vorlage.LOCATION: der Speicherort der Vorlage.
REST
export FILTER_CONFIG_SDP_ADV='{ "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }' curl -X POST \ -d "$FILTER_CONFIG_SDP_ADV" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID?updateMask=filterConfig.sdpSettings.advancedConfig"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Dieses Beispiel gibt die folgende Antwort zurück:
{ "name": "projects/PROJECT_ID/locations/LOCATION/templates/all-filters-test", "createTime": "2024-12-16T17:08:19.626693819Z", "updateTime": "2024-12-16T17:08:19.626693819Z", "filterConfig": { "sdpSettings": { "advancedConfig": { "deidentifyTemplate": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address", "inspectTemplate": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address" } } } }
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Model Armor C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
Node.js
Um diesen Code auszuführen, müssen Sie zuerst eine Node.js-Entwicklungsumgebung einrichten und das Model Armor Node.js SDK installieren.
PHP
Um diesen Code auszuführen, müssen Sie zuerst eine PHP-Entwicklungsumgebung einrichten und das Model Armor PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
Verwenden Sie die erstellte Vorlage, um Ihre Prompts zu prüfen. Beispiel:
curl -X POST \ -d '{"userPromptData":{"text":"is there anything malicious running on 1.1.1.1?"}}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeUserPrompt"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Dieses Beispiel gibt die folgende Antwort zurück:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": [ { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, { "sdpFilterResult": { "deidentifyResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "data": { "text": "is there anything malicious running on [IP_ADDRESS]?" }, "transformedBytes": "7", "infoTypes": ["IP_ADDRESS"] } } } ] } }
Modellantwort bereinigen
LLMs können manchmal schädliche Antworten generieren. Um die Risiken zu verringern, die mit der Verwendung von LLMs in Ihren Anwendungen verbunden sind, ist es wichtig, die Antworten zu bereinigen.
Hier ist ein Beispielbefehl zum Bereinigen einer Modellantwort in Model Armor.
REST
curl -X POST \
-d '{"modelResponseData":{"text":"IP address of the current network is ##.##.##.##"}}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeModelResponse"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.Dieses Beispiel gibt die folgende Antwort zurück:
{ "sanitizationResult": { "filterMatchState": "MATCH_FOUND", "invocationResult": "SUCCESS", "filterResults": { "rai": { "raiFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "MATCH_FOUND", "raiFilterTypeResults": { "dangerous": { "confidenceLevel": "MEDIUM_AND_ABOVE", "matchState": "MATCH_FOUND" }, "sexually_explicit": { "matchState": "NO_MATCH_FOUND" }, "hate_speech": { "matchState": "NO_MATCH_FOUND" }, "harassment": { "matchState": "NO_MATCH_FOUND" } } } }, "pi_and_jailbreak": { "piAndJailbreakFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "csam": { "csamFilterFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, "malicious_uris": { "maliciousUriFilterResult": { "executionState": "EXECUTION_SUCCESS", "matchState": "NO_MATCH_FOUND" } }, } } }
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Model Armor C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Model Armor Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Model Armor Java SDK installieren.
Node.js
Um diesen Code auszuführen, müssen Sie zuerst eine Node.js-Entwicklungsumgebung einrichten und das Model Armor Node.js SDK installieren.
PHP
Um diesen Code auszuführen, müssen Sie zuerst eine PHP-Entwicklungsumgebung einrichten und das Model Armor PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Model Armor Python SDK installieren.
Modellantwort mit aktivierter mehrsprachiger Erkennung bereinigen
Sie können die mehrsprachige Erkennung pro Anfrage aktivieren, indem Sie das Flag enableMultiLanguageDetection für jede einzelne Antwort auf true setzen.
Optional können Sie die Ausgangssprache angeben, um genauere Ergebnisse zu erhalten.
- Wenn Sie die Ausgangssprache nicht angeben, erkennt Model Armor die Sprache automatisch, um mehrsprachigen Support zu bieten.
- Wenn Sie die Ausgangssprache angeben, verwendet Model Armor diese Sprache, um die Modellantwort zu bewerten, und führt keine automatische Spracherkennung durch.
curl -X POST \ -d '{"modelResponseData":{"text":"[UNSAFE TEXT]"}, "multiLanguageDetectionMetadata": { "enableMultiLanguageDetection": true , "sourceLanguage": "jp"}}' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://modelarmor.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID:sanitizeModelResponse"
Ersetzen Sie Folgendes:
PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.LOCATION: der Speicherort der Vorlage.TEMPLATE_ID: die ID der Vorlage.
Modellantworten projektübergreifend bereinigen
Um die KI-Sicherheit zentral zu verwalten, speichern Organisationen Model Armor-Vorlagen häufig in einem dedizierten Projekt (Projekt A: TEMPLATE_PROJECT_ID), während ihre Anwendungen in separaten Projekten (Projekt B) ausgeführt werden.
Damit ein Dienstkonto (CALLER_SERVICE_ACCOUNT) aus Projekt B auf eine Vorlage in Projekt A zugreifen kann, müssen Sie dem Vorlagenprojekt eine IAM-Richtlinienbindung hinzufügen.
Führen Sie den folgenden Befehl aus, um die erforderlichen projektübergreifenden Berechtigungen zu erteilen:
gcloud projects add-iam-policy-binding TEMPLATE_PROJECT_ID \ --member='serviceAccount:CALLER_SERVICE_ACCOUNT' \ --role='roles/modelarmor.user'
Ersetzen Sie Folgendes:
TEMPLATE_PROJECT_ID: Die ID des Projekts, in dem die Vorlage gehostet wird.CALLER_SERVICE_ACCOUNT: Das Dienstkonto aus dem Projekt, das die API-Anfrage stellt.
Nächste Schritte
- Weitere Informationen zu Model Armor
- Weitere Informationen zu den Mindesteinstellungen für Model Armor
- Weitere Informationen zu Model Armor-Vorlagen
- Probleme mit Model Armor beheben