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 bezpieczeństwa. Możesz dostosować te ustawienia w 5 kategoriach filtrów, aby ograniczyć lub zezwolić na określone typy treści.

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

Filtry bezpieczeństwa

Dostosowywane 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, obraźliwe 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 promują, wspierają lub ułatwiają podejmowanie szkodliwych działań;
Uczciwość obywatelska zapytania związane z wyborami;

Za pomocą tych filtrów możesz dostosować wyniki do swoich potrzeb. Jeśli na przykład tworzysz dialogi do gry wideo, możesz zezwolić na więcej treści ocenionych jako niebezpieczne, ponieważ taki jest charakter gry.

Oprócz dostosowywanych filtrów bezpieczeństwa interfejs Gemini API ma wbudowane zabezpieczenia przed podstawowymi szkodami, takimi jak treści zagrażające bezpieczeństwu dzieci. Te rodzaje szkodliwych treści są zawsze blokowane i nie można ich dostosowywać.

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

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

Interfejs Gemini API blokuje treści na podstawie prawdopodobieństwa, że są one 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 pociął.

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 rozważyć, jaki poziom blokowania jest potrzebny do obsługi kluczowych przypadków użycia przy jednoczesnym zminimalizowaniu szkód dla użytkowników.

Filtrowanie treści pod kątem bezpieczeństwa w przypadku każdego żądania

Ustawienia bezpieczeństwa możesz dostosowywać w przypadku każdego żądania wysyłanego do interfejsu API. Gdy wyślesz prośbę, treść zostanie przeanalizowana i otrzyma ocenę bezpieczeństwa. Ocena bezpieczeństwa obejmuje kategorię i prawdopodobieństwo klasyfikacji szkody. Jeśli na przykład treść została zablokowana, ponieważ system stwierdził wysokie prawdopodobieństwo wystąpienia treści nękających, zwrócona ocena bezpieczeństwa będzie miała kategorię równą HARASSMENT i prawdopodobieństwo szkody ustawione na 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 znajdziesz opis ustawień blokowania, które możesz dostosować w przypadku każdej kategorii. Jeśli na przykład w przypadku kategorii Mowa nienawiści ustawisz blokowanie na Blokuj niewiele, zablokowane zostaną wszystkie treści, które z dużym prawdopodobieństwem zawierają mowę nienawiści. Dozwolone są jednak wszystkie treści o mniejszym prawdopodobieństwie.

Próg (Google AI Studio) Próg (interfejs API) Opis
Nie blokuj niczego BLOCK_NONE Zawsze wyświetlaj treści 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, blokuj przy użyciu domyślnego progu

Jeśli próg nie jest ustawiony, domyślny próg blokowania to Nie blokuj (w przypadku gemini-1.5-pro-002gemini-1.5-flash-002 oraz wszystkich nowszych stabilnych modeli GA) lub Blokuj niektóre (w przypadku wszystkich innych modeli) we wszystkich kategoriach z wyjątkiem kategorii Integralność obywatelska.

Domyślny próg blokowania w kategorii Integralność obywatelska to Nie blokuj (w przypadku gemini-2.0-flash-001 aliasy to gemini-2.0-flash, gemini-2.0-pro-exp-02-05gemini-2.0-flash-lite) zarówno w Google AI Studio, jak i w interfejsie Gemini API, a w przypadku wszystkich innych modeli w Google AI Studio jest to Blokuj większość.

Możesz ustawić te opcje dla każdego żądania wysyłanego do usługi generatywnej. Szczegółowe informacje znajdziesz w dokumentacji interfejsu HarmBlockThreshold API.

Opinie dotyczące bezpieczeństwa

generateContent zwraca GenerateContentResponse, która zawiera informacje o bezpieczeństwie.

Informacje o prompcie są uwzględnione w promptFeedback. Jeśli parametr promptFeedback.blockReason jest ustawiony, oznacza to, że treść promptu została zablokowana.

Opinie o proponowanych odpowiedziach są uwzględniane w Candidate.finishReasonCandidate.safetyRatings. Jeśli treść odpowiedzi została zablokowana, a wartość parametru finishReason wynosiła SAFETY, możesz sprawdzić safetyRatings, aby uzyskać więcej informacji. Zablokowane treści nie są zwracane.

Dostosowywanie ustawień bezpieczeństwa

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

Google AI Studio

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

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

Gdy wyślesz żądanie (np. zadając modelowi pytanie), pojawi się komunikat Brak treści, jeśli treść żądania jest zablokowana. Aby zobaczyć więcej szczegółów, najedź wskaźnikiem na tekst Brak treści i kliknij  Bezpieczeństwo.

Pakiety SDK Gemini API

Poniższy fragment kodu pokazuje, jak ustawić ustawienia bezpieczeństwa w wywołaniu GenerateContent. Ustawia to progi dla kategorii nękania (HARM_CATEGORY_HARASSMENT) i treści szerzących nienawiść (HARM_CATEGORY_HATE_SPEECH). Jeśli na przykład ustawisz te kategorie na BLOCK_LOW_AND_ABOVE, zablokujesz wszystkie treści, które z niskim lub wyższym prawdopodobieństwem są nękaniem lub szerzą nienawiść. Aby dowiedzieć się więcej o ustawieniach progów, przeczytaj artykuł Filtrowanie treści pod kątem bezpieczeństwa w przypadku każdego żądania.

Python

from google import genai
from google.genai import types

import PIL.Image

img = PIL.Image.open("cookies.jpg")

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=['Do these look store-bought or homemade?', img],
    config=types.GenerateContentConfig(
      safety_settings=[
        types.SafetySetting(
            category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
            threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
        ),
      ]
    )
)

print(response.text)

Przeczytaj

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    config := &genai.GenerateContentConfig{
        SafetySettings: []*genai.SafetySetting{
            {
                Category:  "HARM_CATEGORY_HATE_SPEECH",
                Threshold: "BLOCK_LOW_AND_ABOVE",
            },
        },
    }

    response, err := client.Models.GenerateContent(
        ctx,
        "gemini-2.0-flash",
        genai.Text("Some potentially unsafe prompt."),
        config,
    )
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(response.Text())
}

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const safetySettings = [
  {
    category: "HARM_CATEGORY_HARASSMENT",
    threshold: "BLOCK_LOW_AND_ABOVE",
  },
  {
    category: "HARM_CATEGORY_HATE_SPEECH",
    threshold: "BLOCK_LOW_AND_ABOVE",
  },
];

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-2.0-flash",
    contents: "Some potentially unsafe prompt.",
    config: {
      safetySettings: safetySettings,
    },
  });
  console.log(response.text);
}

await main();

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-2.0-flash:generateContent" \        -H "x-goog-api-key: $GEMINI_API_KEY" \

    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Dalsze kroki

  • Więcej informacji o pełnej wersji interfejsu API znajdziesz w dokumentacji API.
  • Zapoznaj się z wskazówkami dotyczącymi bezpieczeństwa, aby poznać ogólne kwestie związane z bezpieczeństwem podczas tworzenia aplikacji z użyciem dużych modeli językowych.
  • Więcej informacji o ocenianiu prawdopodobieństwa i poziomu ważności znajdziesz na blogu zespołu Jigsaw.
  • Dowiedz się więcej o usługach, które przyczyniają się do tworzenia rozwiązań w zakresie bezpieczeństwa, takich jak Perspective API. * Za pomocą tych ustawień bezpieczeństwa możesz utworzyć klasyfikator toksyczności. Aby rozpocząć, zapoznaj się z przykładem klasyfikacji.