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 |
在存在不安全内容的可能性较低、中等或较高时屏蔽 |
N/A | 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 文本上,然后点击 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.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 });
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);
后续步骤
- 如需详细了解完整的 API,请参阅 API 参考文档。
- 查看安全指南,大致了解使用 LLM 进行开发时的安全注意事项。
- 访问 Jigsaw 团队,详细了解如何评估概率与严重程度
- 详细了解有助于提供安全解决方案的产品,例如 Perspective API。* 您可以使用这些安全设置来创建恶意评论分类器。 如需开始使用,请参阅分类示例。