Model Armor verifica las instrucciones y las respuestas para los niveles de confianza de la validación configurados. En esta página, se describe en detalle cómo limpiar las instrucciones y las respuestas.
Antes de comenzar, crea una plantilla siguiendo las instrucciones que se indican en Cómo crear plantillas.
Cómo limpiar instrucciones
Model Armor limpia las instrucciones en formatos de texto y basados en archivos.
Instrucciones de texto
REST
Usa este comando para limpiar una instrucción de texto en Model Armor. Usa la plantilla (ma-template-id-1234) que creamos como parte del paso 7: Protección de datos sensibles avanzada de Crea plantillas.
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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto de la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Esto genera la siguiente respuesta. Ten en cuenta que MATCH_FOUND
está en la categoría Peligroso.
{ "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
Para ejecutar este comando, primero inicializa un cliente de 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)
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto de la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Esto genera la siguiente respuesta.
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 }
Configuración básica de la Protección de datos sensibles
Crea una plantilla con la configuración básica de Sensitive Data Protection habilitada. La Protección de datos sensibles básica te ayuda a detectar los siguientes infotipos de Protección de datos sensibles:
CREDIT_CARD_NUMBER
: Un número de tarjeta de crédito tiene entre 12 y 19 dígitos. Se usan para transacciones de pago en todo el mundo.US_SOCIAL_SECURITY_NUMBER
: Un número de seguridad social (NSS) de los Estados Unidos es un número de 9 dígitos que se emite a los ciudadanos y residentes permanentes y temporales de ese país. El detector no mostrará coincidencias de números que solo tengan ceros en alguno de los grupos de dígitos (es decir, 000-##-####, ###-00-#### o ###-##-0000), ni que tengan 666 en el primer grupo de dígitos, ni de números cuyo primer dígito sea 9.FINANCIAL_ACCOUNT_NUMBER
: Es un número que hace referencia a una cuenta financiera específica, por ejemplo, un número de cuenta bancaria o de una cuenta de jubilación.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: El número de identificación de contribuyente individual (ITIN) de Estados Unidos es un tipo de número de identificación fiscal (TIN) que emite el Internal Revenue Service (IRS). Es un número de procesamiento fiscal disponible solo para algunos extranjeros residentes y no residentes, sus cónyuges y dependientes que no pueden obtener un número de seguridad social (NSS).GCP_CREDENTIALS
: Google Cloud credenciales de la cuenta de servicio Credenciales que se pueden usar para la autenticación con cuentas de servicio y bibliotecas cliente de la API de Google.GCP_API_KEY
: Google Cloud Clave de API. Es una cadena encriptada que se usa cuando se llama a las APIs de Google Cloud que no necesitan acceder a datos privados del usuario.
Este es un ejemplo de configuración básica de la Protección de datos 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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
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)
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Usa la plantilla creada para revisar tus instrucciones. Por ejemplo:
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"
Este ejemplo muestra la siguiente respuesta:
{ "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" } } } ] } } } ] } }
Configuración avanzada de la protección de datos sensibles
Model Armor te permite analizar las instrucciones y respuestas del LLM con plantillas de Protección de datos sensibles mediante la configuración avanzada de Protección de datos sensibles. Esto te permite usar las funciones de Sensitive Data Protection más allá de los infotipos que se ofrecen en la configuración básica de Sensitive Data Protection.
Para usar el filtro avanzado de Sensitive Data Protection en Model Armor, las plantillas de Sensitive Data Protection deben estar en la misma ubicación de la nube que la plantilla de Model Armor, por ejemplo, us-central1
en este caso.
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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.PROJECT_NUMBER
es el nombre de tu cuenta de servicio.
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)
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
En el proyecto que contiene la plantilla de Protección de datos sensibles, otorga el rol de usuario de DLP (roles/dlp.user
) y el rol de lector de DLP (roles/dlp.reader
) al agente de servicio creado como parte del paso 7: Protección de datos sensibles avanzada de Crear plantillas. Puedes omitir este paso si la plantilla de Sensitive Data Protection está en el mismo proyecto que la plantilla de Model 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
Reemplaza lo siguiente:
PROJECT_ID
por el ID del proyecto al que pertenece la plantilla.PROJECT_NUMBER
es el nombre de tu cuenta de servicio.
Usa la plantilla creada para revisar tus instrucciones. Por ejemplo:
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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Este ejemplo muestra la siguiente respuesta:
{ "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" } } } ] } }
Instrucciones basadas en archivos
Usa este comando para limpiar un mensaje del usuario en el formato de archivo con Model Armor.
Los archivos deben pasarse en el formato codificado 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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto al que pertenece la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Cómo limpiar la respuesta del modelo
Este es un comando de ejemplo para limpiar una respuesta del modelo en 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"
Este ejemplo muestra la siguiente respuesta:
{ "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
Para ejecutar este comando, primero inicializa un cliente de 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)
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto de la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
¿Qué sigue?
- Obtén información sobre la descripción general de Model Armor.
- Obtén información sobre los conceptos clave de Model Armor.
- Obtén información sobre la configuración del piso de Model Armor.
- Obtén información sobre las plantillas de Model Armor.
- Soluciona problemas de Model Armor.