O Model Armor verifica instruções e respostas para os 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 este 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 em Criar modelos.
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"
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 "Perigosa".
{ "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 inicie um cliente do Model Armor no 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)
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 }
Configuração básica da Proteção de dados sensíveis
Crie um modelo com as configurações básicas de proteção de dados sensíveis ativadas. A Proteção de Dados Sensíveis básica ajuda você a identificar os seguintes infoTypes de Proteção de Dados Sensíveis:
CREDIT_CARD_NUMBER
: o número de um 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.US_SOCIAL_SECURITY_NUMBER
: o CPF nos Estados Unidos é um número de nove dígitos emitido para cidadãos, residentes permanentes e temporários dos EUA. 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 com números que começam com 9.FINANCIAL_ACCOUNT_NUMBER
: um número referente a uma conta financeira específica, por exemplo, um número de conta bancária ou de aposentadoria.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: um Número de Identificação do Contribuinte Individual (ITIN, na sigla em inglês) 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).GCP_CREDENTIALS
: Google Cloud credenciais da conta de serviço. 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
:chave de API Google Cloud . Uma string criptografada usada ao chamar APIs Google Cloud que não precisam acessar dados particulares do usuário.
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 ao qual 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 ao qual o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Use o modelo criado para filtrar suas instruções. Veja um exemplo:
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 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
O Model Armor permite filtrar solicitações e respostas do LLM usando modelos de Proteção de dados sensíveis com a configuração avançada de Proteção de dados sensíveis. Isso permite que você use os recursos de proteção de dados sensíveis além dos infoTypes oferecidos na configuração básica.
Para usar o filtro avançado de Proteção de dados sensíveis no Model Armor, os modelos de Proteção de dados sensíveis precisam estar no mesmo local da nuvem que o modelo do Model Armor, por exemplo, us-central1
.
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 ao qual 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 ao qual o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
No projeto que contém o modelo de Proteção de dados sensíveis, conceda a
função de usuário do DLP (roles/dlp.user
)
e a função de leitor do DLP (roles/dlp.reader
)
ao agente de serviço criado como parte da etapa 7: Proteção avançada de dados sensíveis em
Criar modelos. Você
pode pular esta etapa se o modelo de Proteção de dados sensíveis estiver no
mesmo projeto que o modelo de Proteção de modelos.
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 ao qual o modelo pertence.PROJECT_NUMBER
é o nome da sua conta de serviço.
Use o modelo criado para filtrar suas instruções. 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 ao qual 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" } } } ] } }
Solicitações baseadas 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 ao qual o modelo pertence.LOCATION
é o local do modelo.TEMPLATE_ID
é o ID do modelo.
Limpar a resposta do modelo
Confira um exemplo de comando para limpar uma resposta de 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 inicie um cliente do Model Armor no 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.
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 de piso do Modelo Armor.
- Saiba mais sobre os modelos do Model Armor.
- Resolver problemas do Model Armor.