安全設定

Gemini API 提供安全設定,您可以在原型設計階段調整這些設定,判斷應用程式是否需要更嚴謹或寬鬆的安全設定。您可以調整四個篩選器類別的設定,限制或允許特定類型的內容。

本指南將說明 Gemini API 如何處理安全設定和篩選功能,以及如何變更應用程式的安全設定。

安全性篩選器

Gemini API 的可調整安全篩選機制涵蓋以下類別:

類別 說明
騷擾 針對特定身分和/或受保護特質發表負面或有害言論。
仇恨言論 粗魯、不尊重或不雅的內容。
煽情露骨內容 提及性行為或其他猥褻情事的內容。
危險內容 宣傳、鼓吹或助長有害舉動。
公民誠信 選舉相關查詢。

您可以使用這些篩選器,調整適合您用途的內容。舉例來說,如果您正在建立電玩遊戲對話,可能會認為,基於遊戲的性質,允許較多遭評為「危險」的內容是合理的。

除了可調整的安全篩選機制,Gemini API 也內建防護措施,可防範核心危害,例如危害兒童安全的內容。這類內容一律會遭到封鎖,無法調整。

內容安全篩選層級

Gemini API 會將內容不安全的可能性等級分類為 HIGHMEDIUMLOWNEGLIGIBLE

Gemini API 會根據內容的不安全機率封鎖內容,而非嚴重程度。這點很重要,因為某些內容雖然可能造成嚴重傷害,但不一定會違反政策。舉例來說,比較以下兩個句子:

  1. 機器人打了我。
  2. 機器人把我割傷了。

第一句話可能會導致不安全的機率較高,但您可能會認為第二句話的暴力程度較嚴重。因此,請務必仔細測試並考量適當的封鎖層級,以便支援主要用途,同時盡量減少對使用者的傷害。

依要求進行安全性篩選

您可以調整向 API 提出的每項要求的安全設定。當您提出要求時,系統會分析內容並指派安全性評分。安全評分指的是 Gemini 判斷內容屬於特定危害類別的機率。舉例來說,如果系統判定內容屬於騷擾類別的機率高,則傳回的安全評分會將類別設為 HARASSMENT,並將危害機率設為 HIGH

根據預設,安全設定會封鎖任何篩選條件中,屬於有害機率中等或較高的內容 (包括提示)。這項安全基準設計適用於絕大多數的用途,因此建議不要隨意調整,除非這對應用程式而言是必要之舉。

下表說明可針對各類別調整的封鎖設定。舉例來說,如果您將「仇恨言論」類別的封鎖設定設為「封鎖極少數內容」,系統就會封鎖所有極有可能屬於仇恨言論的內容。但允許使用其他可能性較低的值。

閾值 (Google AI Studio) 閾值 (API) 說明
不封鎖任何內容 BLOCK_NONE 無論不安全內容的機率為何,一律顯示內容
封鎖極少數內容 BLOCK_ONLY_HIGH 封鎖有害機率高的內容
封鎖些許內容 BLOCK_MEDIUM_AND_ABOVE 封鎖有害機率中等或較高的內容
封鎖多數內容 BLOCK_LOW_AND_ABOVE 封鎖有害機率低、中等或高的內容
不適用 HARM_BLOCK_THRESHOLD_UNSPECIFIED 未指定門檻,封鎖使用預設門檻

如果未設定門檻,系統會將預設封鎖門檻設為「封鎖多數內容」(僅限 gemini-1.5-pro-002gemini-1.5-flash-002) 或「封鎖部分內容」(其他所有型號),適用於「公民誠信」類別以外的所有類別。

使用 Google AI Studio 傳送提示時,公民誠信類別的預設封鎖門檻為「Block most」,直接使用 Gemini API 時則為「Block none」

您可以為向產生服務提出的每項要求設定這些選項。詳情請參閱 HarmBlockThreshold API 參考資料。

安全性意見回饋

generateContent 會傳回 GenerateContentResponse,其中包含安全性意見回饋。

promptFeedback 會提供提示回饋。如果已設定 promptFeedback.blockReason,則提示內容已遭到封鎖。

回應候選項回饋會包含在 Candidate.finishReasonCandidate.safetyRatings 中。如果回應內容遭到封鎖,且 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,
    }
)

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 });

網路

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);

REST

    echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

後續步驟

  • 如要進一步瞭解完整的 API,請參閱 API 參考資料
  • 請參閱安全指南,瞭解使用 LLM 開發時應考量的安全性事項。
  • 進一步瞭解如何評估可能性與嚴重性,請參閱 Jigsaw 團隊的文章
  • 進一步瞭解有助於提供安全性解決方案的產品,例如 Perspective API。* 您可以使用這些安全性設定建立毒性分類器。請參閱分類範例,瞭解如何開始使用。