やりたいこと
Geminiでは暴力的なことや性的なことを返さないようにフィルタがかけられています。
フィルタを変更して暴力的なことや性的なことにも寛容になってもらいます。
Geminiの使用方法は以下にまとめています。
前座
そもそもGeminiはいい子なのでフィルタにかかるようなことはなかなか返してきません。
上の回答はフィルタがかかっているからいい子の回答をしているのではなく、フィルタの設定に関係なく上記のように返答します。(もちろん全く同じ回答ではありませんが)
フィルタがかかるような回答をしてもらうには役割を演じてもらうといいようです。
実際にフィルタがかかると上のように何も回答が返ってきません。
コンソールを見るとブロックされたことがわかります。
実装
HarmCategory, HarmBlockThresholdをインポートします
import { GoogleGenerativeAI, HarmCategory, HarmBlockThreshold } from "@google/generative-ai";
次に以下の呼び出しを変更します。
const result = await model.generateContent(prompt);
修正後は以下のようになります。
const result = await model.generateContent({
contents: [
{
role: 'user',
parts: [
{
text: prompt,
}
],
}
],
safetySettings:[
{
"category": HarmCategory.HARM_CATEGORY_HARASSMENT,
"threshold": HarmBlockThreshold.BLOCK_NONE
},
{
"category": HarmCategory.HARM_CATEGORY_HATE_SPEECH,
"threshold": HarmBlockThreshold.BLOCK_NONE
},
{
"category": HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
"threshold": HarmBlockThreshold.BLOCK_NONE
},
{
"category": HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
"threshold": HarmBlockThreshold.BLOCK_NONE
},
]
})
ARM_CATEGORY_HARASSMENT 、HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENTのカテゴリーをBLOCK_NONE(フィルタなし)を設定しています。
</ph> これらのカテゴリは HarmCategory。「 Gemini モデルは HARM_CATEGORY_HARASSMENT のみをサポートします。 HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT、および HARM_CATEGORY_DANGEROUS_CONTENT。その他すべてのカテゴリが使用される PaLM 2(従来版)モデルでのみ可能です
以下のサイトに上記の記載がありHARM_CATEGORY_HARASSMENTのみがサポートされているように読み取れますがこれは誤訳です。正しくは”HARM_CATEGORY_HARASSMENT 、HARM_CATEGORY_HATE_SPEECH, HARM_CATEGORY_SEXUALLY_EXPLICIT、および HARM_CATEGORY_DANGEROUS_CONTENTのみをサポートします。”
シンプルな実装方法は以下のページを参考にしてください。
結果
口げんかしてくれるようになりました。
コメント