Gemini API, uygulamanızın daha fazla veya daha az kısıtlayıcı güvenlik yapılandırması gerektirip gerektirmediğini belirlemek için prototipleme aşamasında ayarlayabileceğiniz güvenlik ayarları sağlar. Belirli içerik türlerini kısıtlamak veya 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çerikler |
Müstehcen | Cinsel eylemlere veya diğer müstehcen içeriklere referanslar içeriyor. |
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 filtrelerinin yanı sıra çocuk güvenliğini tehlikeye atan içerikler gibi temel zararlara karşı yerleşik korumalara sahiptir. Bu tür zararlar her zaman engellenir ve ayarlanamaz.
İç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 konuyu dikkate almanız önemlidir. Örneğin, şu cümleleri karşılaştırın:
- Robot beni yumrukladı.
- Robot beni parçaladı.
İ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 hangi engelleme düzeyinin gerekli olduğunu dikkatlice test etmeniz ve değerlendirmeniz önemlidir.
İstek başına güvenlik filtreleme
API'ye gönderdiğiniz her istek için güvenlik ayarlarını düzenleyebilirsiniz. İstekte bulunduğunuzda içerik analiz edilir ve bir güvenlik derecelendirmesi atanır. Güvenlik derecelendirmesi, zarar sınıflandırmasının kategorisini ve olasılığını içerir. Örneğin, içerik taciz kategorisinin olasılığının yüksek olması nedeniyle engellendiyse döndürülen güvenlik derecelendirmesinde kategori HARASSMENT
, zarar olasılığı ise HIGH
olarak ayarlanır.
Güvenlik ayarları varsayılan olarak, herhangi bir filtrede güvenli olmama olasılığı orta veya daha yüksek olan 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 kategori için ayarlayabileceğiniz engelleme ayarları açıklanmaktadır. Örneğin, Nefret söylemi kategorisi için engelleme ayarını Az sayıda içeriği engelle olarak belirlerseniz nefret söylemi içeriği olma olasılığı yüksek olan her şey engellenir. Ancak olasılığı daha düşük olan her şeye 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ı engelleme | BLOCK_ONLY_HIGH |
İçeriğin güvenli olmama olasılığı yüksekse engelleme |
Bazılarını engelleme | BLOCK_MEDIUM_AND_ABOVE |
İçeriğin güvenli olmama olasılığı orta veya yüksekse engelleme |
Ç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 belirtilmediyse varsayılan eşiği kullanarak engelleme |
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).
Sivil dürüstlük kategorisi için varsayılan engelleme eşiği, Google AI Studio kullanılarak istem gönderilirken Çoğunu engelle, Gemini API doğrudan kullanıldığında ise 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 engellendi demektir.
Yanıt aday geri bildirimleri Candidate.finishReason
ve Candidate.safetyRatings
öğelerine dahildir. Yanıt içeriği engellendiyse ve finishReason
SAFETY
ise daha fazla 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. Modalde, güvenlik kategorisine göre içerik filtreleme düzeyini ayarlamak için kaydırma çubuklarını kullanabilirsiniz:
Bir istek gönderdiğinizde (ör. modele soru sorarak), isteğin içeriği engellenirse
İç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ın nasıl yapılacağı gösterilmektedir. Bu işlem, taciz (HARM_CATEGORY_HARASSMENT
) ve nefret söylemi (HARM_CATEGORY_HATE_SPEECH
) kategorilerinin eşiklerini 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 filtreleme başlıklı makaleyi inceleyin.
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
- API'nin tamamı hakkında daha fazla bilgi edinmek için API referansına bakın.
- LLM'lerle geliştirme yaparken güvenlikle ilgili dikkat edilmesi gereken noktalara genel bir bakış için güvenlik kılavuzunu inceleyin.
- Jigsaw ekibinden olasılık ve önem düzeyini değerlendirme hakkında 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.