Integrasi Model Armor dengan Vertex AI

Model Armor dapat diintegrasikan langsung ke Vertex AI baik menggunakan setelan batas bawah atau menggunakan template. Model Armor terintegrasi dengan Vertex AI untuk menyaring permintaan yang dikirim ke dan respons yang diterima dari model Gemini. Memeriksa atau memblokir traffic yang melanggar setelan batas bawah.

Model Armor memberikan perlindungan perintah dan respons dalam Gemini API di Vertex AI untuk metode generateContent. Anda harus mengaktifkan Cloud Logging untuk mendapatkan visibilitas ke hasil pembersihan perintah dan respons.

Sebelum memulai

Berikan izin pengguna Model Armor ke akun layanan Vertex AI.

gcloud projects add-iam-policy-binding PROJECT_ID --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com' --role='roles/modelarmor.user'
  

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project ID Anda.
  • PROJECT_NUMBER: nomor project Google Cloud Anda.

Mengonfigurasi setelan minimum

Anda menggunakan setelan minimum untuk mengonfigurasi nilai minimum deteksi untuk template Model Armor. Setelan ini memverifikasi bahwa semua template baru dan yang diubah memenuhi persyaratan setelan harga minimum.

Untuk mengaktifkan integrasi Model Armor dan Vertex AI, Anda dapat menetapkan setelan batas bawah hanya di tingkat project menggunakan API atau konsol Google Cloud .

Untuk mengonfigurasi setelan lantai, lihat Mengonfigurasi setelan lantai.

Untuk mengonfigurasi setelan lantai dengan integrasi Vertex AI, jalankan perintah berikut:

  curl -X PATCH \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -d '{"filterConfig" : {}, "integratedServices": "AI_PLATFORM", "aiPlatformFloorSetting":{"inspect_only":true, "enableCloudLogging":true}}' \
      "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting"

Ganti PROJECT_ID dengan ID project untuk setelan lantai.

Setelah mengonfigurasi setelan batas bawah untuk mengaktifkan pembersihan Vertex AI, Model Armor akan membersihkan semua panggilan API generateContent ke endpoint Gemini project menggunakan setelan filter yang ditentukan.

Contoh kode berikut menunjukkan cara menggunakan metode generateContent.

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-2.0-flash-001:generateContent" -d '{
"contents": [
    {
        "role": "user",
        "parts": [
            {
                "text": ""
            }
        ]
    }
]
, "generationConfig": {
    "responseModalities": ["TEXT"]
    ,"temperature": 0.2
    ,"maxOutputTokens": 1024
    ,"topP": 0.8
}
}'

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project ID Anda.
  • LOCATION: Google Cloud lokasi endpoint Gemini. Untuk lokasi yang didukung, lihat Lokasi untuk Model Armor API.

Contoh kode berikut menunjukkan respons dari metode generateContent.

{
  "promptFeedback": {
    "blockReason": "MODEL_ARMOR",
    "blockReasonMessage": "Blocked by Floor Setting. The prompt violated Responsible AI Safety settings (Harassment, Dangerous), Prompt Injection and Jailbreak filters."
  },
  "usageMetadata": {
    "trafficType": "ON_DEMAND"
  },
  "modelVersion": "gemini-2.0-flash-001",
  "createTime": "2025-03-26T13:14:36.961184Z",
  "responseId": "vP3jZ6DVOqLKnvgPqZL-8Ao"
}

Menentukan jenis penegakan untuk setelan lantai

Untuk mengonfigurasi cara Model Armor menangani deteksi, tetapkan jenis penegakan. Contoh berikut menunjukkan konfigurasi setelan lantai dengan jenis penerapan Inspect and block.

