O Model Armor verifica comandos e respostas nos níveis de confiança de triagem configurados. Esta página descreve como limpar comandos e respostas em detalhes.
Antes de começar, crie um modelo seguindo as instruções em Criar modelos.
Limpar comandos
O Model Armor higieniza comandos em formatos de texto e baseados em arquivos.
Comandos de texto
REST
Use esse comando para limpar um comando de texto no Model Armor. Use o modelo (ma-template-id-1234) que criamos como parte da etapa 7: Proteção de dados sensíveis avançada de Criar modelos.
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"
Substitua:
PROJECT_ID
é o ID do projeto do modelo.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Isso resulta na seguinte resposta. Observe que MATCH_FOUND
está na categoria
"Conteúdo perigoso".
{ "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 executar esse comando, primeiro inicialize um cliente do Model Armor em 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)
Substitua:
PROJECT_ID
é o ID do projeto do modelo.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Isso resulta na seguinte resposta.
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 }
Higienizar comandos de texto com a detecção de vários idiomas ativada
Ative a detecção de vários idiomas por solicitação definindo a flag
enable_multi_language_detection
como true
para cada solicitação individual.
Se quiser, especifique o idioma de origem para ter resultados mais precisos.
Se o idioma de origem não for especificado, ele será detectado automaticamente para oferecer suporte a vários idiomas.
Use o comando a seguir para limpar um comando de texto no Model Armor com a detecção multilíngue ativada no nível da solicitação.
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"
Substitua:
PROJECT_ID
é o ID do projeto do modelo.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Configuração básica da Proteção de Dados Sensíveis
Crie um modelo com as configurações básicas da proteção de dados sensíveis ativadas. A Proteção de Dados Sensíveis básica ajuda você a filtrar um conjunto fixo de infoTypes da Proteção de Dados Sensíveis.
Os seguintes infoTypes da Proteção de dados sensíveis são verificados no comando em todas as regiões:
CREDIT_CARD_NUMBER
: um número de cartão de crédito tem de 12 a 19 dígitos. Eles são usados para transações de pagamento em todo o mundo.FINANCIAL_ACCOUNT_NUMBER
: um número que se refere a uma conta financeira específica. Por exemplo, o número de uma conta bancária ou de aposentadoria.GCP_CREDENTIALS
:credenciais da conta de serviço Google Cloud . Credenciais que podem ser usadas para fazer a autenticação com as bibliotecas de cliente e as contas de serviço da API do Google.GCP_API_KEY
: Google Cloud chave de API. Uma string criptografada usada ao chamar APIs Google Cloud que não precisam acessar dados particulares do usuário.PASSWORD
: limpe senhas de texto em configurações, códigos e outros textos.
Os seguintes infoTypes adicionais da Proteção de Dados Sensíveis são verificados no comando para regiões dos EUA:
US_SOCIAL_SECURITY_NUMBER
: O Número da Previdência Social (SSN, na sigla em inglês) dos Estados Unidos é um número de nove dígitos emitido para cidadãos, residentes permanentes e temporários. Este detector não fará a correspondência com números compostos apenas por zeros em qualquer grupo de dígitos (isto é, 000-##-####, ###-00-#### ou ###-##-0000), com 666 no primeiro grupo de dígitos ou que começam com 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: um Número de Identificação do Contribuinte Individual (ITIN) dos Estados Unidos é um tipo de Número de Identificação Fiscal (TIN) emitido pelo Internal Revenue Service (IRS). O ITIN é um número de processamento fiscal disponível somente para determinados estrangeiros não residentes e residentes, seus cônjuges e dependentes que não podem ter um Número de Previdência Social (SSN).
Confira um exemplo de configuração básica da Proteção de dados sensíveis:
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"
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
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)
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Use o modelo criado para analisar seus comandos. Veja um exemplo:
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 exemplo retorna a seguinte resposta:
{ "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" } } } ] } } } ] } }
Configuração avançada da proteção de dados sensíveis
Com o Model Armor, é possível analisar comandos e respostas de LLMs usando modelos da Proteção de dados sensíveis com a configuração avançada desse serviço. Assim, você pode usar recursos da Proteção de Dados Sensíveis além dos infoTypes oferecidos na configuração básica.
Para usar o filtro avançado da Proteção de dados sensíveis no Model Armor, os modelos da Proteção de dados sensíveis precisam estar no mesmo local da nuvem que o modelo do Model Armor, por exemplo, us-central1
neste 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"
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.PROJECT_NUMBER
é o nome da sua conta de serviço.
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)
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
No projeto que contém o modelo da Proteção de dados sensíveis, conceda as funções de
usuário da DLP (roles/dlp.user
)
e leitor da DLP (roles/dlp.reader
)
ao agente de serviço criado como parte da etapa 7: Proteção de dados sensíveis avançada de
Criar modelos. Você
pode pular esta etapa se o modelo da Proteção de Dados Sensíveis estiver no
mesmo projeto que o modelo do 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
Substitua:
PROJECT_ID
pelo ID do projeto a que o modelo pertence.PROJECT_NUMBER
é o nome da sua conta de serviço.
Use o modelo criado para analisar seus comandos. Veja um exemplo:
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"
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Este exemplo retorna a seguinte resposta:
{ "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"] } } } ] } }
Comandos baseados em arquivos
Use este comando para limpar um comando do usuário no formato de arquivo com o Model Armor.
Os arquivos precisam ser transmitidos no 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"
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Higienizar a resposta do modelo
Confira um exemplo de comando para higienizar uma resposta do modelo no 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 exemplo retorna a seguinte resposta:
{ "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 executar esse comando, primeiro inicialize um cliente do Model Armor em 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)
Substitua:
PROJECT_ID
é o ID do projeto do modelo.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Limpar a resposta do modelo com a detecção multilíngue ativada
Ative a detecção de vários idiomas por solicitação definindo a flag
enable_multi_language_detection
como true
para cada resposta individual.
Se quiser, especifique o idioma de origem para ter resultados mais precisos.
Se o idioma de origem não for especificado, ele será detectado automaticamente para oferecer suporte a vários 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"
Substitua:
PROJECT_ID
é o ID do projeto a que o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
A seguir
- Saiba mais sobre a visão geral do Model Armor.
- Saiba mais sobre os principais conceitos do Model Armor.
- Saiba mais sobre as configurações mínimas do Model Armor.
- Saiba mais sobre os modelos do Model Armor.
- Resolver problemas do Model Armor.