Ustawienia bezpieczeństwa

Interfejs Gemini API udostępnia ustawienia bezpieczeństwa, które możesz dostosować na etapie prototypowania, aby określić, czy aplikacja wymaga bardziej czy mniej restrykcyjnej konfiguracji zabezpieczeń. Możesz dostosować te ustawienia w 4 kategoriach filtrów, aby ograniczyć lub zezwolić na określone typy treści.

W tym przewodniku omawiamy sposób obsługi ustawień bezpieczeństwa i filtrowania przez Gemini API oraz sposób zmiany ustawień bezpieczeństwa aplikacji.

Filtry bezpieczeństwa

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

Kategoria Opis
Nękanie Negatywne lub szkodliwe komentarze dotyczące tożsamości innej osoby lub cech chronionych.
Szerzenie nienawiści Treści nieuprzejme, niekulturalne lub wulgarne.
Treści o charakterze jednoznacznie seksualnym Treści zawierające odniesienia do aktów seksualnych lub innych lubieżnych treści.
Treści niebezpieczne Promuje, ułatwia lub zachęca do podejmowania szkodliwych działań.
Integralność instytucji publicznych zapytania związane z wyborami;

Za pomocą tych filtrów możesz dostosować wyniki do swoich potrzeb. Jeśli na przykład tworzysz dialog do gry wideo, możesz uznać, że ze względu na charakter gry można zezwolić na więcej treści ocenionej jako niebezpieczna.

Oprócz regulowanych filtrów bezpieczeństwa Gemini API ma wbudowane środki ochrony przed podstawowymi zagrożeniami, takimi jak treści zagrażające bezpieczeństwu dzieci. Te rodzaje szkód są zawsze blokowane i nie można ich dostosować.

Poziom filtrowania bezpieczeństwa treści

Interfejs Gemini API przypisuje poziom prawdopodobieństwa, że treści są niebezpieczne, jako HIGH, MEDIUM, LOW lub NEGLIGIBLE.

Gemini API blokuje treści na podstawie prawdopodobieństwa, że są niebezpieczne, a nie na podstawie ich szkodliwości. Jest to ważne, ponieważ niektóre treści mogą mieć niskie prawdopodobieństwo bycia niebezpiecznymi, mimo że stopień szkodliwości może być nadal wysoki. Na przykład porównując zdania:

  1. Robot mnie uderzył.
  2. Robot mnie poranił.

Pierwsze zdanie może mieć większe prawdopodobieństwo bycia niebezpiecznym, ale drugie zdanie może być bardziej poważne pod względem przemocy. Dlatego ważne jest, aby dokładnie przetestować i zrozumieć, jaki poziom blokowania jest potrzebny do obsługi kluczowych przypadków użycia przy jednoczesnym minimalizowaniu szkód dla użytkowników.

Filtrowanie bezpieczeństwa na podstawie żądania

Możesz dostosować ustawienia bezpieczeństwa dla każdego żądania wysyłanego do interfejsu API. Gdy prześlesz prośbę, treści zostaną przeanalizowane i przypisana im zostanie ocena bezpieczeństwa. Ocena bezpieczeństwa obejmuje kategorię i prawdopodobieństwo klasyfikacji szkody. Jeśli na przykład treści zostały zablokowane, ponieważ system stwierdził wysokie prawdopodobieństwo wystąpienia treści nękających, zwrócona ocena bezpieczeństwa miałaby kategorię HARASSMENT, a prawdopodobieństwo szkody – HIGH.

