安全设置

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 在出现不安全内容的可能性为“低”“中”或“高”时屏蔽
不适用 HARM_BLOCK_THRESHOLD_UNSPECIFIED 阈值未指定,使用默认阈值屏蔽

如果此政策未设置,默认的屏蔽设置是针对所有类别屏蔽部分广告

您可以为每个向生成式服务发出的请求设定这些设置。 请参阅 HarmBlockThreshold API 参考资料了解详情。

安全反馈

generateContent 返回一个 GenerateContentResponse, 包括安全反馈。

提示反馈包含在 promptFeedback。如果 promptFeedback.blockReason 设置,则系统会屏蔽提示内容。

回复的候选人反馈包含在 Candidate.finishReasonCandidate.safetyRatings。如果响应 内容已被屏蔽,finishReasonSAFETY,您可以检查 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.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 });

Web

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 团队
  • 详细了解有助于安全解决方案(例如 观点 API。 * 你可以使用这些安全设置来制造恶意评论 分类器。有关详情,请参阅分类 示例更改为 开始使用。