Model Armor vérifie les requêtes et les réponses pour les niveaux de confiance de filtrage configurés. Cette page explique en détail comment nettoyer les requêtes et les réponses.
Avant de commencer, créez un modèle en suivant les instructions de la section Créer des modèles.
Nettoyer les requêtes
Model Armor nettoie les requêtes au format texte et au format basé sur des fichiers.
Requêtes textuelles
REST
Utilisez cette commande pour nettoyer une requête textuelle dans Model Armor. Utilisez le modèle (ma-template-id-1234) que nous avons créé à l'étape 7 (Protection des données sensibles avancée) de la section Créer des modèles.
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"
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet du modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Vous obtenez la réponse suivante. Notez que MATCH_FOUND
se trouve dans la catégorie "Dangereux".
{ "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
Pour exécuter cette commande, commencez par initialiser un client Model Armor en Python.
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)
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet du modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Vous obtenez la réponse suivante.
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 }
Configuration de base de la protection des données sensibles
Créez un modèle avec les paramètres de base de la protection des données sensibles activés. La protection des données sensibles de base vous aide à filtrer les infoTypes de protection des données sensibles suivants:
CREDIT_CARD_NUMBER
: un numéro de carte de crédit comporte de 12 à 19 chiffres. Ils sont utilisés pour le règlement des transactions dans le monde entier.US_SOCIAL_SECURITY_NUMBER
: aux États-Unis, un numéro de sécurité sociale (SSN) est un numéro à neuf chiffres attribué aux citoyens américains, aux résidents permanents et aux résidents temporaires. Ce détecteur ne fera pas correspondre les numéros dont l'un des groupes de chiffres ne comporte que des zéros (c'est-à-dire 000-##-####, ###-00-####, ou ###-##-0000), les numéros dont le premier groupe de chiffres est 666, ou les numéros dont le premier chiffre est 9.FINANCIAL_ACCOUNT_NUMBER
: numéro faisant référence à un compte financier spécifique (par exemple, un numéro de compte bancaire ou un numéro de compte de retraite).US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: un numéro ITIN (Individual Taxpayer Identification Number) est un type de numéro d'identification fiscale (TIN, Tax Identification Number) émis par l'IRS (Internal Revenue Service). Un ITIN est un numéro de traitement fiscal spécifique, utilisé uniquement pour les étrangers non-résidents et résidents (ainsi que leurs conjoints et les personnes à leur charge) qui ne peuvent pas bénéficier d'un numéro de sécurité sociale (SSN).GCP_CREDENTIALS
: Google Cloud identifiants du compte de service. Identifiants permettant de s'authentifier auprès de comptes de service et de bibliothèques clientes d'API Google.GCP_API_KEY
: Google Cloud clé API. Chaîne chiffrée utilisée lors de l'appel d'API Google Cloud qui n'ont pas besoin d'accéder à des données utilisateur privées.
Voici un exemple de configuration de base de la protection des données sensibles:
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"
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
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)
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Utilisez le modèle créé pour examiner vos requêtes. Exemple :
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"
Cet exemple renvoie la réponse suivante:
{ "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" } } } ] } } } ] } }
Configuration avancée de la protection des données sensibles
Model Armor vous permet de filtrer les invites et les réponses du LLM à l'aide de modèles de protection des données sensibles à l'aide du paramètre de configuration avancé de la protection des données sensibles. Cela vous permet d'utiliser les fonctionnalités de protection des données sensibles au-delà des infoTypes proposés dans le paramètre de protection des données sensibles de base.
Pour utiliser le filtre avancé de protection des données sensibles dans Model Armor, les modèles de protection des données sensibles doivent se trouver dans le même emplacement cloud que le modèle Model Armor, par exemple us-central1
dans ce cas.
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"
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.PROJECT_NUMBER
correspond au nom de votre compte de service.
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)
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Dans le projet contenant le modèle de protection des données sensibles, attribuez le rôle Utilisateur de la protection contre la perte de données (roles/dlp.user
) et le rôle Lecteur de la protection contre la perte de données (roles/dlp.reader
) à l'agent de service créé à l'étape 7 (Protection avancée des données sensibles) de Créer des modèles. Vous pouvez ignorer cette étape si le modèle de protection des données sensibles se trouve dans le même projet que le modèle Armor.
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
Remplacez les éléments suivants :
PROJECT_ID
par l'ID du projet auquel appartient le modèle.PROJECT_NUMBER
correspond au nom de votre compte de service.
Utilisez le modèle créé pour examiner vos requêtes. Exemple :
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"
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Cet exemple renvoie la réponse suivante:
{ "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" } } } ] } }
Requêtes basées sur des fichiers
Utilisez cette commande pour nettoyer une invite utilisateur au format de fichier avec Model Armor.
Les fichiers doivent être transmis au format encodé Base64
.
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"
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet auquel appartient le modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Nettoyer la réponse du modèle
Voici un exemple de commande permettant de nettoyer une réponse de modèle dans 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"
Cet exemple renvoie la réponse suivante:
{ "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
Pour exécuter cette commande, commencez par initialiser un client Model Armor en Python.
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)
Remplacez les éléments suivants :
PROJECT_ID
correspond à l'ID du projet du modèle.LOCATION
correspond à l'emplacement du modèle.TEMPLATE_ID
est l'ID du modèle.
Étape suivante
- Découvrez la présentation de Model Armor.
- Découvrez les concepts clés de Model Armor.
- Découvrez les paramètres de sol du modèle Armor.
- En savoir plus sur les modèles d'armure de modèle
- Résoudre les problèmes liés à Model Armor