Model Armor prüft Prompts und Antworten anhand der konfigurierten Konfidenzniveaus für die Überprüfung. Auf dieser Seite wird ausführlich beschrieben, wie Sie Prompts und Antworten bereinigen.
Erstellen Sie zuerst eine Vorlage. Folgen Sie dazu der Anleitung unter Vorlagen erstellen.
Prompts bereinigen
Model Armor bereinigt Prompts in Text- und Dateiformaten.
Text-Prompts
REST
Verwenden Sie diesen Befehl, um einen Text-Prompt in Model Armor zu bereinigen. Verwenden Sie die Vorlage (ma-template-id-1234), die wir in Schritt 7 – Erweiterter Schutz sensibler Daten von Vorlagen erstellen erstellt haben.
curl -X POST
-d "{user_prompt_data: { 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
ist die ID des Projekts für die Vorlage.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Das führt zu folgender Antwort: MATCH_FOUND
fällt in die Kategorie „Gefährlich“.
{ "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" } } } } } }
Python
Um diesen Befehl auszuführen, müssen Sie zuerst einen Model Armor-Client in Python initialisieren.
user_prompt_data = modelarmor_v1.DataItem() user_prompt_data.text = "[UNSAFE TEXT]" request = modelarmor_v1.SanitizeUserPromptRequest( name="projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", user_prompt_data=user_prompt_data, ) response = client.sanitize_user_prompt(request=request)
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts für die Vorlage.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
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 }
Text-Prompts mit aktivierter mehrsprachiger Erkennung bereinigen
Sie können die mehrsprachige Erkennung für jede Anfrage einzeln aktivieren, indem Sie das Flag enable_multi_language_detection
für jede Anfrage auf true
setzen.
Optional können Sie die Quellsprache angeben, um genauere Ergebnisse zu erhalten.
Wenn die Quellsprache nicht angegeben ist, wird sie automatisch erkannt, um die Unterstützung mehrerer Sprachen zu ermöglichen.
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 "{user_prompt_data: { text: '[UNSAFE TEXT]' }, multi_language_detection_metadata: { enable_multi_language_detection: true , source_language: '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
ist die ID des Projekts für die Vorlage.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Grundlegende Konfiguration von Sensitive Data Protection
Erstellen Sie eine Vorlage mit aktivierten grundlegenden Einstellungen für den Schutz sensibler Daten. Mit Basic Sensitive Data Protection können Sie nach einer festen Gruppe von infoTypes für den Schutz sensibler Daten suchen.
Die folgenden infoTypes für den Schutz sensibler Daten werden im Prompt für alle Regionen gescannt:
CREDIT_CARD_NUMBER
: Eine Kreditkartennummer ist 12 bis 19 Ziffern lang. Sie werden weltweit für Zahlungen verwendet.FINANCIAL_ACCOUNT_NUMBER
: Eine Nummer, die sich auf ein bestimmtes Finanzkonto bezieht. Zum Beispiel eine Bankkontonummer oder eine Rentenkontonummer.GCP_CREDENTIALS
: Google Cloud Anmeldedaten des Dienstkontos. Anmeldedaten, die zur Authentifizierung bei Google API-Clientbibliotheken 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, verfügbar nur für bestimmte nicht ansässige und ansässige Ausländer, deren Ehepartner und Familienangehörige, die keine Sozialversicherungsnummer (SSN) erhalten können.
Hier sehen Sie ein Beispiel für eine einfache Konfiguration für den Schutz sensibler Daten:
gcloud
gcloud model-armor templates create template-name \ --location=location \ --basic-config-filter-enforcement=enabled
REST
export FILTER_CONFIG_SDP_BASIC='{ "filterConfig": { "sdpSettings": { "basicConfig": { "filterEnforcement": "ENABLED" } } } }' curl -X POST \ -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=sdp_basic"
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Python
request = modelarmor_v1.CreateTemplateRequest( parent="projects/PROJECT_ID/locations/LOCATION", template_id="TEMPLATE_ID", template={ "name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", "filter_config": { "sdp_settings": { "basic_config": { "filter_enforcement": "ENABLED" } } }, } ) response = client.create_template(request=request)
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Verwenden Sie die erstellte Vorlage, um Ihre Prompts zu prüfen. Beispiel:
curl -X POST \ -d "{ user_prompt_data: { '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/sdp_basic:sanitizeUserPrompt"
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 des Schutzes sensibler Daten
Mit Model Armor können Sie LLM-Prompts und ‑Antworten mithilfe von Vorlagen für den Schutz sensibler Daten prüfen. Dazu verwenden Sie die erweiterte Konfigurationseinstellung für den Schutz sensibler Daten. So können Sie die Funktionen von Sensitive Data Protection über die in der grundlegenden Sensitive Data Protection-Einstellung angebotenen infoTypes hinaus nutzen.
Wenn Sie den erweiterten Filter für den Schutz sensibler Daten in Model Armor verwenden möchten, müssen sich die Vorlagen für den Schutz sensibler Daten am selben Cloud-Standort wie die Model Armor-Vorlage befinden, z. B. us-central1
in diesem Fall.
gcloud
gcloud model-armor templates create template-name --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
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=sdp_advanced" # Result of CreateTemplate { "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" } } } }, service_agent_email: "service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com"
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.PROJECT_NUMBER
ist der Name Ihres Dienstkontos.
Python
request = modelarmor_v1.CreateTemplateRequest( parent="projects/PROJECT_ID/locations/LOCATION", template_id="TEMPLATE_ID", template={ "name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", "filter_config": { "sdp_settings": { "advanced_config": { "inspect_template": "projects/PROJECT_ID/locations/LOCATION/inspectTemplates/inspect-ip-address", "deidentify_template": "projects/PROJECT_ID/locations/LOCATION/deidentifyTemplates/deidentify-ip-address" } } }, } ) response = client.create_template(request=request)
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Weisen Sie im Projekt, das die Sensitive Data Protection-Vorlage enthält, dem Dienst-Agent, der im Rahmen von Schritt 7 – Erweiterter Schutz sensibler Daten von Vorlagen erstellen erstellt wurde, die Rolle „DLP-Nutzer“ (roles/dlp.user
) und die Rolle „DLP-Leser“ (roles/dlp.reader
) zu. Sie können diesen Schritt überspringen, wenn sich die Sensitive Data Protection-Vorlage im selben Projekt wie die Model Armor-Vorlage befindet.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role roles/dlp.user gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-modelarmor.iam.gserviceaccount.com --role roles/dlp.reader
Ersetzen Sie Folgendes:
- Ersetzen Sie
PROJECT_ID
durch die ID des Projekts, zu dem die Vorlage gehört. PROJECT_NUMBER
ist der Name Ihres Dienstkontos.
Verwenden Sie die erstellte Vorlage, um Ihre Prompts zu prüfen. Beispiel:
curl -X POST \ -d "{ user_prompt_data: { '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
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist 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"] } } } ] } }
Dateibasierte Prompts
Verwenden Sie diesen Befehl, um einen Nutzer-Prompt im Dateiformat mit Model Armor zu bereinigen.
Die Dateien müssen im Base64
-codierten Format übergeben werden.
curl -X POST \ -d "$(jq -n \ --arg data "$(base64 -w 0 -i sample.pdf)" \ '{userPromptData: {byteItem: {byteDataType: "PDF", 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
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Modellantwort bereinigen
Hier ist ein Beispielbefehl zum Bereinigen einer Modellantwort in Model Armor.
REST
curl -X POST
-d "{model_response_data: { text: 'It might hurt and cause pain' } }"
-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"
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" } }, } } }
Python
Um diesen Befehl auszuführen, müssen Sie zuerst einen Model Armor-Client in Python initialisieren.
model_response_data = modelarmor_v1.DataItem() model_response_data.text = "It might hurt and cause pain" request = modelarmor_v1.SanitizeModelResponseRequest( name="projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID", model_response_data=model_response_data, ) response = client.sanitize_model_response(request=request)
Ersetzen Sie Folgendes:
PROJECT_ID
ist die ID des Projekts für die Vorlage.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Modellantwort mit aktivierter mehrsprachiger Erkennung bereinigen
Sie können die mehrsprachige Erkennung für jede Anfrage aktivieren, indem Sie das Flag enable_multi_language_detection
für jede einzelne Antwort auf true
setzen.
Optional können Sie die Quellsprache angeben, um genauere Ergebnisse zu erhalten.
Wenn die Quellsprache nicht angegeben ist, wird sie automatisch erkannt, um die Unterstützung mehrerer Sprachen zu ermöglichen.
curl -X POST \ -d "{model_response_data: { text: '[UNSAFE TEXT]' }, multi_language_detection_metadata: { enable_multi_language_detection: true , source_language: '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
ist die ID des Projekts, zu dem die Vorlage gehört.LOCATION
ist der Speicherort der Vorlage.TEMPLATE_ID
ist die ID der Vorlage.
Nächste Schritte
- Übersicht zu Model Armor
- Weitere Informationen zu den wichtigsten Konzepten von Model Armor
- Weitere Informationen zu Model Armor-Mindesteinstellungen
- Weitere Informationen zu Model Armor-Vorlagen
- Probleme mit Model Armor beheben