Filter keamanan dan konten

Model AI generatif Google, seperti Gemini 2.0 Flash, dirancang untuk memprioritaskan keamanan. Namun, model ini masih dapat menghasilkan respons yang berbahaya, terutama jika diberi perintah secara eksplisit. Untuk lebih meningkatkan keamanan dan meminimalkan penyalahgunaan, Anda dapat mengonfigurasi filter konten untuk memblokir respons yang berpotensi berbahaya.

Halaman ini menjelaskan setiap jenis filter konten dan keamanan serta menguraikan konsep keamanan utama. Untuk filter konten yang dapat dikonfigurasi, Anda akan melihat cara mengonfigurasi nilai minimum pemblokiran setiap kategori bahaya untuk mengontrol seberapa sering perintah dan respons diblokir.

Filter keamanan dan konten berfungsi sebagai penghalang, mencegah output berbahaya, tetapi tidak memengaruhi perilaku model secara langsung. Untuk mempelajari lebih lanjut kemampuan pengarahan model, lihat Petunjuk sistem untuk keamanan.

Perintah tidak aman

Gemini API di Vertex AI memberikan salah satu kode enum berikut untuk menjelaskan alasan perintah ditolak:

Enum Jenis filter Deskripsi
PROHIBITED_CONTENT Filter keamanan yang tidak dapat dikonfigurasi Perintah diblokir karena ditandai berisi konten terlarang, biasanya CSAM.
BLOCKED_REASON_UNSPECIFIED T/A Alasan pemblokiran perintah tidak ditentukan.
OTHER T/A Enum ini mengacu pada semua alasan lain untuk memblokir perintah. Perhatikan bahwa Gemini API di Vertex AI tidak mendukung semua bahasa. Untuk mengetahui daftar bahasa yang didukung, lihat Dukungan bahasa Gemini.

Untuk mempelajari lebih lanjut, lihat BlockedReason.

Berikut adalah contoh output Gemini API di Vertex AI saat perintah diblokir karena berisi PROHIBITED_CONTENT:

{
  "promptFeedback": {
    "blockReason": "PROHIBITED_CONTENT"
  },
  "usageMetadata": {
    "promptTokenCount": 7,
    "totalTokenCount": 7
  }
}

Respons tidak aman

Filter berikut dapat mendeteksi dan memblokir respons yang berpotensi tidak aman:

  • Filter keamanan yang tidak dapat dikonfigurasi, yang memblokir materi pelecehan seksual terhadap anak-anak (CSAM) dan informasi identitas pribadi (PII).
  • Filter konten yang dapat dikonfigurasi, yang memblokir konten tidak aman berdasarkan daftar kategori bahaya dan nilai minimum pemblokiran yang dikonfigurasi pengguna. Anda dapat mengonfigurasi batas pemblokiran untuk setiap bahaya ini berdasarkan hal yang sesuai untuk kasus penggunaan dan bisnis Anda. Untuk mempelajari lebih lanjut, lihat Filter konten yang dapat dikonfigurasi.
  • Filter kutipan, yang memberikan kutipan untuk materi sumber. Untuk mempelajari lebih lanjut, lihat Filter kutipan.

LLM menghasilkan respons dalam satuan teks yang disebut token. Model berhenti membuat token karena mencapai titik berhenti alami atau karena salah satu filter memblokir respons. Gemini API di Vertex AI memberikan salah satu kode enum berikut untuk menjelaskan alasan pembuatan token berhenti:

