Ustawienia bezpieczeństwa

Interfejs Gemini API udostępnia ustawienia zabezpieczeń, które możesz dostosować na etapie tworzenia prototypu, aby określić, czy aplikacja wymaga bardziej czy mniej restrykcyjnej konfiguracji zabezpieczeń. Możesz dostosować te ustawienia w 4 kategoriach, aby ograniczyć lub zezwolić na wyświetlanie określonych rodzajów treści.

Z tego przewodnika dowiesz się, jak interfejs Gemini API obsługuje ustawienia bezpieczeństwa i filtrowanie oraz jak można zmienić ustawienia zabezpieczeń w aplikacji.

Filtry bezpieczeństwa

Regulowane filtry bezpieczeństwa interfejsu Gemini API obejmują te kategorie:

Kategoria Opis
Nękanie Negatywne lub szkodliwe komentarze dotyczące tożsamości lub cech chronionych.
Szerzenie nienawiści Treści nieuprzejme, obraźliwe lub obraźliwe.
Treści o charakterze jednoznacznie seksualnym Treści zawierające odniesienia do aktów seksualnych lub innych lubieżnych treści.
Treści niebezpieczne Promowanie, wspieranie lub zachęcanie do szkodliwych działań.

Możesz ich użyć, aby dostosować to, co pasuje do Twojego przypadku użycia. Jeśli na przykład tworzysz dialogi z gry wideo, możesz zaakceptować więcej treści, które ze względu na charakter gry zostały oznaczone jako niebezpieczne.

Oprócz dostosowywanych filtrów bezpieczeństwa interfejs Gemini ma wbudowane zabezpieczenia przed podstawowymi zagrożeniami, np. treściami zagrażającymi bezpieczeństwu dzieci. Tego typu szkody są zawsze blokowane i nie można ich dostosować.

Poziom filtrowania pod kątem bezpieczeństwa treści

Interfejs Gemini API klasyfikuje poziom prawdopodobieństwa, że treść nie jest niebezpieczna, jako HIGH, MEDIUM, LOW lub NEGLIGIBLE.

Interfejs Gemini API blokuje treści na podstawie prawdopodobieństwa, że treść jest niebezpieczna, a nie jej wagi. Warto to wziąć pod uwagę, bo niektóre treści mogą mieć niskie prawdopodobieństwo, że będą niebezpieczne, chociaż szkoda może być nadal duża. Na przykład porównując zdania:

  1. Robot mnie uderzył.
  2. Robot mnie przegonił.

Pierwsze zdanie może zwiększyć prawdopodobieństwo zagrożenia, ale drugie zdania można uznać za bardziej dokaźne pod względem przemocy. Dlatego należy dokładnie je przetestować i rozważyć, jaki właściwy poziom blokowania będzie potrzebny do obsługi kluczowych przypadków użycia przy jednoczesnym zminimalizowaniu szkód dla użytkowników.

Filtrowanie zabezpieczeń na żądanie

Możesz dostosować ustawienia bezpieczeństwa w przypadku każdego żądania wysyłanego do interfejsu API. Gdy przesyłasz prośbę, treści są analizowane i przypisywane do oceny bezpieczeństwa. Ocena bezpieczeństwa obejmuje kategorię i prawdopodobieństwo zagrożenia. Jeśli na przykład treści zostały zablokowane ze względu na wysokie prawdopodobieństwo, że kategoria nękania jest bardzo prawdopodobna, zwrócona ocena bezpieczeństwa będzie miała wartość HARASSMENT, a prawdopodobieństwo szkody – HIGH.

Domyślnie ustawienia bezpieczeństwa blokują treści (w tym prompty) o średnim lub wyższym prawdopodobieństwie niebezpieczeństwa w żadnym filtrze. To podstawowe zabezpieczenie działa w większości przypadków, więc ustawienia należy zmieniać tylko wtedy, gdy są niezbędne w danej aplikacji.

W tabeli poniżej opisujemy ustawienia blokowania, które możesz dostosować w przypadku każdej kategorii. Jeśli na przykład w kategorii Szerzenie nienawiści ustawisz blokowanie na Blokuj kilka, wszystkie treści, które z dużym prawdopodobieństwem mogą stać się szerzeniem nienawiści, będą blokowane. Dozwolone są wszystkie elementy o niższym prawdopodobieństwie.

