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 | promują, ułatwiają lub zachęcają 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: 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:
- Robot mnie uderzył.
- 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 z powodu wysokiego prawdopodobieństwa wystąpienia kategorii nękania, 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, wszystko, co ma wysokie prawdopodobieństwo bycia treścią mowy nienawiści, zostanie 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 nie ustawisz progu, domyślny próg blokowania będzie wynosił Blokuj żadne (w przypadku modeli gemini-1.5-pro-002
i gemini-1.5-flash-002
oraz wszystkich nowszych stabilnych modeli GA) lub Blokuj niektóre (we wszystkich innych modelach) we wszystkich kategoriach z wyjątkiem kategorii Bezpieczeństwo obywatelskie.
Domyślny próg blokowania w przypadku kategorii Całości obywatelskiej to Blokuj żadne (dla gemini-2.0-flash-001
z aliasem gemini-2.0-flash
,
gemini-2.0-pro-exp-02-05
i gemini-2.0-flash-lite-02-05
) zarówno w przypadku Google AI Studio, jak i interfejsu Gemini API, oraz Blokuj większość w przypadku wszystkich innych modeli tylko w Google AI Studio.
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 opinię dotyczącą bezpieczeństwa.
Prompt feedback jest dołączony do promptFeedback
. Jeśli ustawiona jest wartość promptFeedback.blockReason
, oznacza to, że treść prompta została zablokowana.
Komentarze kandydatów do odpowiedzi są uwzględniane w Candidate.finishReason
i Candidate.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ą zwracane.
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 modelowi pytanie), jeśli treść żądania jest zablokowana, pojawi 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_ABOVE
blokuje 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ń według prośby.
Python
from google import genai
from google.genai import types
import PIL.Image
img = PIL.Image.open("cookies.jpg")
client = genai.Client(api_key="GEMINI_API_KEY")
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
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
- Aby dowiedzieć się więcej o pełnym interfejsie API, zapoznaj się z dokumentacją API.
- Zapoznaj się ze wskazówkami dotyczącymi bezpieczeństwa, aby uzyskać ogólne informacje na temat zagrożeń związanych z bezpieczeństwem podczas tworzenia modeli LLM.
- Dowiedz się więcej o ocenie prawdopodobieństwa i wagi od zespołu Jigsaw
- Dowiedz się więcej o usługach, które przyczyniają się do bezpieczeństwa, takich jak interfejs API Perspective. * Za pomocą tych ustawień bezpieczeństwa możesz utworzyć klasyfikator toksyczności. Aby rozpocząć, zapoznaj się z przykładem klasyfikacji.