Limpar comandos e respostas

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 de arquivo.

Comandos de texto

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:

  • gcloud auth print-access-token é o token de acesso da conta especificada.
  • PROJECT_ID: o ID do projeto ao qual o modelo pertence.
  • LOCATION: o local do modelo.
  • TEMPLATE_ID: o ID do modelo.

Isso resulta na seguinte resposta. MATCH_FOUND está na categoria "Perigosa".

{
 "sanitizationResult": {
   "filterMatchState": "NO_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"
         }
       }
     }
   }
 }
}

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 alpha model-armor templates create template-name
--location=location
--basic-config-filter-enforcement=enabled

APIs 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:

  • gcloud auth print-access-token é o token de acesso da conta especificada.
  • 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.us-central1.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/us-central1/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 alpha model-armor templates create template-name
--location=location \
--advanced-config-inspect-template="path/to/template"

APIs 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.

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: o ID do projeto ao qual o modelo pertence.

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:

  • gcloud auth print-access-token é o token de acesso da conta especificada.
  • 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:

  • gcloud auth print-access-token é o token de acesso da conta especificada.
  • 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.

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.us-central1.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/us-central1/templates/ma-template-id-1234: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"
        }
      },
    }
  }
}

A seguir