Cómo limpiar instrucciones y respuestas

Model Armor verifica las instrucciones y las respuestas para los niveles de confianza de la validación configurados. En esta página, se describe en detalle cómo limpiar las instrucciones y las respuestas.

Antes de comenzar, crea una plantilla siguiendo las instrucciones que se indican en Cómo crear plantillas.

Cómo limpiar instrucciones

Model Armor limpia las instrucciones en formatos de texto y basados en archivos.

Instrucciones de texto

Usa este comando para limpiar 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: '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"

Reemplaza lo siguiente:

  • gcloud auth print-access-token es el token de acceso de la cuenta especificada.
  • PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.
  • LOCATION: Es la ubicación de la plantilla.
  • TEMPLATE_ID: El ID de la plantilla.

Esto genera la siguiente respuesta. Ten en cuenta que MATCH_FOUND está en la categoría Peligroso.

{
 "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"
         }
       }
     }
   }
 }
}

Configuración básica de la Protección de datos sensibles

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 los siguientes infotipos de Protección de datos sensibles:

  • 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.
  • US_SOCIAL_SECURITY_NUMBER: Un número de seguridad social (NSS) de los Estados Unidos es un número de 9 dígitos que se emite a los ciudadanos y residentes permanentes y 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.
  • FINANCIAL_ACCOUNT_NUMBER: Es un número que hace referencia a una cuenta financiera específica, por ejemplo, un número de cuenta bancaria o de una cuenta de jubilación.
  • US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER: El número de identificación de contribuyente 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 seguridad social (NSS).
  • GCP_CREDENTIALS: Google Cloud credenciales de la cuenta de servicio 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 las APIs de Google Cloud que no necesitan acceder a datos privados del usuario.

Este es un ejemplo de configuración básica de la Protección de datos sensibles:

gcloud

gcloud alpha model-armor templates create template-name
--location=location
--basic-config-filter-enforcement=enabled

API de 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:

  • gcloud auth print-access-token es el token de acceso de la cuenta especificada.
  • PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.
  • LOCATION: Es la ubicación de la plantilla.
  • TEMPLATE_ID: 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 : 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 ejemplo muestra 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 la protección de datos sensibles

Model Armor te permite analizar las instrucciones y respuestas del LLM con plantillas de Protección de datos sensibles mediante la configuración avanzada de Protección de datos sensibles. Esto te permite usar las funciones de Sensitive Data Protection más allá de los infotipos que se ofrecen en la configuración básica 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 de la nube que la plantilla de Model Armor, por ejemplo, us-central1 en este caso.

gcloud

gcloud alpha model-armor templates create template-name
--location=location \
--advanced-config-inspect-template="path/to/template"

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

En el proyecto que contiene la plantilla de Protección de datos sensibles, 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 Crear plantillas. Puedes omitir este paso si la plantilla de Sensitive Data Protection está 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: Es el ID del proyecto al que pertenece la plantilla.

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:

  • gcloud auth print-access-token es el token de acceso de la cuenta especificada.
  • PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.
  • LOCATION: Es la ubicación de la plantilla.
  • TEMPLATE_ID: El ID de la plantilla.

Este ejemplo muestra 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"
          }
        }
      }
    ]
  }
}

Instrucciones basadas en archivos

Usa este comando para limpiar un mensaje 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:

  • gcloud auth print-access-token es el token de acceso de la cuenta especificada.
  • PROJECT_ID: Es el ID del proyecto al que pertenece la plantilla.
  • LOCATION: Es la ubicación de la plantilla.
  • TEMPLATE_ID: El ID de la plantilla.

Cómo limpiar la respuesta del modelo

Este es un comando de ejemplo para limpiar una respuesta del modelo en 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 ejemplo muestra 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"
        }
      },
    }
  }
}

¿Qué sigue?