Domyślnie ustawienia bezpieczeństwa blokują treści, w tym prompty, które ze średnim lub wyższym prawdopodobieństwem są niebezpieczne. Dotyczy to wszystkich filtrów. To bezpieczeństwo bazowe ma sprawdzać się w większości przypadków, ustawienia bezpieczeństwa należy więc dostosowywać tylko wtedy, gdy jest to na dłuższą metę 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 dla kategorii Mowa nienawiści ustawisz ustawienie blokowania na Blokuj niewiele, wszystkie treści, które z dużą pewnością są treściami nienawiści, zostaną zablokowane. Dozwolone są jednak wszystkie wartości o mniejszym 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 treści niebezpiecznych
Blokuj niektóre BLOCK_ONLY_HIGH Blokuj, gdy prawdopodobieństwo wystąpienia treści niebezpiecznych jest wysokie
Blokuj część BLOCK_MEDIUM_AND_ABOVE Blokuj, gdy prawdopodobieństwo wystąpienia treści niebezpiecznych jest średnie lub wysokie
Blokuj większość BLOCK_LOW_AND_ABOVE Blokuj, gdy prawdopodobieństwo wystąpienia treści niebezpiecznych jest niskie, średnie lub wysokie.
Nie dotyczy HARM_BLOCK_THRESHOLD_UNSPECIFIED Próg nie został określony, blokowanie za pomocą domyślnego progu

Jeśli próg nie jest ustawiony, domyślny próg blokowania to Zablokuj większość (tylko w przypadku modeli gemini-1.5-pro-002gemini-1.5-flash-002) lub Zablokuj część (we wszystkich pozostałych modelach) we wszystkich kategoriach z wyjątkiem kategorii Nienaruszalność osoby i mienia.

Domyślny próg blokowania w przypadku kategorii Całościwość obywatelska to Blokuj większość podczas wysyłania promptów za pomocą Google AI Studio i Blokuj żadne podczas bezpośredniego korzystania z interfejsu Gemini API.

Możesz je ustawiać w przypadku każdego żądania wysyłanego do usługi generatywnej. Więcej informacji znajdziesz w dokumentacji interfejsu API HarmBlockThreshold.

Opinie dotyczące bezpieczeństwa

generateContent zwraca GenerateContentResponse, który zawiera opinie dotyczące bezpieczeństwa.

Prompt feedback jest dołączony do promptFeedback. Jeśli ustawiona jest wartość promptFeedback.blockReason, oznacza to, że treść promptu została zablokowana.

Komentarze kandydatów do odpowiedzi są uwzględniane w Candidate.finishReasonCandidate.safetyRatings. Jeśli treść odpowiedzi została zablokowana, a finishReason była SAFETY, możesz sprawdzić safetyRatings, aby uzyskać więcej informacji. Zablokowane treści nie są przywracane.

Dostosowywanie ustawień bezpieczeństwa

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

Google AI Studio

W Google AI Studio możesz dostosować ustawienia bezpieczeństwa, ale nie możesz ich wyłączyć.

W panelu Ustawienia wykonania kliknij Edytuj ustawienia zabezpieczeń, aby otworzyć okno Ustawienia zabezpieczeń wykonania. W oknie modalnym możesz użyć suwaków, aby dostosować poziom filtrowania treści w poszczególnych kategoriach bezpieczeństwa:

Gdy wysyłasz żądanie (np. zadajesz pytanie modelowi), jeśli treść żądania jest zablokowana, wyświetli się komunikat Brak treści. Aby wyświetlić więcej szczegółów, najedź kursorem na tekst Brak treści i kliknij  Bezpieczeństwo.

Pakiety SDK Gemini API

Ten fragment kodu pokazuje, jak ustawić ustawienia bezpieczeństwa w wyzwaniu GenerateContent. Spowoduje to ustawienie progów dla kategorii nękania (HARM_CATEGORY_HARASSMENT) i treści szerzących nienawiść (HARM_CATEGORY_HATE_SPEECH). Na przykład ustawienie tych kategorii na BLOCK_LOW_AND_ABOVEblokuje wszystkie treści, które mają niskie lub wyższe prawdopodobieństwo wystąpienia treści nękających lub szerzących nienawiść. Aby dowiedzieć się więcej o ustawieniach progów, przeczytaj artykuł Filtrowanie zabezpieczeń na żądanie.

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

Sieć

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

Dalsze kroki