Gemini API 提供安全設定,您可以在原型設計階段調整,以判斷應用程式是否需要更多或更少的安全設定。您可以依據四種篩選器類別調整這些設定,藉此限製或允許特定類型的內容。
本指南說明 Gemini API 如何處理安全設定與篩選,以及如何變更應用程式的安全設定。
安全性篩選器
Gemini API 的可調整安全性篩選器涵蓋以下類別:
類別 | 說明 |
---|---|
騷擾 | 針對特定身分和/或受保護特質發表負面或有害言論。 |
仇恨言論 | 粗魯無禮、不尊重或不雅用語的內容。 |
煽情露骨內容 | 提及性行為或其他猥褻情事的內容。 |
危險事物 | 宣傳、鼓吹或助長有害舉動。 |
您可以使用這些篩選器調整適合的設定。舉例來說,如果您正在建構電玩遊戲的對話方塊,您可能會認為可以允許更多因遊戲性質而歸類為「危險」的內容。
除了可調整的安全性篩選器以外,Gemini API 也提供內建的防護措施,可避免兒童安全的內容 (例如危害兒童安全的內容)。系統會一律封鎖這類傷害,而且無法調整。
內容安全篩選等級
Gemini API 會將內容不安全的機率分類為 HIGH
、MEDIUM
、LOW
或 NEGLIGIBLE
。
Gemini API 會根據內容不安全 (而非嚴重程度) 封鎖內容。請務必考量這點,因為即使傷害的嚴重性仍然很高,部分內容可能還是不太可能出現不安全。舉例來說,比較語句:
- 機器人把我打倒我。
- 機器人把我關起來了。
第一句可能會引發危險性較高,但您可以考慮第二句在暴力方面的嚴重性較高。因此,請務必仔細測試,並考量需要哪種類型的封鎖功能,以支援您的主要用途,同時盡可能降低對使用者的危害。
每個要求的安全性篩選
您可以針對每次向 API 發出的要求調整安全設定。當您提出要求時,系統會分析內容並指派安全評分。安全評分包含損害分類的類別和機率。舉例來說,如果內容因騷擾類別的可能性很高而遭到封鎖,系統傳回的安全性評分類別就會等於 HARASSMENT
,危害機率則設為 HIGH
。
根據預設,安全設定會在所有篩選器中封鎖中等或較高可能不安全內容 (包括提示)。這個基準安全性適用於大多數用途,因此建議您只在應用程式持續需要的情況下,才調整安全性設定。
下表說明您可以調整各類別的封鎖設定。舉例來說,如果您將「仇恨言論」類別的封鎖設定設為「封鎖少數」,我們就會封鎖很有可能為仇恨言論內容的所有內容。但系統允許機率較低的任何項目。
門檻 (Google AI Studio) | 閾值 (API) | 說明 |
---|---|---|
不封鎖任何內容 | BLOCK_NONE |
一律顯示不安全的內容 |
封鎖極少數內容 | BLOCK_ONLY_HIGH |
出現高機率不安全的內容時封鎖 |
封鎖些許內容 | BLOCK_MEDIUM_AND_ABOVE |
針對中度或高度不安全的內容封鎖 |
封鎖多數內容 | BLOCK_LOW_AND_ABOVE |
針對低、中或高度不安全的內容封鎖 |
不適用 | HARM_BLOCK_THRESHOLD_UNSPECIFIED |
未指定門檻,使用預設門檻進行封鎖 |
如果未設定,則所有類別的預設封鎖設定都是「封鎖部分類別」。
您可以針對傳送至生成式服務的每個要求,進行這些設定。
詳情請參閱 HarmBlockThreshold
API 參考資料。
安全性意見回饋
generateContent
會傳回 GenerateContentResponse
,其中包含安全意見回饋。
promptFeedback
已包含提示意見回饋。如果設定了 promptFeedback.blockReason
,則提示內容會遭到封鎖。
回應候選意見回饋包含在 finishReason
和 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,
}
)
查看
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 });
網站
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 });
飛鏢 (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);
後續步驟
- 如要進一步瞭解完整 API,請參閱 API 參考資料。
- 請詳閱安全指南,瞭解使用 LLM 進行開發時的安全注意事項。
- 歡迎向 Jigsaw 團隊進一步瞭解如何評估機率與嚴重程度
- 進一步瞭解為安全解決方案提供的產品,例如 Perspective API。* 您可以運用這些安全設定建立惡意分類。 如要開始使用,請參閱分類範例。