הגדרות בטיחות

ב-Gemini API יש הגדרות בטיחות שאפשר לשנות בשלב יצירת האב טיפוס כדי לקבוע אם האפליקציה מחייבת הגדרות בטיחות מגבילות יותר או פחות. ניתן לך להתאים את ההגדרות האלה בארבע קטגוריות סינון כדי להגביל או להתיר סוגים מסוימים של תוכן.

מדריך זה מסביר איך Gemini API מטפל בהגדרות בטיחות ובסינון, ואיך אפשר לשנות את הגדרות הבטיחות של האפליקציה.

מסנני בטיחות

מסנני הבטיחות שניתנים להתאמה של Gemini API כוללים את הקטגוריות הבאות:

קטגוריה תיאור
הטרדה תגובות שליליות או מזיקות שמטרגטות למאפיינים של זהות ו/או מאפיינים מוגנים.
דברי שטנה תוכן בשפה גסה, לא מכבדת או גסה.
תוכן מיני בוטה מכיל אזכורים של מעשים מיניים או תוכן בוטה אחר.
תוכן מסוכן עידוד, גרימת נזק או עידוד של גרימת נזק.

תוכלו להשתמש במסננים האלה כדי להתאים את ההגדרות לתרחיש לדוגמה שלכם. לדוגמה, אם אתם בונים דיאלוג במשחק וידאו, יכול להיות שלפי שיקול דעתכם מותר לאשר עוד תוכן שמסווג כמסוכן בגלל אופי המשחק.

בנוסף למסנני הבטיחות שניתנים להתאמה, ב-Gemini API יש הגנות מובנות מפני פגיעות ליבה, כמו תוכן שמסכן את בטיחות הילדים. סוגי נזק כאלה חסומים תמיד ולא ניתן לשנות אותם.

רמת סינון של בטיחות תוכן

רמת ההסתברות של תוכן שאינו בטוח, ב-Gemini API, היא HIGH, MEDIUM, LOW או NEGLIGIBLE.

Gemini API חוסם תוכן על סמך ההסתברות שהתוכן לא בטוח ולא לפי החומרה. חשוב להביא את זה בחשבון כי יש סבירות נמוכה לכך שלתכנים מסוימים יש סיכוי נמוך להיות לא בטוח, למרות שחומרת הנזק עדיין עשויה להיות גבוהה. לדוגמה, השוואת המשפטים:

  1. הרובוט נתן לי אגרוף.
  2. הרובוט חתך אותי.

המשפט הראשון עלול להוביל להסתברות גבוהה יותר להיות לא בטוח, אבל יכול להיות שהמשפט השני ייחשב כחומר יותר גבוה יותר במונחים של אלימות. לכן חשוב לבדוק בקפידה מהי רמת החסימה המתאימה כדי לתמוך בתרחישים העיקריים שלכם, תוך צמצום הנזק למשתמשי הקצה.

סינון בטיחות לפי בקשה

אתם יכולים לשנות את הגדרות הבטיחות של כל בקשה ל-API. כששולחים בקשה, התוכן מנותח ומוגדר לו דירוג בטיחות. דירוג הבטיחות כולל את הקטגוריה ואת ההסתברות לסיווג הנזק. לדוגמה, אם התוכן נחסם עקב סבירות גבוהה להטרדה, סיווג הבטיחות שיוחזר יהיה שווה ל-HARASSMENT וההסתברות לנזק תהיה HIGH.

כברירת מחדל, הגדרות הבטיחות חוסמות תוכן (כולל הנחיות) עם סבירות בינונית או גבוהה יותר להיות לא בטוח בכל המסננים. רמת הבטיחות הבסיסית הזו תוכננה לפעול ברוב תרחישי השימוש, לכן כדאי לשנות את הגדרות הבטיחות רק אם היא נחוצה באופן עקבי לאפליקציה שלכם.

