安全設定

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 中調整安全性設定,但無法開啟設定 關閉。

按一下「執行設定」面板中的「編輯安全設定」,開啟「執行」 安全設定互動視窗在互動視窗中,你可以使用滑桿來調整 每個安全性類別的內容篩選等級:

傳送要求時 (例如向模型提問), 如果要求的內容遭到封鎖,則不會顯示「沒有內容」訊息。瞭解詳情 找到詳細資料後,請將遊標懸停在 「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 });

網路

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

飛鏢 (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);

後續步驟