Model Armor controlla i prompt e le risposte in base ai livelli di affidabilità dello screening configurati. Questa pagina descrive in dettaglio come sanificare i prompt e le risposte.
Prima di iniziare, crea un modello seguendo le istruzioni riportate in Creare modelli.
Pulire i prompt
Model Armor pulisce i prompt in formato di testo e basato su file.
Prompt di testo
REST
Utilizza questo comando per sanificare un prompt di testo in Model Armor. Utilizza il modello (ma-template-id-1234) che abbiamo creato nell'ambito del passaggio 7 - Sensitive Data Protection avanzata di Crea modelli.
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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto per il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Il risultato è la seguente risposta. Tieni presente che MATCH_FOUND
rientra nella
categoria Contenuti dannosi.
{ "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
Per eseguire questo comando, devi prima inizializzare un client Model Armor in 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)
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto per il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Il risultato è la seguente risposta.
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 }
Sanitizzare i prompt di testo con il rilevamento multilingue attivato
Attiva il rilevamento multilingue su richiesta impostando il
flag enable_multi_language_detection
su true
per ogni singola richiesta.
Se vuoi, puoi specificare la lingua di origine per risultati più precisi.
Se la lingua di origine non è specificata, viene rilevata automaticamente per fornire
il supporto multilingue.
Utilizza il seguente comando per sanificare un prompt di testo in Model Armor con il rilevamento multilingue attivato a livello di richiesta.
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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto per il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Configurazione di base di Sensitive Data Protection
Crea un modello con le impostazioni di base di Sensitive Data Protection abilitate. La protezione dei dati sensibili di base ti aiuta a eseguire lo screening di un insieme fisso di infoType di Sensitive Data Protection.
I seguenti infoType di Sensitive Data Protection vengono scansionati nel prompt per tutte le regioni:
CREDIT_CARD_NUMBER
: il numero di una carta di credito può contenere da 12 a 19 cifre. Si utilizzano per eseguire transazioni di pagamento a livello globale.FINANCIAL_ACCOUNT_NUMBER
: un numero che si riferisce a un conto finanziario specifico. Ad esempio, un numero di conto bancario o di conto pensionistico.GCP_CREDENTIALS
: Google Cloud credenziali dell'account di servizio. Credenziali che possono essere usate per l'autenticazione con librerie client API e service account di Google.GCP_API_KEY
: Google Cloud chiave API. Una stringa criptata utilizzata quando vengono chiamate API Google Cloud che non richiedono l'accesso a dati utente privati.PASSWORD
: cancella le password in chiaro nelle configurazioni, nel codice e in altri contenuti testuali.
I seguenti infoType di Sensitive Data Protection aggiuntivi vengono scansionati nel prompt per le regioni con sede negli Stati Uniti:
US_SOCIAL_SECURITY_NUMBER
: Il codice SSN (States Social Security) statunitense è un numero di previdenza sociale di 9 cifre rilasciato a cittadini statunitensi, residenti permanenti e residenti temporanei. Questo rilevatore non ricercherà la corrispondenza con numeri composti da soli zeri in uno dei gruppi di cifre (ossia 000-##-####, ###-00-#### o ###-##-0000), con numeri contenenti 666 nel primo gruppo di cifre o con numeri la cui cifra iniziale è 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: un numero di identificazione del contribuente individuale (ITIN) degli Stati Uniti è un tipo di numero di identificazione del contribuente (TIN) emesso dall'Internal Revenue Service (IRS). Si tratta di un numero utilizzato a fini fiscali disponibile solo per alcuni stranieri residenti e non residenti, i loro coniugi e familiari a carico che non possono ottenere un numero di previdenza sociale (SSN).
Ecco un esempio di configurazione di base di Sensitive Data Protection:
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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
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)
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Utilizza il modello creato per esaminare i tuoi prompt. Ecco un esempio:
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"
Questo esempio restituisce la seguente risposta:
{ "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" } } } ] } } } ] } }
Configurazione avanzata di Sensitive Data Protection
Model Armor ti consente di esaminare i prompt e le risposte dei modelli LLM utilizzando i modelli di Sensitive Data Protection tramite l'impostazione di configurazione avanzata di Sensitive Data Protection. In questo modo puoi utilizzare le funzionalità di Sensitive Data Protection oltre agli infoType offerti nell'impostazione di base di Sensitive Data Protection.
Per utilizzare il filtro avanzato di Sensitive Data Protection in Model Armor, i modelli di Sensitive Data Protection devono
trovarsi nella stessa posizione cloud del modello Model Armor, ad esempio
us-central1
in questo 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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.PROJECT_NUMBER
è il nome del tuo account di servizio.
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)
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Nel progetto contenente il modello Sensitive Data Protection, concedi il
ruolo Utente DLP (roles/dlp.user
)
e il ruolo Lettore DLP (roles/dlp.reader
)
all'agente di servizio creato nell'ambito del passaggio 7 - Sensitive Data Protection avanzata di
Crea modelli. Puoi
saltare questo passaggio se il modello Sensitive Data Protection si trova nello
stesso progetto del modello 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
Sostituisci quanto segue:
PROJECT_ID
con l'ID del progetto a cui appartiene il modello.PROJECT_NUMBER
è il nome del tuo account di servizio.
Utilizza il modello creato per esaminare i prompt. Ecco un esempio:
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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Questo esempio restituisce la seguente risposta:
{ "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"] } } } ] } }
Prompt basati su file
Utilizza questo comando per sanificare un prompt utente nel formato file con Model Armor.
I file devono essere passati nel formato codificato 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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Sanitizzazione della risposta del modello
Ecco un esempio di comando per sanificare una risposta del modello in 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"
Questo esempio restituisce la seguente risposta:
{ "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
Per eseguire questo comando, devi prima inizializzare un client Model Armor in 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)
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto per il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Sanitizza la risposta del modello con il rilevamento multilingue attivato
Attiva il rilevamento multilingue in base alla richiesta impostando il
flag enable_multi_language_detection
su true
per ogni risposta individuale.
Se vuoi, puoi specificare la lingua di origine per risultati più precisi.
Se la lingua di origine non è specificata, viene rilevata automaticamente per fornire
il supporto multilingue.
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"
Sostituisci quanto segue:
PROJECT_ID
è l'ID del progetto a cui appartiene il modello.LOCATION
è la posizione del modello.TEMPLATE_ID
è l'ID del modello.
Passaggi successivi
- Scopri di più sulla panoramica di Model Armor.
- Scopri di più sui concetti chiave di Model Armor.
- Scopri di più sulle impostazioni di base di Model Armor.
- Scopri di più sui modelli Model Armor.
- Risolvi i problemi di Model Armor.