Enum Jenis filter Deskripsi
STOP T/A Enum ini menunjukkan bahwa model mencapai titik penghentian alami atau urutan penghentian yang diberikan.
MAX_TOKENS T/A Pembuatan token dihentikan karena model mencapai jumlah maksimum token yang ditentukan dalam permintaan.
SAFETY Filter konten yang dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai sebagai konten berbahaya.
RECITATION Filter kutipan Pembuatan token dihentikan karena berpotensi ada pembacaan.
SPII Filter keamanan yang tidak dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai sebagai berisi konten Informasi Identitas Pribadi Sensitif (SPII).
PROHIBITED_CONTENT Filter keamanan yang tidak dapat dikonfigurasi Pembuatan token dihentikan karena respons ditandai berisi konten terlarang, biasanya CSAM.
FINISH_REASON_UNSPECIFIED T/A Alasan penyelesaian tidak ditentukan.
OTHER T/A Enum ini mengacu pada semua alasan lain yang menghentikan pembuatan token. Perhatikan bahwa pembuatan token tidak didukung untuk semua bahasa. Untuk mengetahui daftar bahasa yang didukung, lihat Dukungan bahasa Gemini.

Untuk mempelajari lebih lanjut, lihat FinishReason.

Jika filter memblokir respons, filter akan membatalkan kolom Candidate.content respons. Tidak memberikan masukan apa pun ke model.

Filter konten yang dapat dikonfigurasi

Filter konten menilai konten berdasarkan daftar bahaya. Untuk setiap kategori bahaya, filter konten menetapkan satu skor berdasarkan probabilitas konten yang berbahaya dan skor lainnya berdasarkan tingkat keparahan konten berbahaya.

Filter konten yang dapat dikonfigurasi tidak memiliki pembuatan versi yang terpisah dari versi model. Google tidak akan mengupdate filter konten yang dapat dikonfigurasi untuk versi model yang dirilis sebelumnya. Namun, filter konten yang dapat dikonfigurasi dapat diperbarui untuk versi model mendatang.

Kategori bahaya

Filter konten menilai konten berdasarkan kategori bahaya berikut:

Kategori Bahaya Definisi
Ujaran Kebencian Komentar negatif atau berbahaya yang menargetkan atribut identitas dan/atau dilindungi.
Pelecehan Komentar yang mengancam, mengintimidasi, menindas, atau melecehkan yang menargetkan individu lain.
Seksual Vulgar Berisi referensi ke tindakan seksual atau konten cabul lainnya.
Konten Berbahaya Mempromosikan atau memungkinkan akses ke barang, layanan, dan aktivitas berbahaya.

Perbandingan skor probabilitas dan skor tingkat keparahan

Skor keamanan probabilitas mencerminkan kemungkinan respons model terkait dengan bahaya masing-masing. Respons ini memiliki skor keyakinan terkait antara 0.0 dan 1.0, yang dibulatkan ke satu angka desimal. Skor keyakinan didiskretkan menjadi empat tingkat keyakinan: NEGLIGIBLE, LOW, MEDIUM, dan HIGH.

Skor keparahan mencerminkan besarnya potensi bahaya respons model. Setiap pelanggaran memiliki skor tingkat keparahan terkait yang berkisar dari 0.0 hingga 1.0, yang dibulatkan ke satu angka di belakang koma. Skor tingkat keparahan didiskretisasi menjadi empat tingkat: NEGLIGIBLE, LOW, MEDIUM, dan HIGH.

Konten dapat memiliki skor probabilitas rendah dan skor tingkat keseriusan tinggi, atau skor probabilitas tinggi dan skor tingkat keseriusan rendah.

Cara mengonfigurasi filter konten

Anda dapat menggunakan Gemini API di Vertex AI atau konsol Google Cloud untuk mengonfigurasi filter konten.

Gemini API di Vertex AI

Gemini API di Vertex AI menyediakan dua metode "pemblokiran bahaya":

  • KEPARAHAN: Metode ini menggunakan skor probabilitas dan keparahan.
  • PROBABILITAS: Metode ini hanya menggunakan skor probabilitas.

Metode defaultnya adalah SEVERITY. Untuk model yang lebih lama dari gemini-1.5-flash dan gemini-1.5-pro, metode defaultnya adalah PROBABILITY. Untuk mempelajari lebih lanjut, lihat referensi API HarmBlockMethod.

