ב-Gemini API יש הגדרות בטיחות שאפשר לשנות בשלב היצירה של אב טיפוס כדי לקבוע אם האפליקציה שלכם זקוקה להגדרות בטיחות מגבילות יותר או פחות. אפשר להתאים את ההגדרות האלה בארבע קטגוריות סינון כדי להגביל או להתיר סוגים מסוימים של תוכן.
במדריך הזה נסביר איך ממשק ה-API של Gemini מטפל בהגדרות הבטיחות ובסינון, ואיך אפשר לשנות את הגדרות הבטיחות באפליקציה.
מסנני בטיחות
מסנני הבטיחות המתכווננים של Gemini API מכסים את הקטגוריות הבאות:
קטגוריה | תיאור |
---|---|
הטרדה | תגובות שליליות או מזיקות שמטרגטות מאפיינים של זהות ו/או מאפיינים מוגנים. |
דברי שטנה | תוכן בוטה, לא מכבד או גס. |
תוכן מיני בוטה | מכיל התייחסויות למעשים מיניים או תוכן מגונה אחר. |
תוכן מסוכן | תוכן שמקדם גרימת נזק, מעודד גרימת נזק או עוזר לבצע פעולות מזיקות. |
יושרה ציבורית | שאילתות שקשורות לבחירות. |
אתם יכולים להשתמש במסננים האלה כדי לשנות את האפשרויות שמתאימות לתרחיש לדוגמה שלכם. לדוגמה, אם אתם מפתחים שיח בנושא משחק וידאו, יכול להיות שתרצו לאפשר הצגה של תוכן נוסף שמסווג כDangerous בגלל אופי המשחק.
בנוסף למסנני הבטיחות שניתנים להתאמה, Gemini API כולל הגנות מובנות מפני פציעות ליבה, כמו תוכן שמסכן את בטיחות הילדים. סוגי הנזק האלה תמיד חסומים ולא ניתן לשנות אותם.
רמת הסינון של תוכן בטוח
Gemini API מסווג את רמת הסבירות של תוכן לא בטוח בתור HIGH
, MEDIUM
, LOW
או NEGLIGIBLE
.
Gemini API חוסם תוכן על סמך הסבירות שהתוכן לא בטוח ולא על סמך חומרת החומרה. חשוב להביא את זה בחשבון כי יש תכנים עם סבירות נמוכה שהם לא בטוחים, למרות שחומרת הפגיעה עדיין עשויה להיות גבוהה. לדוגמה, השוואה בין המשפטים:
- הרובוט מכה אותי.
- הרובוט חתך אותי.
יכול להיות שהמשפט הראשון יביא לסבירות גבוהה יותר של סיכון, אבל יכול להיות שתבחרו להתייחס למשפט השני כאל תוכן ברמת חומרה גבוהה יותר מבחינת אלימות. לכן, חשוב לבדוק בקפידה ולשקול מהי רמת החסימה המתאימה כדי לתמוך בתרחישי השימוש העיקריים שלכם, ולצמצם את הנזק למשתמשי הקצה.
סינון בטיחות לפי בקשה
אתם יכולים לשנות את הגדרות הבטיחות לכל בקשה שאתם שולחים ל-API. כשאתם שולחים בקשה, התוכן נבדק ומקצה לו דירוג בטיחות. דירוג הבטיחות כולל את הקטגוריה ואת הסבירות לסיווג הנזק. לדוגמה, אם התוכן נחסם כי הסבירות לקטגוריה של הטרדה גבוהה, קטגוריית דירוג הבטיחות שתוחזר תהיה HARASSMENT
והסבירות לנזק תהיה HIGH
.
כברירת מחדל, הגדרות הבטיחות חוסמות תוכן (כולל הנחיות) שיש לו סיכוי גבוה או בינוני להיות לא בטוח בכל מסנן. רמת הבטיחות הבסיסית נועדה לפעול ברוב התרחישים לדוגמה, לכן עדיף לשנות את הגדרות הבטיחות רק אם האפליקציה שלכם נדרשת באופן עקבי.
בטבלה הבאה מפורטות הגדרות החסימה שאפשר לשנות לכל קטגוריה. לדוגמה, אם תגדירו את הגדרת החסימה לחסימה של כמה בקטגוריה דברי שטנה, כל תוכן שיש לו סבירות גבוהה להיות תוכן דברי שטנה ייחסם. אבל כל דבר עם סבירות נמוכה יותר מותר.
דרישות סף (Google AI Studio) | סף (API) | תיאור |
---|---|---|
ללא חסימה | BLOCK_NONE |
להציג תמיד, ללא קשר להסתברות של תוכן לא בטוח |
חסימת כמה | BLOCK_ONLY_HIGH |
חסימה כשיש סבירות גבוהה לתוכן לא בטוח |
חסימת חלק מהם | BLOCK_MEDIUM_AND_ABOVE |
חסימה כשיש סיכוי בינוני או גבוה לתוכן לא בטוח |
חסימה של רוב המשתמשים | BLOCK_LOW_AND_ABOVE |
חסימה כשיש סבירות נמוכה, בינונית או גבוהה לתוכן לא בטוח |
לא רלוונטי | HARM_BLOCK_THRESHOLD_UNSPECIFIED |
לא צוין סף, חסימה על בסיס סף ברירת המחדל |
אם לא מגדירים ערך סף, ערך ברירת המחדל של סף החסימה הוא חסימה של רוב (למודלים gemini-1.5-pro-002
ו-gemini-1.5-flash-002
בלבד) או חסימה של חלק (בכל שאר המודלים) בכל הקטגוריות למעט הקטגוריה תקינות פוליטית.
ערך ברירת המחדל של סף החסימה בקטגוריה תקינות פוליטית הוא חסימה של רוב הבקשות כששולחים הנחיות באמצעות Google AI Studio, וללא חסימה כשמשתמשים ישירות ב-Gemini API.
אפשר לקבוע את ההגדרות האלה לכל בקשה ששולחים לשירות הגנרטיבי.
לפרטים נוספים עיינו במפרט של השיטה ב-HarmBlockThreshold
.
משוב על בטיחות
הפונקציה generateContent
מחזירה את הערך GenerateContentResponse
שכולל משוב בנושא בטיחות.
המשוב על ההנחיה כלול ב-promptFeedback
. אם הערך של promptFeedback.blockReason
מוגדר, המשמעות היא שתוכן ההנחיה נחסם.
המשוב על מועמדים לתשובות נכלל ב-Candidate.finishReason
וב-Candidate.safetyRatings
. אם תוכן התשובה נחסם והשדה finishReason
היה SAFETY
, תוכלו לבדוק את safetyRatings
לקבלת פרטים נוספים. התוכן שנחסם לא מוחזר.
התאמת הגדרות הבטיחות
בקטע הזה מוסבר איך מתאימים את הגדרות הבטיחות גם ב-Google AI Studio וגם בקוד שלכם.
Google AI Studio
אפשר לשנות את הגדרות הבטיחות ב-Google AI Studio, אבל אי אפשר להשבית אותן.
לוחצים על Edit safety settings בחלונית Run settings כדי לפתוח את החלונית הדו-שיחית Run safety settings. בחלון הדו-שיח, אפשר להשתמש בפס ההזזה כדי לשנות את רמת סינון התוכן לפי קטגוריית בטיחות:
כששולחים בקשה (למשל כששואלים את המודל שאלה), מופיעה הודעת
No Content אם תוכן הבקשה חסום. כדי לראות פרטים נוספים, מחזיקים את הסמן מעל הטקסט אין תוכן ולוחצים על בטיחות.ערכות SDK של Gemini API
בקטע הקוד הבא מוסבר איך לקבוע הגדרות בטיחות בשיחה GenerateContent
. כך מגדירים את ערכי הסף לקטגוריות 'הטרדה' (HARM_CATEGORY_HARASSMENT
) ו'דברי שטנה' (HARM_CATEGORY_HATE_SPEECH
). לדוגמה, אם תגדירו את הקטגוריות האלה ל-BLOCK_LOW_AND_ABOVE
,
כל תוכן עם סבירות נמוכה או גבוהה יותר להיות הטרדה או דברי שטנה. במאמר סינון בטיחות לפי בקשה מוסבר איך מגדירים את ערכי הסף.
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 });
פיתוח אתרים
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 });
הטלת חיצים (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
השלבים הבאים
- מידע נוסף על ה-API המלא זמין בחומר העזר בנושא API.
- כדאי לעיין בהנחיות הבטיחות כדי לקבל סקירה כללית של שיקולים בטיחותיים כשמפתחים באמצעות מודלים סטטיסטיים ללמידת מכונה.
- למידע נוסף על הערכת ההסתברות לעומת החומרה
- מידע נוסף על המוצרים שתורמים לפתרונות בטיחות, כמו Perspective API. * אפשר להשתמש בהגדרות הבטיחות האלה כדי ליצור מסווג רעילות. כדי להתחיל, ראו דוגמה לסיווג.