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
设置,则系统会屏蔽提示内容。
回复的候选人反馈包含在
Candidate.finishReason
和
Candidate.safetyRatings
。如果响应
内容已被屏蔽,finishReason
为 SAFETY
,您可以检查
safetyRatings
了解详情。不会返回之前被屏蔽的内容。
调整安全设置
本部分介绍了如何在 Google AI Studio 和 和代码中。
Google AI Studio
您可以在 Google AI Studio 中调整安全设置,但无法开启这些设置 关闭。
点击 Run settings 面板中的 Edit safety settings 以打开 Run 安全设置模态窗口中。在模态窗口中,您可以使用滑块来调整 每个安全类别的内容过滤级别:
当您发送请求(例如向模型提问)时,
如果请求的内容被屏蔽,则系统会显示无内容消息。查看更多 请将鼠标指针悬停在 No Content 文本,然后点击 安全。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 });
Web
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);