Gemini API di Vertex AI menyediakan nilai minimum "pemblokiran bahaya" berikut:

  • BLOCK_LOW_AND_ABOVE: Memblokir saat skor probabilitas atau skor tingkat keparahan adalah LOW, MEDIUM, atau HIGH.
  • BLOCK_MEDIUM_AND_ABOVE: Memblokir jika skor probabilitas atau skor tingkat keparahan adalah MEDIUM atau HIGH.
  • BLOCK_ONLY_HIGH: Blokir jika skor probabilitas atau skor tingkat keparahan adalah HIGH.
  • HARM_BLOCK_THRESHOLD_UNSPECIFIED: Blokir menggunakan nilai minimum default.
  • OFF: Tidak ada pemblokiran respons otomatis dan tidak ada metadata yang ditampilkan. Untuk gemini-2.0-flash-001 dan model berikutnya, OFF adalah nilai default.
  • BLOCK_NONE: Setelan BLOCK_NONE menghapus pemblokiran respons otomatis. Sebagai gantinya, Anda dapat mengonfigurasi pedoman konten Anda sendiri dengan skor yang ditampilkan. Ini adalah kolom terbatas yang tidak tersedia untuk semua pengguna di versi model GA.

Misalnya, kode Python berikut menunjukkan cara menyetel nilai minimum pemblokiran bahaya ke BLOCK_ONLY_HIGH untuk kategori konten berbahaya:

generative_models.SafetySetting(
  category=generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
  threshold=generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH,
),

Tindakan ini akan memblokir sebagian besar konten yang diklasifikasikan sebagai konten berbahaya. Untuk mempelajari lebih lanjut, lihat referensi API HarmBlockThreshold.

Untuk contoh end-to-end di Python, Node.js, Java, Go, C#, dan REST, lihat Contoh konfigurasi filter konten.

Google Cloud console

Konsol Google Cloud memungkinkan Anda mengonfigurasi nilai minimum untuk setiap atribut konten. Filter konten hanya menggunakan skor probabilitas. Tidak ada opsi untuk menggunakan skor tingkat keparahan.

Konsol Google Cloud menyediakan nilai batas berikut:

  • Nonaktif (default): Tidak ada pemblokiran respons otomatis.
  • Blokir sedikit: Memblokir saat skor probabilitas adalah HIGH.
  • Blokir sebagian: Memblokir jika skor probabilitasnya MEDIUM atau HIGH.
  • Blokir sebagian besar: Memblokir jika skor probabilitasnya adalah LOW, MEDIUM, atau HIGH.

Misalnya, jika Anda menyetel setelan pemblokiran ke Blokir sedikit untuk kategori Konten Berbahaya, semua konten yang memiliki probabilitas tinggi sebagai konten berbahaya akan diblokir. Apa pun dengan probabilitas lebih rendah diizinkan. Nilai minimum default-nya adalah Block some.

Untuk menetapkan nilai minimum, lihat langkah-langkah berikut:

  1. Di bagian Vertex AI pada konsol Google Cloud , buka halaman Vertex AI Studio.

    Buka Vertex AI Studio

  2. Di bagian Buat perintah baru, klik salah satu tombol untuk membuka halaman desain perintah.

  3. Klik Setelan keamanan.

    Jendela dialog Setelan keamanan akan terbuka.

  4. Untuk setiap kategori bahaya, konfigurasikan nilai batas yang diinginkan.

  5. Klik Simpan.

Contoh output saat respons diblokir oleh filter konten yang dapat dikonfigurasi

Berikut adalah contoh output Gemini API di Vertex AI saat respons diblokir oleh filter konten yang dapat dikonfigurasi karena berisi konten berbahaya:

{
  "candidates": [{
    "finishReason": "SAFETY",
    "safetyRatings": [{
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.11027937,
      "severity": "HARM_SEVERITY_LOW",
      "severityScore": 0.28487435
    }, {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "probability": "HIGH",
      "blocked": true,
      "probabilityScore": 0.95422274,
      "severity": "HARM_SEVERITY_MEDIUM",
      "severityScore": 0.43398145
    }, {
      "category": "HARM_CATEGORY_HARASSMENT",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.11085559,
      "severity": "HARM_SEVERITY_NEGLIGIBLE",
      "severityScore": 0.19027223
    }, {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "probability": "NEGLIGIBLE",
      "probabilityScore": 0.22901751,
      "severity": "HARM_SEVERITY_NEGLIGIBLE",
      "severityScore": 0.09089675
    }]
  }],
  "usageMetadata": {
    "promptTokenCount": 38,
    "totalTokenCount": 38
  }
}

Contoh konfigurasi filter konten

Contoh berikut menunjukkan cara mengonfigurasi filter konten menggunakan Gemini API di Vertex AI:

Gen AI SDK for Python

Instal

pip install --upgrade google-genai

Untuk mempelajari lebih lanjut, lihat dokumentasi referensi SDK.

Tetapkan variabel lingkungan untuk menggunakan Gen AI SDK dengan Vertex AI:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    HarmCategory,
    HarmBlockThreshold,
    HttpOptions,
    SafetySetting,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

system_instruction = "Be as mean as possible."

prompt = """
    Write a list of 5 disrespectful things that I might say to the universe after stubbing my toe in the dark.
"""

safety_settings = [
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HARASSMENT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_HATE_SPEECH,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
    SafetySetting(
        category=HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
        threshold=HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    ),
]

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt,
    config=GenerateContentConfig(
        system_instruction=system_instruction,
        safety_settings=safety_settings,
    ),
)

# Response will be `None` if it is blocked.
print(response.text)
# Example response:
#     None

# Finish Reason will be `SAFETY` if it is blocked.
print(response.candidates[0].finish_reason)
# Example response:
#     FinishReason.SAFETY

# For details on all the fields in the response
for each in response.candidates[0].safety_ratings:
    print('\nCategory: ', str(each.category))
    print('Is Blocked:', True if each.blocked else False)
    print('Probability: ', each.probability)
    print('Probability Score: ', each.probability_score)
    print('Severity:', each.severity)
    print('Severity Score:', each.severity_score)
# Example response:
#
#     Category:  HarmCategory.HARM_CATEGORY_HATE_SPEECH
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  2.547714e-05
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None
#
#     Category:  HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  3.6103818e-06
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None
#
#     Category:  HarmCategory.HARM_CATEGORY_HARASSMENT
#     Is Blocked: True
#     Probability:  HarmProbability.MEDIUM
#     Probability Score:  0.71599233
#     Severity: HarmSeverity.HARM_SEVERITY_MEDIUM
#     Severity Score: 0.30782545
#
#     Category:  HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT
#     Is Blocked: False
#     Probability:  HarmProbability.NEGLIGIBLE
#     Probability Score:  1.5624657e-05
#     Severity: HarmSeverity.HARM_SEVERITY_NEGLIGIBLE
#     Severity Score: None

REST

Setelah menyiapkan lingkungan, Anda dapat menggunakan REST untuk menguji perintah teks. Contoh berikut mengirim permintaan ke endpoint model penayang.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • LOCATION: Region untuk memproses permintaan. Opsi yang tersedia meliputi:

    Klik untuk meluaskan daftar sebagian wilayah yang tersedia

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: Project ID Anda.
  • MODEL_ID: ID model multimodal yang ingin Anda gunakan, seperti gemini-2.0-flash.
  • ROLE: Peran dalam percakapan yang terkait dengan konten. Menentukan peran diperlukan bahkan dalam kasus penggunaan sekali putaran. Nilai yang dapat diterima mencakup hal berikut:
    • USER: Menentukan konten yang dikirim oleh Anda.
    • MODEL: Menentukan respons model.
  • TEXT: Petunjuk teks yang akan disertakan dalam perintah.
  • SAFETY_CATEGORY: Kategori keamanan untuk mengonfigurasi nilai minimum. Nilai yang dapat diterima mencakup hal berikut:

    Klik untuk meluaskan kategori keamanan

    • HARM_CATEGORY_SEXUALLY_EXPLICIT
    • HARM_CATEGORY_HATE_SPEECH
    • HARM_CATEGORY_HARASSMENT
    • HARM_CATEGORY_DANGEROUS_CONTENT
  • THRESHOLD: Nilai minimum untuk memblokir respons yang mungkin termasuk dalam kategori keamanan yang ditentukan berdasarkan probabilitas. Nilai yang dapat diterima mencakup hal berikut:

    Klik untuk meluaskan nilai minimum pemblokiran

    • BLOCK_NONE
    • BLOCK_ONLY_HIGH
    • BLOCK_MEDIUM_AND_ABOVE (default)
    • BLOCK_LOW_AND_ABOVE
    BLOCK_LOW_AND_ABOVE memblokir paling banyak, sedangkan BLOCK_ONLY_HIGH memblokir paling sedikit.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent

