Güvenlik ayarları

Gemini API, uygulamanızın daha fazla mı yoksa daha az mı kısıtlayıcı güvenlik yapılandırması gerektirdiğini belirlemek için prototipleme aşamasında ayarlayabileceğiniz güvenlik ayarları sağlar. Belirli içerik türlerini kısıtlamak veya bunlara izin vermek için bu ayarları dört filtre kategorisinde düzenleyebilirsiniz.

Bu kılavuzda, Gemini API'nin güvenlik ayarlarını ve filtrelemeyi nasıl ele aldığı ve uygulamanızın güvenlik ayarlarını nasıl değiştirebileceğiniz açıklanmaktadır.

Güvenlik filtreleri

Gemini API'nin ayarlanabilir güvenlik filtreleri aşağıdaki kategorileri kapsar:

Kategori Açıklama
Taciz Kimliği ve/veya korunan özellikleri hedef alan olumsuz veya zararlı yorumlar
Nefret söylemi Kaba, saygısız veya küfürlü içerik.
Müstehcen Cinsel eylemlere veya diğer müstehcen içeriklere referanslarda bulunuyor.
Tehlikeli Zararlı eylemleri teşvik eden, kolaylaştıran veya destekleyen içerikler.
Sivil toplum kuruluşları Seçimlerle ilgili sorgular.

Kullanım alanınıza uygun olanları ayarlamak için bu filtreleri kullanabilirsiniz. Örneğin, video oyunu diyaloğu oluşturuyorsanız oyunun doğası gereği tehlikeli olarak derecelendirilen daha fazla içeriğe izin vermeyi kabul edebilirsiniz.

Gemini API, ayarlanabilir güvenlik filtrelerine ek olarak, çocuk güvenliğini tehlikeye atan içerikler gibi temel zararlara karşı yerleşik korumalara sahiptir. Bu tür zararlar her zaman engellenir ve düzenlenemez.

İçerik güvenliği filtreleme düzeyi

Gemini API, içeriğin güvenli olma olasılık düzeyini HIGH, MEDIUM, LOW veya NEGLIGIBLE olarak sınıflandırır.

Gemini API, içeriği önemine göre değil, güvenli olma olasılığına göre engeller. Bazı içeriklerin güvenli olmama olasılığı düşük olsa bile zararın önem düzeyi yüksek olabilir. Bu nedenle bu durumu dikkate almanız önemlidir. Örneğin, şu cümleleri karşılaştırın:

  1. Robot beni yumrukladı.
  2. Robot beni yaraladı.

İlk cümle, güvenli olma olasılığının daha yüksek olmasına neden olabilir ancak ikinci cümlenin şiddet açısından daha ciddi olduğunu düşünebilirsiniz. Bu nedenle, son kullanıcılara verilen zararı en aza indirirken temel kullanım alanlarınızı desteklemek için gereken uygun engelleme seviyesini dikkatlice test etmeniz ve bunu göz önünde bulundurmanız önemlidir.

İstek başına güvenlik filtrelemesi

API'ye gönderdiğiniz her istek için güvenlik ayarlarını düzenleyebilirsiniz. Talepte bulunduğunuzda içerik analiz edilir ve bir güvenlik derecelendirmesi verilir. Güvenlik derecelendirmesi, zarar sınıflandırmasının kategorisini ve olasılığını içerir. Örneğin, içerik taciz kategorisinin yüksek olasılıklı olması nedeniyle engellendiyse döndürülen güvenlik derecelendirmesi HARASSMENT, zarar olasılığı HIGH olarak ayarlanır.

Varsayılan olarak, güvenlik ayarları tüm filtrelerde güvenli olmama olasılığı orta veya yüksek olasılıklı içerikleri (istemler dahil) engeller. Bu temel güvenlik, çoğu kullanım alanında çalışacak şekilde tasarlanmıştır. Bu nedenle, güvenlik ayarlarınızı yalnızca uygulamanız için sürekli olarak gerekli olduğunda ayarlamanız gerekir.

Aşağıdaki tabloda, her bir kategori için düzenleyebileceğiniz engelleme ayarları açıklanmaktadır. Örneğin, Nefret söylemi kategorisi için engelleme ayarını Az sayıda engelle olarak belirlerseniz nefret söylemi içeriği olma olasılığı yüksek tüm içerikler engellenir. Ancak daha düşük olasılığa sahip olan şeylere izin verilir.

Eşik (Google AI Studio) Eşik (API) Açıklama
Hiçbirini engelleme BLOCK_NONE Güvenli olmayan içerik olasılığından bağımsız olarak her zaman göster
Birkaçını engelle BLOCK_ONLY_HIGH İçeriğin güvenli olmama olasılığı yüksekse engelleme
Bazılarını engelle BLOCK_MEDIUM_AND_ABOVE Güvenli olmayan içerik orta veya yüksek olasılıklı olduğunda engelle
Çoğu engelleme BLOCK_LOW_AND_ABOVE İçeriğin güvenli olmama olasılığı düşük, orta veya yüksekse engelleme
Yok HARM_BLOCK_THRESHOLD_UNSPECIFIED Eşik belirtilmedi, varsayılan eşik kullanılarak engelle

Eşik ayarlanmamışsa varsayılan engelleme eşiği, Sivil dürüstlük kategorisi hariç tüm kategoriler için Çoğunu engelle (yalnızca gemini-1.5-pro-002 ve gemini-1.5-flash-002 için) veya Bazılarını engelle'dir (diğer tüm modellerde).

