Limpar comandos e respostas

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