Membersihkan perintah dan respons

Model Armor memeriksa perintah dan respons untuk tingkat keyakinan penapisan 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 perintah dalam format berbasis teks dan file.

Perintah teks

REST

Gunakan perintah ini untuk membersihkan perintah teks di Model Armor. Gunakan template (ma-template-id-1234) yang kita buat sebagai bagian dari langkah 7 - Perlindungan Data Sensitif Lanjutan dari Membuat 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.

Hal ini akan menghasilkan respons berikut. Perhatikan bahwa MATCH_FOUND berada 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, lakukan 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.

Hal ini akan 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
  }
  

Menyaring perintah teks dengan deteksi multibahasa diaktifkan

Aktifkan deteksi multi-bahasa berdasarkan per permintaan dengan menyetel flag enable_multi_language_detection ke true untuk setiap permintaan. Secara opsional, Anda dapat menentukan bahasa sumber untuk mendapatkan hasil yang lebih akurat. Jika bahasa sumber tidak ditentukan, bahasa tersebut akan otomatis dideteksi untuk memberikan dukungan multi-bahasa.

Gunakan perintah berikut untuk membersihkan perintah teks di Model Armor dengan deteksi multi-bahasa yang diaktifkan di tingkat permintaan.

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"

Ganti kode berikut:

  • PROJECT_ID adalah ID project untuk template.
  • LOCATION adalah lokasi template.
  • TEMPLATE_ID adalah ID template.

Konfigurasi dasar Sensitive Data Protection

Buat template dengan setelan Perlindungan Data Sensitif dasar yang diaktifkan. Sensitive Data Protection Dasar membantu Anda memeriksa sekumpulan tetap infoType Sensitive Data Protection.

InfoType Sensitive Data Protection berikut dipindai dalam perintah untuk semua region:

  • CREDIT_CARD_NUMBER: Nomor kartu kredit memiliki panjang 12 hingga 19 digit. Kartu kredit digunakan untuk transaksi pembayaran secara global.
  • FINANCIAL_ACCOUNT_NUMBER: Nomor yang merujuk ke rekening keuangan tertentu. Misalnya, nomor rekening bank atau nomor rekening dana 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 pengguna pribadi.
  • PASSWORD: Hapus sandi teks di konfigurasi, kode, dan teks lainnya.

InfoType Perlindungan Data Sensitif tambahan berikut dipindai dalam perintah untuk region berbasis 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 nol dalam kelompok digit mana pun (yaitu, 000-##-####, ###-00-####, atau ###-##-0000), dengan angka yang berisi 666 pada kelompok 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 non-penduduk dan penduduk tertentu, pasangan, dan anak-anak mereka yang tidak dapat memperoleh Nomor Jaminan Sosial (SSN).

Berikut adalah contoh konfigurasi Perlindungan Data Sensitif 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 lanjutan Sensitive Data Protection

Model Armor memungkinkan Anda menyaring perintah dan respons LLM menggunakan template Perlindungan Data Sensitif dengan setelan konfigurasi Perlindungan Data Sensitif lanjutan. Dengan begitu, Anda dapat menggunakan kemampuan Sensitive Data Protection di luar infoType yang ditawarkan dalam setelan Sensitive Data Protection dasar.

Untuk menggunakan filter lanjutan Perlindungan Data Sensitif di Model Armor, template Perlindungan Data Sensitif harus berada di lokasi cloud yang sama dengan template Model Armor, misalnya, us-central1 dalam kasus ini.

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.

Di project yang berisi template Sensitive Data Protection, berikan peran DLP User (roles/dlp.user) dan peran DLP Reader (roles/dlp.reader) kepada agen layanan yang dibuat sebagai bagian dari langkah 7 - Advanced Sensitive Data Protection pada Membuat template. Anda dapat melewati langkah ini jika template Perlindungan Data Sensitif berada di 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 yang dienkode 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, lakukan 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.

Membersihkan respons model dengan mengaktifkan deteksi multibahasa

Aktifkan deteksi multi-bahasa berdasarkan per permintaan dengan menyetel flag enable_multi_language_detection ke true untuk setiap respons. Secara opsional, Anda dapat menentukan bahasa sumber untuk mendapatkan hasil yang lebih akurat. Jika bahasa sumber tidak ditentukan, bahasa tersebut akan otomatis dideteksi untuk memberikan dukungan multi-bahasa.

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"

Ganti kode berikut:

  • PROJECT_ID adalah ID project tempat template berada.
  • LOCATION adalah lokasi template.
  • TEMPLATE_ID adalah ID template.

Langkah berikutnya