安全設定

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,則提示內容會遭到封鎖。

回應候選意見回饋包含在 finishReasonsafetyRatings 中。如果回應內容遭到封鎖,且 finishReasonSAFETY,您可以檢查 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。* 您可以運用這些安全設定建立惡意分類。 如要開始使用,請參閱分類範例