Prompts und Antworten bereinigen

Model Armor prüft Prompts und Antworten auf die 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

Verwenden Sie diesen Befehl, um einen Textprompt in Model Armor zu entfernen. 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:

  • gcloud auth print-access-token ist das Zugriffstoken für das angegebene Konto.
  • PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.
  • LOCATION: Speicherort der Vorlage.
  • TEMPLATE_ID: Die ID der Vorlage.

Das führt zur folgenden Antwort: Hinweis: MATCH_FOUND gehört zur Kategorie „Bösartig“.

{
 "sanitizationResult": {
   "filterMatchState": "NO_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"
         }
       }
     }
   }
 }
}

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 erste 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

gcloud alpha model-armor templates create template-name
--location=location
--basic-config-filter-enforcement=enabled

REST APIs

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:

  • gcloud auth print-access-token ist das Zugriffstoken für das angegebene Konto.
  • PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.
  • LOCATION: Speicherort der Vorlage.
  • TEMPLATE_ID: Die ID der Vorlage.

Verwenden Sie die erstellte Vorlage, um Ihre Prompts zu überprü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.us-central1.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/us-central1/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

gcloud alpha model-armor templates create template-name
--location=location \
--advanced-config-inspect-template="path/to/template"

REST APIs

  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: die ID des Projekts, zu dem die Vorlage gehört.
  • LOCATION: Speicherort 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-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:

  • PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.

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:

  • gcloud auth print-access-token ist das Zugriffstoken für das angegebene Konto.
  • PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.
  • LOCATION: Speicherort der Vorlage.
  • TEMPLATE_ID: 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:

  • gcloud auth print-access-token ist das Zugriffstoken für das angegebene Konto.
  • PROJECT_ID: die ID des Projekts, zu dem die Vorlage gehört.
  • LOCATION: Speicherort der Vorlage.
  • TEMPLATE_ID: 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.us-central1.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/us-central1/templates/ma-template-id-1234: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"
        }
      },
    }
  }
}

Nächste Schritte