安全设置

Gemini API 提供的安全设置可在原型设计阶段进行调整,以确定您的应用需要更多还是更少的安全配置。您可以在四个过滤器类别中调整这些设置,以限制或允许某些类型的内容。

本指南介绍了 Gemini API 如何处理安全设置和过滤,以及如何更改应用的安全设置。

安全过滤器

Gemini API 的可调整安全过滤器涵盖以下类别:

类别 说明
骚扰内容 针对身份和/或受保护属性的负面或有害评论。
仇恨言论 粗俗、不雅或亵渎性的内容。
露骨色情 提及性行为或其他淫秽内容。
危险内容 宣扬、助长或鼓励有害行为。

您可以使用这些过滤条件来调整适合您的用例的内容。例如,如果您要构建视频游戏对话,那么考虑到游戏的性质,您可能会认为允许添加更多分级为危险的内容。

除了可调整的安全过滤器之外,Gemini API 还内置了防护功能,可防范核心危害,例如危害儿童安全的内容。此类伤害行为始终会被阻止且无法调整。

内容安全过滤级别

Gemini API 将内容不安全概率水平分为 HIGHMEDIUMLOWNEGLIGIBLE

Gemini API 会根据内容不安全的概率(而不是严重程度)来屏蔽内容。请务必考虑这一点,因为即使危害的严重程度可能仍然很高,某些内容不安全的可能性仍然较低。例如,比较句子:

  1. 机器人打了我一拳。
  2. 机器人把我砍伤了。

第一句可能会导致不安全的风险较高,但您可能会认为第二句话的暴力内容具有更高的严重程度。因此,请务必仔细测试并考虑需要什么级别的屏蔽来支持您的关键用例,同时最大限度地减少对最终用户的损害。

每个请求的安全过滤数量

您可以针对每个向 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,则提示的内容已被屏蔽。

候选响应反馈包含在 finishReasonsafetyRatings 中。如果响应内容被阻止且 finishReasonSAFETY,您可以检查 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。* 您可以使用这些安全设置来创建恶意评论分类器。 如需开始使用,请参阅分类示例