ב-Gemini API יש הגדרות בטיחות שאפשר לשנות בשלב היצירה של אב טיפוס כדי לקבוע אם האפליקציה שלכם זקוקה להגדרות בטיחות מגבילות יותר או פחות. אפשר לשנות את ההגדרות האלה בארבע קטגוריות של מסננים כדי להגביל או לאפשר סוגים מסוימים של תוכן.
במדריך הזה נסביר איך ממשק ה-API של Gemini מטפל בהגדרות הבטיחות ובסינון, ואיך אפשר לשנות את הגדרות הבטיחות של האפליקציה.
מסנני בטיחות
מסנני הבטיחות המתכווננים של Gemini API מכסים את הקטגוריות הבאות:
קטגוריה | תיאור |
---|---|
הטרדה | תגובות שליליות או מזיקות שמטרגטות זהות ו/או מאפיינים מוגנים. |
דברי שטנה | תוכן גס, לא מכובד או בוטה. |
תוכן מיני בוטה | מכיל הפניות למעשים מיניים או תוכן מגונה אחר. |
תוכן מסוכן | תוכן שמקדם גרימת נזק, מעודד גרימת נזק או עוזר לבצע פעולות מזיקות. |
יושרה אזרחית | שאילתות שקשורות לבחירות. |
אתם יכולים להשתמש במסננים האלה כדי לשנות את הנתונים בהתאם לתרחיש לדוגמה שלכם. לדוגמה, אם אתם יוצרים דיאלוג במשחק וידאו, יכול להיות שתמצאו מקובל לאפשר יותר תוכן שמסווג כמסכן בגלל אופי המשחק.
בנוסף למסנני הבטיחות שניתן לשנות, ב-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 });
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
השלבים הבאים
- במאמר העזרה בנושא API מפורט מידע נוסף על ה-API המלא.
- ההנחיות בנושא בטיחות מספקות סקירה כללית של שיקולים בטיחותיים שצריך לקחת בחשבון כשמפתחים באמצעות מודלים סטטיסטיים ללמידת מכונה.
- הצוות של Jigsaw מסביר איך להעריך את הסבירות לעומת החומרה
- מידע נוסף על המוצרים שתורמים לפתרונות בטיחות, כמו Perspective API. * אפשר להשתמש בהגדרות הבטיחות האלה כדי ליצור סיווג של תוכן רעיל. כדאי לעיין בדוגמה לסיווג כדי להתחיל.