Isi JSON permintaan:

{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "TEXT" }
  },
  "safetySettings": {
    "category": "SAFETY_CATEGORY",
    "threshold": "THRESHOLD"
  },
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent"

PowerShell

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent" | Select-Object -Expand Content

Anda akan melihat respons JSON yang mirip seperti berikut:

Contoh perintah curl

LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash"
PROJECT_ID="test-project"

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:streamGenerateContent -d \
$'{
  "contents": {
    "role": "user",
    "parts": { "text": "Hello!" }
  },
  "safety_settings": [
    {
      "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
      "threshold": "OFF"
    },
    {
      "category": "HARM_CATEGORY_HATE_SPEECH",
      "threshold": "BLOCK_LOW_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_HARASSMENT",
      "threshold": "BLOCK_MEDIUM_AND_ABOVE"
    },
    {
      "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
      "threshold": "BLOCK_ONLY_HIGH"
    }
  ]
}'

Filter kutipan

Fitur kode generatif Vertex AI dimaksudkan untuk menghasilkan konten asli. Menurut desainnya, Gemini membatasi kemungkinan konten yang sudah ada direplikasi secara detail. Jika fitur Gemini membuat kutipan panjang dari halaman web, Gemini akan mengutip halaman tersebut.

Terkadang konten yang sama dapat ditemukan di beberapa halaman web. Gemini berusaha mengarahkan Anda ke sumber yang populer. Dalam hal kutipan repositori kode, kutipan juga dapat merujuk ke lisensi open source yang relevan. Mematuhi setiap persyaratan lisensi adalah tanggung jawab Anda sendiri.

Untuk mempelajari metadata filter kutipan, lihat Referensi Citation API.

Filter integritas sipil

Filter integritas publik mendeteksi dan memblokir perintah yang menyebutkan atau terkait dengan pemilu dan kandidat politik. Filter ini dinonaktifkan secara default. Untuk mengaktifkannya, tetapkan nilai batas pemblokiran untuk CIVIC_INTEGRITY ke salah satu nilai berikut. Nilai yang Anda tentukan tidak akan memengaruhi apa pun.

  • BLOCK_LOW_AND_ABOVE
  • BLOCK_MEDIUM_AND_ABOVE
  • BLOCK_ONLY_HIGH

Kode Python berikut menunjukkan cara mengaktifkan filter integritas sipil:

  generative_models.SafetySetting(
      category=generative_models.HarmCategory.CIVIC_INTEGRITY,
      threshold=generative_models.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  ),

Untuk mengetahui detail selengkapnya tentang filter integritas sipil, hubungi perwakilan Google Cloud Anda.

Praktik terbaik

Meskipun filter konten membantu mencegah konten tidak aman, terkadang filter tersebut dapat memblokir konten yang tidak berbahaya atau tidak mendeteksi konten berbahaya. Model canggih seperti Gemini 2.0 Flash dirancang untuk menghasilkan respons yang aman meskipun tanpa filter. Uji setelan filter yang berbeda untuk menemukan keseimbangan yang tepat antara keamanan dan mengizinkan konten yang sesuai.

Langkah berikutnya