Próg (Google AI Studio) Próg (API) Opis
Nie blokuj niczego BLOCK_NONE Zawsze wyświetlaj niezależnie od prawdopodobieństwa wystąpienia niebezpiecznej treści
Blokuj niektóre BLOCK_ONLY_HIGH Blokuj, gdy istnieje wysokie prawdopodobieństwo wystąpienia niebezpiecznej treści
Blokuj część BLOCK_MEDIUM_AND_ABOVE Blokuj, gdy istnieje wysokie lub wysokie prawdopodobieństwo wystąpienia niebezpiecznych treści
Blokuj większość BLOCK_LOW_AND_ABOVE Blokuj, gdy treści są niebezpieczne, średnie lub wysokie
Nie dotyczy HARM_BLOCK_THRESHOLD_UNSPECIFIED Próg nie jest określony; blokuj za pomocą progu domyślnego

Jeśli jej nie skonfigurujesz, domyślnym ustawieniem blokowania będzie Blokuj część dla wszystkich kategorii.

Możesz skonfigurować te ustawienia dla każdego żądania wysyłanego do usługi generatywnej. Więcej informacji znajdziesz w dokumentacji interfejsu API HarmBlockThreshold.

Opinia o bezpieczeństwie

generateContent zwraca wartość GenerateContentResponse, która zawiera opinię na temat bezpieczeństwa.

promptFeedback zawiera informacje o prośbach. Jeśli skonfigurowana jest wartość promptFeedback.blockReason, treść promptu została zablokowana.

Opinia kandydata do odpowiedzi znajduje się w finishReason i safetyRatings. Jeśli treść odpowiedzi została zablokowana, a finishReason to SAFETY, możesz sprawdzić safetyRatings, aby uzyskać więcej informacji. Zablokowane treści nie są zwracane.

Dostosuj ustawienia bezpieczeństwa

Z tej sekcji dowiesz się, jak dostosować ustawienia zabezpieczeń zarówno w Google AI Studio, jak i w kodzie.

Google AI Studio

Możesz dostosować ustawienia zabezpieczeń w Google AI Studio, ale nie możesz ich wyłączyć.

W panelu Uruchom ustawienia kliknij Edytuj ustawienia zabezpieczeń, aby otworzyć okno Uruchom ustawienia bezpieczeństwa. W tym oknie za pomocą suwaków możesz dostosować poziom filtrowania treści według kategorii bezpieczeństwa:

Gdy wysyłasz prośbę (na przykład zadając pytanie modelowi), pojawia się komunikat Brak treści, jeśli treść żądania została zablokowana. Aby wyświetlić więcej szczegółów, najedź kursorem na tekst Brak zawartości i kliknij Bezpieczeństwo.

Pakiety SDK Gemini API

Ten fragment kodu pokazuje, jak skonfigurować ustawienia bezpieczeństwa w wywołaniu funkcji GenerateContent. Spowoduje to ustawienie kategorii nękania (HARM_CATEGORY_HARASSMENT) i szerzenia nienawiści (HARM_CATEGORY_HATE_SPEECH) na BLOCK_LOW_AND_ABOVE, co spowoduje zablokowanie treści, w przypadku których prawdopodobieństwo nękania lub szerzenia nienawiści jest niewielkie lub większe.

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,
    }
)

Przeczytaj

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

Internet

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

Rzutki (zrzuty)

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

Dalsze kroki

  • Więcej informacji o pełnym interfejsie API znajdziesz w dokumentacji API.
  • Zapoznaj się ze wskazówkami dotyczącymi bezpieczeństwa, aby dowiedzieć się więcej na temat bezpieczeństwa przy tworzeniu modeli LLM.
  • Dowiedz się więcej o ocenianiu prawdopodobieństwa w porównaniu z poziomem ważności od zespołu Jigsaw
  • Dowiedz się więcej o usługach, które przyczyniają się do powstawania rozwiązań zabezpieczających, takich jak Perspective API. * Możesz użyć tych ustawień bezpieczeństwa do utworzenia klasyfikatora toksyczności. Na początek zapoznaj się z przykładem klasyfikacji.