Şehir bütünlüğü kategorisi için varsayılan engelleme eşiği, Google AI Studio kullanarak istem gönderirken Çoğunu engelle ve doğrudan Gemini API'yi kullanırken Hiçbirini engelle şeklindedir.

Bu ayarları, üretken hizmete gönderdiğiniz her istek için ayarlayabilirsiniz. Ayrıntılar için HarmBlockThreshold API referansına bakın.

Güvenlikle ilgili geri bildirim

generateContent, güvenlik geri bildirimini içeren bir GenerateContentResponse döndürür.

İstem geri bildirimi promptFeedback'e dahildir. promptFeedback.blockReason ayarlanmışsa istemin içeriği engellenir.

Yanıt aday geri bildirimi Candidate.finishReason ve Candidate.safetyRatings öğelerine dahildir. Yanıt içeriği engellendiyse ve finishReason SAFETY ise daha ayrıntılı bilgi için safetyRatings öğesini inceleyebilirsiniz. Engellenen içerik döndürülmez.

Güvenlik ayarlarını yapma

Bu bölümde, hem Google AI Studio'da hem de kodunuzda güvenlik ayarlarının nasıl yapılacağı açıklanmaktadır.

Google AI Studio

Güvenlik ayarlarını Google AI Studio'da düzenleyebilirsiniz ancak kapatamazsınız.

Çalıştırma ayarları panelinde Güvenlik ayarlarını düzenle'yi tıklayarak Çalıştırma güvenlik ayarlarını modalini açın. Kalıcı iletişim kutusunda, kaydırma çubuklarını kullanarak her güvenlik kategorisine göre içerik filtreleme seviyesini ayarlayabilirsiniz:

Bir istek gönderdiğinizde (örneğin, modele soru sorarak) isteğin içeriği engellenmişse İçerik Yok mesajı görünür. Daha fazla ayrıntı görmek için işaretçiyi İçerik yok metninin üzerine getirin ve Güvenlik'i tıklayın.

Gemini API SDK'ları

Aşağıdaki kod snippet'inde, GenerateContent çağrınızda güvenlik ayarlarını nasıl yapacağınız gösterilmektedir. Bu, taciz (HARM_CATEGORY_HARASSMENT) ve nefret söylemi (HARM_CATEGORY_HATE_SPEECH) kategorileri için eşikler belirler. Örneğin, bu kategorileri BLOCK_LOW_AND_ABOVE olarak ayarlamak, taciz veya nefret söylemi olma olasılığı düşük veya yüksek olan tüm içerikleri engeller. Eşik ayarlarını anlamak için İstek başına güvenlik filtrelemesi bölümüne bakın.

Python

from google.generativeai.types import HarmCategory, HarmBlockThreshold

model = genai.GenerativeModel(model_name='gemini-1.5-flash')
response = model.generate_content(
    ['Do these look store-bought or homemade?', img],
    safety_settings={
        HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
    }
)

Go

model := client.GenerativeModel("gemini-1.5-flash")

model.SafetySettings = []*genai.SafetySetting{
  {
    Category:  genai.HarmCategoryHarassment,
    Threshold: genai.HarmBlockLowAndAbove,
  },
  {
    Category:  genai.HarmCategoryHateSpeech,
    Threshold: genai.HarmBlockLowAndAbove,
  },
}

Node.js

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings: safetySettings });

Web

import { HarmBlockThreshold, HarmCategory } from "@google/generative-ai";

// ...

const safetySettings = [
  {
    category: HarmCategory.HARM_CATEGORY_HARASSMENT,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
  {
    category: HarmCategory.HARM_CATEGORY_HATE_SPEECH,
    threshold: HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
  },
];

const model = genAi.getGenerativeModel({ model: "gemini-1.5-flash", safetySettings });

Dart (Flutter)

final safetySettings = [
  SafetySetting(HarmCategory.harassment, HarmBlockThreshold.low),
  SafetySetting(HarmCategory.hateSpeech, HarmBlockThreshold.low),
];
final model = GenerativeModel(
  model: 'gemini-1.5-flash',
  apiKey: apiKey,
  safetySettings: safetySettings,
);

Kotlin

val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.LOW_AND_ABOVE)

val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.LOW_AND_ABOVE)

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    apiKey = BuildConfig.apiKey,
    safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)

Java

SafetySetting harassmentSafety = new SafetySetting(HarmCategory.HARASSMENT,
    BlockThreshold.LOW_AND_ABOVE);

SafetySetting hateSpeechSafety = new SafetySetting(HarmCategory.HATE_SPEECH,
    BlockThreshold.LOW_AND_ABOVE);

GenerativeModel gm = new GenerativeModel(
    "gemini-1.5-flash",
    BuildConfig.apiKey,
    null, // generation config is optional
    Arrays.asList(harassmentSafety, hateSpeechSafety)
);

GenerativeModelFutures model = GenerativeModelFutures.from(gm);

REST

    echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Sonraki adımlar

  • Tam API hakkında daha fazla bilgi edinmek için API referansına bakın.
  • LLM'lerle geliştirme yaparken güvenlik konusunda dikkat edilmesi gereken noktaları öğrenmek için güvenlik kılavuzunu inceleyin.
  • Olasılık ve önem derecesini değerlendirme hakkında Jigsaw Ekibi'nden daha fazla bilgi edinin
  • Perspective API gibi güvenlik çözümlerine katkıda bulunan ürünler hakkında daha fazla bilgi edinin. * Toksisite sınıflandırıcı oluşturmak için bu güvenlik ayarlarını kullanabilirsiniz. Başlamak için sınıflandırma örneğine bakın.