Model Armor verifica las instrucciones y respuestas según los niveles de confianza de detección configurados. En esta página, se describe en detalle cómo sanear las instrucciones y las respuestas.
Antes de comenzar, crea una plantilla siguiendo las instrucciones que se indican en Cómo crear plantillas.
Limpiar instrucciones
Model Armor depura las instrucciones en formatos de texto y basados en archivos.
Instrucciones de texto
REST
Usa este comando para sanear 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: '[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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto para 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
se encuentra 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 = "[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)
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto para 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 }
Cómo sanitizar instrucciones de texto con la detección en varios idiomas habilitada
Para habilitar la detección de varios idiomas por solicitud, establece la marca enable_multi_language_detection
en true
para cada solicitud individual.
De manera opcional, puedes especificar el idioma de origen para obtener resultados más precisos.
Si no se especifica el idioma de origen, se detecta automáticamente para brindar compatibilidad con varios idiomas.
Usa el siguiente comando para sanear una instrucción de texto en Model Armor con la detección multilingüe habilitada a nivel de la solicitud.
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"
Reemplaza lo siguiente:
PROJECT_ID
es el ID del proyecto para la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Configuración básica de Sensitive Data Protection
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 un conjunto fijo de infotipos de protección de datos sensibles.
En todas las regiones, se analizan los siguientes infotipos de Sensitive Data Protection en la instrucción:
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.FINANCIAL_ACCOUNT_NUMBER
: Es un número que hace referencia a una cuenta financiera específica. Por ejemplo, el número de una cuenta bancaria o de una cuenta de jubilación.GCP_CREDENTIALS
:Credenciales de la cuenta de servicio de Google Cloud Son 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 Google Cloud APIs que no requieren acceso a datos privados del usuario.PASSWORD
: Contraseñas en texto no encriptado presentes en las configuraciones, el código y otros textos.
En la instrucción, se analizan los siguientes infotipos adicionales de Sensitive Data Protection para las regiones basadas en EE.UU.:
US_SOCIAL_SECURITY_NUMBER
: Un número de seguridad social (NSS) de Estados Unidos es un número de 9 dígitos que se emite a los ciudadanos, los residentes permanentes y los residentes 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.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: El número de identificación fiscal 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 identificación personal (NSS).
A continuación, se muestra 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 : ###-##-####'} }" \ -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 devuelve 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 Sensitive Data Protection
Model Armor te permite filtrar las instrucciones y respuestas de LLM con plantillas de Protección de datos sensibles a través del parámetro de configuración avanzado de Protección de datos sensibles. Esto te permite usar las capacidades de Sensitive Data Protection más allá de los infoTypes que se ofrecen en el parámetro de configuración básico 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 en 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 Sensitive Data Protection, 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 Crea plantillas. Puedes omitir este paso si la plantilla de Sensitive Data Protection se encuentra 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 devuelve 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", "infoTypes": ["IP_ADDRESS"] } } } ] } }
Instrucciones basadas en archivos
Usa este comando para sanear una instrucción 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.
Limpiar la respuesta del modelo
Este es un ejemplo de un comando para sanear 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 devuelve 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 para la plantilla.LOCATION
es la ubicación de la plantilla.TEMPLATE_ID
es el ID de la plantilla.
Cómo sanitizar la respuesta del modelo con la detección en varios idiomas habilitada
Para habilitar la detección de varios idiomas por solicitud, configura la marca enable_multi_language_detection
en true
para cada respuesta individual.
De manera opcional, puedes especificar el idioma de origen para obtener resultados más precisos.
Si no se especifica el idioma de origen, se detecta automáticamente para brindar compatibilidad con varios idiomas.
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"
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.
¿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 más información sobre la configuración de límites de Model Armor.
- Obtén información sobre las plantillas de Model Armor.
- Soluciona problemas de Model Armor.