Gemini API 提供安全設定,您可以在原型設計階段調整這些設定,判斷應用程式是否需要更嚴謹或寬鬆的安全性設定。您可以調整四個篩選器類別的設定,限制或允許特定類型的內容。
本指南將說明 Gemini API 如何處理安全設定和篩選功能,以及如何變更應用程式的安全設定。
安全性篩選器
Gemini API 的可調整安全篩選機制涵蓋以下類別:
類別 | 說明 |
---|---|
騷擾 | 針對特定身分和/或受保護特質發表負面或有害言論。 |
仇恨言論 | 粗魯、不尊重或不雅的內容。 |
煽情露骨內容 | 提及性行為或其他猥褻情事的內容。 |
危險內容 | 宣傳、鼓吹或助長有害舉動。 |
公民誠信 | 選舉相關查詢。 |
您可以使用這些篩選器,調整適合您用途的內容。舉例來說,如果您正在建立電玩遊戲對話,可能會認為,基於遊戲的性質,允許較多遭評為「危險」的內容是合理的。
除了可調整的安全篩選機制,Gemini API 也內建防護措施,可防範核心危害,例如危害兒童安全的內容。這類內容一律會遭到封鎖,無法調整。
內容安全篩選層級
Gemini API 會將內容不安全的可能性等級分類為 HIGH
、MEDIUM
、LOW
或 NEGLIGIBLE
。
Gemini API 會根據內容的不安全機率封鎖內容,而非嚴重性。這點很重要,因為某些內容雖然可能造成嚴重傷害,但不一定會違反政策。例如比較以下句子:
- 機器人打了我。
- 機器人把我劃傷了。
第一句話可能會導致不安全的機率較高,但您可能會認為第二句話在暴力方面嚴重程度較高。因此,請務必仔細測試並考量適當的封鎖層級,以便支援主要用途,同時盡量降低對使用者的傷害。
依要求進行安全篩選
您可以調整向 API 提出的每項要求的安全設定。當您提出要求時,系統會分析內容並指派安全性評分。安全評分指的是 Gemini 判斷內容屬於特定危害類別的機率。舉例來說,如果系統判定內容屬於騷擾類別的機率高,則傳回的安全評分會將類別設為 HARASSMENT
,並將危害機率設為 HIGH
。
根據預設,安全設定會封鎖任何篩選條件中,屬於有害機率中等或較高的內容 (包括提示)。這項安全基準設計適用於絕大多數的用途,因此建議不要隨意調整,除非這對應用程式而言是必要之舉。
下表說明可針對各類別調整的封鎖設定。舉例來說,如果您將「仇恨言論」類別的封鎖設定設為「封鎖極少數內容」,系統就會封鎖所有極有可能屬於仇恨言論的內容。但允許使用其他可能性較低的值。
閾值 (Google AI Studio) | 閾值 (API) | 說明 |
---|---|---|
不封鎖任何內容 | BLOCK_NONE |
無論不安全內容的機率為何,一律顯示內容 |
封鎖極少數內容 | BLOCK_ONLY_HIGH |
封鎖有害機率高的內容 |
封鎖些許內容 | BLOCK_MEDIUM_AND_ABOVE |
封鎖有害機率中等或較高的內容 |
封鎖多數內容 | BLOCK_LOW_AND_ABOVE |
封鎖有害機率低、中等或高的內容 |
不適用 | HARM_BLOCK_THRESHOLD_UNSPECIFIED |
未指定門檻,封鎖使用預設門檻 |
如果未設定門檻,系統會將預設封鎖門檻設為「封鎖多數內容」 (僅適用於 gemini-1.5-pro-002
和 gemini-1.5-flash-002
) 或「封鎖些許內容」 (適用於所有其他型別),但「公民誠信」類別除外。
使用 Google AI Studio 傳送提示時,公民誠信類別的預設封鎖門檻為「Block most」,直接使用 Gemini API 時則為「Block none」。
您可以為向產生服務提出的每項要求設定這些設定。詳情請參閱 HarmBlockThreshold
API 參考資料。
安全性意見回饋
generateContent
會傳回 GenerateContentResponse
,其中包含安全性意見回饋。
promptFeedback
會提供提示回饋。如果已設定 promptFeedback.blockReason
,則提示內容已遭到封鎖。
回應候選項回饋會包含在 Candidate.finishReason
和 Candidate.safetyRatings
中。如果回應內容遭到封鎖,且 finishReason
為 SAFETY
,您可以檢查 safetyRatings
以瞭解詳情。但不會傳回遭封鎖的內容。
調整安全性設定
本節將說明如何在 Google AI Studio 和程式碼中調整安全性設定。
Google AI Studio
您可以在 Google AI Studio 中調整安全設定,但無法關閉。
在「執行設定」面板中,按一下「編輯安全設定」,開啟「執行安全設定」互動視窗。在模式視窗中,您可以使用滑桿調整各安全性類別的內容篩選等級:
當您傳送要求 (例如向模型提問) 時,如果要求內容遭到封鎖,系統會顯示
「No Content」訊息。如要查看更多詳細資料,請將游標懸停在「No Content」文字上,然後按一下 「Safety」。Gemini API SDK
以下程式碼片段說明如何在 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.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 });
網路
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
後續步驟
- 如要進一步瞭解完整的 API,請參閱 API 參考資料。
- 請參閱安全指南,瞭解使用 LLM 開發時應考量的安全性事項。
- 進一步瞭解如何評估可能性與嚴重性,請參閱 Jigsaw 團隊的文章
- 進一步瞭解有助於提供安全性解決方案的產品,例如 Perspective API。* 您可以使用這些安全性設定建立毒性分類器。請參閱分類範例,瞭解如何開始使用。