安全性設定

Gemini API には、プロトタイピングの段階で調整できる安全性設定が用意されています。これにより、アプリケーションに限定的な安全性構成が必要かどうかを判断できます。これらの設定を 4 つのフィルタ カテゴリで調整して、特定の種類のコンテンツを制限または許可できます。

このガイドでは、Gemini API が安全性設定とフィルタリングを処理する方法と、アプリの安全性設定を変更する方法について説明します。

安全フィルタ

Gemini API の調整可能な安全フィルタは、以下のカテゴリに対応しています。

カテゴリ 説明
ハラスメント ID や保護されている属性をターゲットとする否定的なコメントや有害なコメント。
ヘイトスピーチ 粗暴、無礼、または冒とく的なコンテンツ。
露骨な性表現 性行為やわいせつな内容に関する情報が含まれるコンテンツ。
危険 有害な行為を助長、促進、奨励するもの。

これらのフィルタを使用して、ユースケースに適したものを調整できます。たとえば、ビデオゲームの台詞を作成する場合、ゲームの性質上、危険に分類されるコンテンツを追加で許容できると考えることができます。

Gemini API には、調整可能な安全フィルタに加えて、子どもの安全を危険にさらすコンテンツなど、中核的な危害に対する保護機能も組み込まれています。この種の被害は常にブロックされ、調整することはできません。

コンテンツ セーフティ フィルタリング レベル

Gemini API は、コンテンツが安全でない確率を HIGHMEDIUMLOWNEGLIGIBLE のいずれかに分類します。

Gemini API は、重大度ではなく、コンテンツが安全でない確率に基づいてコンテンツをブロックします。コンテンツによっては、危害の重大度が高いにもかかわらず、安全でない確率が低くなるものもあるため、この点を考慮することが重要です。たとえば、次の文を比較します。

  1. ロボットが私をパンチした。
  2. ロボットが私を切り付けた。

最初の文は安全でない確率が高くなる可能性がありますが、暴力的な観点では 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] テキストの上にポインタを置き、 [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 など、安全性ソリューションに寄与しているプロダクトの詳細をご覧ください。* これらの安全性設定を使用して、有害性分類器を作成できます。 開始するには、分類の例をご覧ください。