export FLOOR_SETTING='{
  "filter_config": {
    "rai_settings": {
      "rai_filters": {
        "filter_type": "HATE_SPEECH",
        "confidence_level": "LOW_AND_ABOVE"
      },
      "rai_filters": {
        "filter_type": "DANGEROUS",
        "confidence_level": "LOW_AND_ABOVE"
      },
    "rai_filters": {
        "filter_type": "SEXUALLY_EXPLICIT",
        "confidence_level": "LOW_AND_ABOVE"
      },
      "rai_filters": {
        "filter_type": "HARASSMENT",
        "confidence_level": "LOW_AND_ABOVE"
      }
    },
    "sdpSettings": {
      "basicConfig": {
        "filterEnforcement": "ENABLED"
      }
    },
    "piAndJailbreakFilterSettings": {
       "filterEnforcement": "ENABLED",
       "confidenceLevel": "LOW_AND_ABOVE"
     },
     "maliciousUriFilterSettings": {
       "filterEnforcement": "ENABLED"
     }
  },
  "integratedServices": [
      "AI_PLATFORM"
   ],
  "aiPlatformFloorSetting": {
    "inspectAndBlock": true,
    "enableCloudLogging": true
  },
  "enable_floor_setting_enforcement": "true"
}'

curl -X POST \
    -d "$FLOOR_SETTING"  \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/floorSetting"

Ganti kode berikut:

  • PROJECT_ID: ID project untuk setelan lantai.
  • LOCATION: lokasi setelan minimum.

Mengonfigurasi template Model Armor

Model Armor juga dapat diintegrasikan dengan Vertex AI menggunakan template Model Armor. Template memungkinkan Anda mengonfigurasi cara Model Armor menyaring perintah dan respons serta menentukan konfigurasi filter keamanan.

Anda harus membuat template terlebih dahulu, lalu menggunakan template ini dengan metode generateContent Gemini. Untuk mengetahui informasi selengkapnya tentang template, lihat Membuat dan mengelola template Model Armor.

Setelah mengonfigurasi template Model Armor, teruskan ID template sebagai parameter saat melakukan panggilan ke Gemini API menggunakan metode generateContent. Vertex AI akan merutekan permintaan ke Model Armor untuk diproses.

Contoh kode berikut menunjukkan permintaan ke metode generateContent.

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/gemini-2.0-flash-001:generateContent" -d '{
"contents": [
    {
        "role": "user",
        "parts": [
            {
                "text": ""
            }
        ]
    }
]
, "generationConfig": {
    "responseModalities": ["TEXT"]
    ,"temperature": 0.2
    ,"maxOutputTokens": 1024
    ,"topP": 0.8
},
 "model_armor_config": {
        "prompt_template_name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID",
"response_template_name": "projects/PROJECT_ID/locations/LOCATION/templates/TEMPLATE_ID"
    }
}'

Ganti kode berikut:

  • PROJECT_ID: Google Cloud Project ID
  • LOCATION: Google Cloud lokasi endpoint Gemini. Lokasi yang didukung adalah us-central1, us-east4, us-west1, dan europe-west4.
  • TEMPLATE_ID: ID template Model Armor.

Contoh kode berikut menunjukkan respons dari metode generateContent.

{
  "promptFeedback": {
    "blockReason": "MODEL_ARMOR",
    "blockReasonMessage": "Blocked by Floor Setting. The prompt violated Responsible AI Safety settings (Harassment, Dangerous), Prompt Injection and Jailbreak filters."
  },
  "usageMetadata": {
    "trafficType": "ON_DEMAND"
  },
  "modelVersion": "gemini-2.0-flash-001",
  "createTime": "2025-03-26T13:14:36.961184Z",
  "responseId": "vP3jZ6DVOqLKnvgPqZL-8Ao"
}

Pertimbangan

Pertimbangkan hal-hal berikut saat mengintegrasikan Model Armor dengan Vertex AI:

  • Penyensoran Sensitive Data Protection untuk template de-identifikasi tidak didukung.
  • Pembersihan perintah dan respons yang berisi dokumen tidak didukung.
  • Vertex AI melewati langkah pembersihan Model Armor dan melanjutkan pemrosesan permintaan dalam kondisi berikut:

    • Model Armor tidak tersedia di region tempat Vertex AI berada.
    • Model Armor tidak dapat dijangkau untuk sementara.
    • Terjadi error dalam Model Armor.

    Semua instance ini terkadang dapat mengekspos perintah atau respons yang tidak disaring karena permintaan berlanjut tanpa pembersihan perintah dan respons.