Prompts und Antworten bereinigen

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