בטבלה הבאה מפורטות הגדרות החסימה שאפשר לשנות בכל קטגוריה. לדוגמה, במקרה שהגדרת החסימה היא חסימת מספר בקטגוריה דברי שטנה, כל תוכן שיש לו סבירות גבוהה להיות תוכן של דברי שטנה ייחסם. אבל כל דבר שיש לו סבירות נמוכה יותר מותר.

סף (Google AI Studio) סף (API) תיאור
לא לחסום BLOCK_NONE הצגה תמיד, ללא קשר להסתברות לתוכן לא בטוח
חסימת מספר BLOCK_ONLY_HIGH חסימה כשיש סבירות גבוהה לתוכן לא בטוח
חסימת חלק BLOCK_MEDIUM_AND_ABOVE חסימה כשקיימת סבירות בינונית או גבוהה לתוכן לא בטוח
חסימת רוב התוכן BLOCK_LOW_AND_ABOVE חסימה כשיש סבירות נמוכה, בינונית או גבוהה לתוכן לא בטוח
לא רלוונטי HARM_BLOCK_THRESHOLD_UNSPECIFIED לא צוין סף, חסימה באמצעות סף ברירת המחדל

אם היא לא מוגדרת, הגדרת ברירת המחדל לחסימה היא חסימה של חלק לכל הקטגוריות.

ניתן לקבוע את ההגדרות האלה עבור כל בקשה שנשלחת לשירות הגנרטיבי. לפרטים נוספים, ראו HarmBlockThreshold הפניית API.

משוב בנושא בטיחות

generateContent מחזיר GenerateContentResponse שכולל משוב על בטיחות.

משוב על הנחיות כלול ב-promptFeedback. אם מגדירים את הערך promptFeedback.blockReason, תוכן ההנחיה נחסם.

המשוב על התשובות האפשריות כלול בfinishReason וב-safetyRatings. אם תוכן התגובה נחסם והשדה finishReason היה SAFETY, תוכלו לבדוק ב-safetyRatings פרטים נוספים. התוכן שנחסם לא יוחזר.

שינוי הגדרות הבטיחות

בקטע הזה מוסבר איך לשנות את הגדרות הבטיחות ב-Google AI Studio ובקוד.

‏Google AI Studio

אפשר לשנות את הגדרות הבטיחות ב-Google AI Studio, אבל אי אפשר להשבית אותן.

לוחצים על Edit Safety settings (עריכת הגדרות הבטיחות) בחלונית Run settings כדי לפתוח את החלון הקופץ Run Safety. בחלון העזר, ניתן לך להשתמש בפסי ההזזה כדי להתאים את רמת סינון התוכן לכל קטגוריית בטיחות:

כששולחים בקשה (למשל, כששואלים את המודל שאלה), מופיעה ההודעה No Content (אין תוכן) אם תוכן הבקשה חסום. כדי לראות פרטים נוספים, מחזיקים את הסמן מעל הטקסט No Content (אין תוכן) ולוחצים על Safety (בטיחות).

ערכות 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.HarmBlockOnlyLowAndAbove,
  },
  {
    Category:  genai.HarmCategoryHateSpeech,
    Threshold: genai.HarmBlockOnlyLowAndAbove,
  },
}

Node.js

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

// ...

const safetySetting = [
  {
    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 });

אתרים

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

// ...

const safetySetting = [
  {
    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 });

קליעה למטרה (פלוטר)

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);

השלבים הבאים

  • מידע נוסף על ה-API המלא זמין בחומר העזר בנושא API.
  • קראו את ההנחיות בנושא בטיחות, כדי לקבל סקירה כללית של שיקולי הבטיחות במהלך הפיתוח עם מודלים מסוג LLM.
  • מידע נוסף על הערכת ההסתברות לעומת הערכת החומרה מצוות Jigsaw
  • מידע נוסף על המוצרים שתורמים לפתרונות בטיחות, כמו Perspective API. * אפשר להשתמש בהגדרות הבטיחות האלה כדי ליצור מסווג רעילות. כדי להתחיל, עיינו בדוגמה לסיווג.