Model Armor memeriksa perintah dan respons untuk tingkat keyakinan penyaringan yang dikonfigurasi. Halaman ini menjelaskan cara membersihkan perintah dan respons secara mendetail.
Sebelum memulai, buat template dengan mengikuti petunjuk di Membuat template.
Membersihkan perintah
Model Armor membersihkan prompt dalam format berbasis teks dan file.
Perintah teks
REST
Gunakan perintah ini untuk membersihkan prompt teks di Model Armor. Gunakan template (ma-template-id-1234) yang kami buat sebagai bagian dari langkah 7 - Perlindungan Data Sensitif Lanjutan dari Buat template.
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"
Ganti kode berikut:
PROJECT_ID
adalah ID project untuk template.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Ini menghasilkan respons berikut. Perhatikan bahwa MATCH_FOUND
termasuk dalam kategori Berbahaya.
{ "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
Untuk menjalankan perintah ini, inisialisasi klien Model Armor di Python terlebih dahulu.
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)
Ganti kode berikut:
PROJECT_ID
adalah ID project untuk template.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Ini menghasilkan respons berikut.
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 }
Konfigurasi Sensitive Data Protection Dasar
Buat template dengan setelan Sensitive Data Protection dasar yang diaktifkan. Basic Sensitive Data Protection membantu Anda menyaring serangkaian infoType Sensitive Data Protection yang tetap.
InfoType Sensitive Data Protection berikut dipindai dalam dialog untuk semua wilayah:
CREDIT_CARD_NUMBER
: Panjang nomor kartu kredit adalah 12 hingga 19 digit. Mereka digunakan untuk transaksi pembayaran secara global.FINANCIAL_ACCOUNT_NUMBER
: Angka yang mengacu ke akun keuangan tertentu. Misalnya, nomor rekening bank atau nomor rekening pensiun.GCP_CREDENTIALS
: Google Cloud kredensial akun layanan. Kredensial yang dapat digunakan untuk melakukan autentikasi dengan library klien dan akun layanan Google API.GCP_API_KEY
: Google Cloud Kunci API. String terenkripsi yang digunakan saat memanggil Google Cloud API yang tidak perlu mengakses data pribadi pengguna.PASSWORD
: Teks sandi yang jelas di konfigurasi, kode, dan teks lainnya.
InfoType Sensitive Data Protection tambahan berikut dipindai pada dialog untuk wilayah yang berbasis di AS:
US_SOCIAL_SECURITY_NUMBER
: Nomor Jaminan Sosial (SSN) Amerika Serikat adalah nomor 9 digit yang dikeluarkan untuk warga negara AS, penduduk tetap, dan penduduk sementara. Detektor ini tidak akan cocok dengan angka yang berisi semua angka nol dalam grup digit mana pun (yaitu, 000-##-####, ###-00-####, atau ###-##-0000), dengan angka dengan 666 pada grup digit pertama, atau dengan angka yang digit pertamanya adalah 9.US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
: Nomor Identifikasi Wajib Pajak Pribadi (ITIN) Amerika Serikat adalah jenis Nomor Identifikasi Pajak (TIN) yang dikeluarkan oleh Internal Revenue Service (IRS). ITIN adalah nomor pemrosesan pajak yang hanya tersedia untuk orang asing yang bukan penduduk dan penduduk tertentu, pasangan mereka, dan tanggungan yang tidak bisa mendapatkan Nomor Jaminan Sosial (SSN).
Berikut adalah contoh konfigurasi Sensitive Data Protection dasar:
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"
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
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)
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Gunakan template yang dibuat untuk menyaring perintah Anda. Berikut contohnya:
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"
Contoh ini menampilkan respons berikut:
{ "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" } } } ] } } } ] } }
Konfigurasi Sensitive Data Protection Lanjutan
Model Armor memungkinkan Anda menyaring respons dan perintah LLM menggunakan template Sensitive Data Protection menggunakan setelan konfigurasi Sensitive Data Protection lanjutan. Hal ini memungkinkan Anda menggunakan kemampuan Perlindungan Data Sensitif di luar infoType yang ditawarkan dalam setelan Sensitive Data Protection dasar.
Untuk menggunakan filter lanjutan Sensitive Data Protection di Model Armor, template Sensitive Data Protection harus
berada di lokasi cloud yang sama dengan template Model Armor, misalnya
dalam kasus ini, 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"
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.PROJECT_NUMBER
adalah nama akun layanan Anda.
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)
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Pada project yang berisi template Sensitive Data Protection, berikan
peran Pengguna DLP (roles/dlp.user
)
dan peran Pembaca DLP (roles/dlp.reader
)
ke agen layanan yang dibuat sebagai bagian dari langkah 7 - Perlindungan Data Sensitif Lanjutan dari
Membuat template. Anda dapat melewati langkah ini jika template Sensitive Data Protection berada dalam project yang sama dengan template 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
Ganti kode berikut:
PROJECT_ID
dengan ID project tempat template berada.PROJECT_NUMBER
adalah nama akun layanan Anda.
Gunakan template yang dibuat untuk menyaring perintah Anda. Berikut contohnya:
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"
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Contoh ini menampilkan respons berikut:
{ "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"] } } } ] } }
Perintah berbasis file
Gunakan perintah ini untuk membersihkan perintah pengguna dalam format file dengan Model Armor.
File harus diteruskan dalam format berenkode 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"
Ganti kode berikut:
PROJECT_ID
adalah ID project tempat template berada.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Membersihkan respons model
Berikut adalah contoh perintah untuk membersihkan respons model di 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"
Contoh ini menampilkan respons berikut:
{ "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
Untuk menjalankan perintah ini, inisialisasi klien Model Armor di Python terlebih dahulu.
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)
Ganti kode berikut:
PROJECT_ID
adalah ID project untuk template.LOCATION
adalah lokasi template.TEMPLATE_ID
adalah ID template.
Langkah berikutnya
- Pelajari ringkasan Model Armor.
- Pelajari konsep utama Model Armor.
- Pelajari Setelan lantai Model Armor.
- Pelajari template Model Armor.
- Memecahkan masalah Model Armor.