Model Armor prüft Prompts und Antworten anhand der konfigurierten Konfidenzniveaus für den Screening. 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 reinigt Prompts in Text- und dateibasierten Formaten.
Text-Prompts
Mit diesem Befehl können Sie einen Textprompt in Model Armor bereinigen. Verwenden Sie die Vorlage (ma-template-id-1234), die wir im Rahmen von Schritt 7 – Erweiterter Schutz sensibler Daten unter Vorlagen erstellen erstellt haben.
curl -X POST
-d "{user_prompt_data: { text: 'How do I make a bomb?' } }"
-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 zur folgenden Antwort: Beachten Sie, dass sich MATCH_FOUND
in der Kategorie „Gefährlich“ befindet.
{ "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" } } } } } }
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 = "How do I make a bomb?" 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 zur folgenden 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 }
Grundlegende Konfiguration des Schutzes sensibler Daten
Erstellen Sie eine Vorlage mit aktivierten grundlegenden Einstellungen für den Schutz sensibler Daten. Mit dem grundlegenden Schutz sensibler Daten können Sie nach den folgenden infoTypes für den Schutz sensibler Daten suchen:
CREDIT_CARD_NUMBER
: Eine Kreditkartennummer ist 12 bis 19 Ziffern lang. Sie werden weltweit für Zahlungsvorgänge verwendet.US_SOCIAL_SECURITY_NUMBER
: Die 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 Zahlengruppe 666 lautet oder deren erste Ziffer eine 9 ist.FINANCIAL_ACCOUNT_NUMBER
: Eine Nummer, die sich auf ein bestimmtes Finanzkonto bezieht, z. B. eine Bankkontonummer oder eine Nummer eines Altersvorsorgekontos.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: Die US-amerikanische Steueridentifikationsnummer für Einzelpersonen (Individual Taxpayer Identification Number, ITIN) ist eine Art Steueridentifikationsnummer (TIN), die vom Internal Revenue Service (IRS) 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.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.
Hier ein Beispiel für eine einfache Konfiguration des Schutzes sensibler Daten:
gcloud model-armor templates create template-name \ --location=location \ --basic-config-filter-enforcement=enabled
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.
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 : 988-86-1234'} }" \ -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"
In diesem Beispiel wird die folgende Antwort zurückgegeben:
{ "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
Mit Model Armor können Sie LLM-Aufforderungen und ‑Antworten mithilfe von Vorlagen für den Schutz sensibler Daten mit der erweiterten Konfigurationseinstellung für den Schutz sensibler Daten prüfen. So können Sie Funktionen für den Schutz sensibler Daten über die in der grundlegenden Einstellung für den Schutz sensibler Daten 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-Speicherort wie die Model Armor-Vorlage befinden, in diesem Fall also us-central1
.
gcloud model-armor templates create template-name --location=LOCATION \ --advanced-config-inspect-template="path/to/template" \
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.
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 mit der Vorlage für den Schutz sensibler Daten dem Dienst-Agenten, der im Rahmen von Schritt 7 – Erweiterter Schutz sensibler Daten unter 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 Vorlage für den Schutz sensibler Daten im selben Projekt wie die Vorlage für Model Armor befindet.
gcloud projects add-iam-policy-bindingPROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER @gcp-sa-modelarmor.iam.gserviceaccount.com --role roles/dlp.user gcloud projects add-iam-policy-bindingPROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER @gcp-sa-modelarmor.iam.gserviceaccount.com --role roles/dlp.reader
Ersetzen Sie Folgendes:
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 überprü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.
In diesem Beispiel wird die folgende Antwort zurückgegeben:
{ "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" } } } ] } }
Dateibasierte Prompts
Mit diesem Befehl können Sie einen Nutzerprompt im Dateiformat mit Model Armor 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 Entfernen von Schadcode aus einer Modellantwort in Model Armor.
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"
In diesem Beispiel wird die folgende Antwort zurückgegeben:
{ "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" } }, } } }
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.
Nächste Schritte
- Weitere Informationen zu Model Armor
- Weitere Informationen zu den wichtigsten Konzepten von Model Armor
- Weitere Informationen zu den Einstellungen für Model Armor-Etagen
- Weitere Informationen zu Model Armor-Vorlagen
- Probleme mit Model Armor beheben