Google Geminiには、創造性パラメーターの他にも、安全フィルターという安全性設定が
前回の「Google Colabで、Google Gemini(AI)のプログラミング解説、初心者用(#8)・Geminiの創造性パラメーターを制御する」では、私が訳した「創造性パラメーター」、正式には、temperatureパラメーターを紹介しました。
この創造性パラメーターを高くして、Google Geminiの創造力を解放してあげると、私たちの知らない、「一寸法師」の物語に出会いましたね。あのプログラム実験の後に、この創造性パラメーターとどう付き合うべきかを考えているのですが、まだ答えは出ていません。
さて、今回は、前回の予告通り、4つの安全性パラメーターについて、プログラムの実験を行いましょう。説明を沢山するよりも、プログラミングしながら、考えた方が良いので、早速、今回もプログラミングに進みましょう。
Google ColabのGoogle Geminiの初期設定
もう、無意識に、いつも通りいきましょう。
テキスト欄に、
# 初期設定
Gemini利用の
* SDKの導入
* パッケージのインストール
* API KEYの導入
* Geminiのモデル(gemini-pro)の指定
を行います。
コード欄に、
!pip install -q -U google-generativeai
import pathlib
import textwrap
import google.generativeai as genai
from IPython.display import display
from IPython.display import Markdown
def to_markdown(text):
text = text.replace('•', ' *')
return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))
# Used to securely store your API key
from google.colab import userdata
# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel('gemini-pro')
と入力します。安全性設定も、現在のところは、gemini-proでは、設定可能で、gemini-pro-visionには、未対応のようです。
安全性の標準状態を確認
安全性は、いつもは気にしない設定部分でしょう。シビアな問題をGoogle Geminiのような生成系AIに尋ねることはないでしょう。
ただ、このBlogを書いている間も、「Geminiの画像生成機能が停止中 ダイバーシティ過剰適応問題対策で」の記事にもあるように、問題になっている事実もあります。従って、これから説明するプログラムも、コードの書き方や、設定変数が変わる可能性があります。
まずは、何も設定しない場合の確認を行ってみましょう。
テキスト欄に、
### 安全性の設定
`safety_settings`引数を使用すると、プロンプトとレスポンスの両方でモデルが何をブロックし、何を許可するかを設定できる。デフォルトでは、安全設定はすべての次元において、安全でないコンテンツである可能性が中程度または高いコンテンツをブロックします。[安全設定](https://ai.google.dev/docs/safety_setting) の詳細については、こちらを参照してください。
質問可能なプロンプトを入力し、デフォルトの安全設定でモデルを実行すると、候補は返されません:
`response.cadidates`は、分析モデルの条件、候補を出力します。
と入力し、コード欄に、
response = model.generate_content("雛人形を片付けると良い時期と、その理由を教えて?")
response.candidates
と入力です。本当は、もっと良い質問文を考えれば良いのですが、思いつかなったので、これで、許してください。(Hate Speechや、性的表現を積極的に行うBlogではないので)
さらに、テキスト欄に、
実際の分析結果を出力してみます。
コード欄に、
response = model.generate_content("雛人形を片付けると良い時期と、その理由を教えて?")
to_markdown(response.text)
さらに、テキスト欄に、
`prompt_feedback`は、どのセーフティフィルタがプロンプトをブロックしたかを示します:
と入力し、コード欄に、
response.prompt_feedback
と入力します。ここまでが、標準状態の確認方法です。
安全性変数の一つ、SEXUALを変更してみましょう
雛人形が、SEXUALでないことは、十分承知ですが、何事も実験なので、変更してみましょう。合わせて、変数の変更方法を、テキスト欄にメモとして残しておきましょう。
テキスト欄に、
次に、新たに安全設定を行ったモデルに同じプロンプトを出すと、応答が変わってくるかもしれません。
ここでは、`SEXUAL`変数をブロッックをオフ(BLOCK_NONE)にします。
変数の設定は、
* BLOCK_NONE
> ブロックなし/危険なコンテンツが表示される可能性にかかわらず常に表示するインデントされたブロック
* BLOCK_ONLY_HIGH
> 少量をブロック/危険なコンテンツである可能性が高い場合にブロックする
* BLOCK_MEDIUM_AND_ABOVE
> 一部をブロック/安全でないコンテンツが発生する可能性が中程度または高い場合にブロックする
* BLOCK_LOW_AND_ABOVE
> ほとんどをブロック/安全でないコンテンツが発生する可能性が低、中、高の場合はブロックする
* HARM_BLOCK_THRESHOLD_UNSPECIFIED
> しきい値が指定されていません。デフォルトのしきい値を使用してブロックします。
と、5段階から選べます。
と入力し、コード欄に、
response = model.generate_content("雛人形を片付けると良い時期と、その理由を教えて?",
safety_settings={'SEXUAL':'block_none'})
to_markdown(response.text)
と入力しておきましょう。
続いて、テキスト欄に、
`SEXYAL`変数をブロック(BLOCK_LOW_AND_ABOVE)にします。
と入力し、コード欄に、
response = model.generate_content("雛人形を片付けると良い時期と、その理由を教えて?",
safety_settings={'SEXUAL':'BLOCK_LOW_AND_ABOVE'})
to_markdown(response.text)
と入力し、プログラミング終了です。
Google Geminiの安全性パラメーターを変更して、プログラム実行
さあ、ではいつものように、プログラミング実行してみましょう。
安全性パラメーターを標準で行うと
以下のような返答が得られました。
雛人形を片付ける良い時期は、3月3日のひな祭りの翌日からです。 その理由は、ひな祭りは、日本古来の自然崇拝と、中国の道教から伝わった上巳節(じょうみせつ)が結びついたもので、上巳節は、桃の節句とも呼ばれています。 桃の節句は、春の訪れを祝う日とされ、桃の花が邪気を払うと信じられていました。 そのため、ひな人形は、桃の節句が終わったら、早めに片付けるようにしましょう。
また、3月以降は、ひな人形に虫がつくことがあります。 特に、桐たんすや木製の人形は、虫に食われやすいので、早めに片付けるようにしましょう。
さらに、その次のprompt_feedbackは、
safety_ratings {
category: HARM_CATEGORY_SEXUALLY_EXPLICIT
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_HATE_SPEECH
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_HARASSMENT
probability: NEGLIGIBLE
}
safety_ratings {
category: HARM_CATEGORY_DANGEROUS_CONTENT
probability: NEGLIGIBLE
}
と、出力しており、「雛人形を片付けると良い時期と、その理由を教えて?」という質問は、どの領域も、NEGLIGIBLと、「コンテンツが安全でない可能性がほとんどない」つまり、「コンテンツが安全」という判定です。
なので、安全変数は、この回答には、ほとんど関係がないのですが、一応プログラムを最後まで、実行してみましょう。
SEXUALをブロックしない
safety_settings={'SEXUAL':'block_none'}の場合の回答は、以下のようになりました。
節分(2月3日)頃
節分は、冬の終わりと春の始まりを祝う日です。雛人形は春の訪れを告げるものなので、節分頃まで飾っておくのが一般的です。
節分を過ぎると、雛人形を片付けてしまうことで、春が来たことを実感することができます。
上巳の節句(3月3日)頃
上巳の節句は、桃の節句とも呼ばれ、女の子の健やかな成長を祈る日です。雛人形は、女の子の成長を願って飾られるものなので、上巳の節句頃まで飾っておくのが一般的です。
上巳の節句を過ぎると、雛人形を片付けてしまうことで、女の子の健やかな成長を祈願することができます。
お彼岸(春分・秋分)頃
お彼岸は、先祖を供養する日です。雛人形は、先祖から譲り受けたものや、先祖の供養のために飾られるものなので、お彼岸頃まで飾っておくのが一般的です。
お彼岸を過ぎると、雛人形を片付けてしまうことで、先祖への供養を済ませることができます。
SEXUALをブロックする
safety_settings={'SEXUAL':'BLOCK_LOW_AND_ABOVE'}の場合の回答は、以下のようになりました。
3月3日以降: ひな祭りが過ぎてから片付けるのが一般的です。ひな祭りは3月3日なので、それ以降に片付ければ、ひな祭りの雰囲気を壊しません。
4月上旬まで: 遅くとも4月上旬までに片付けましょう。ひな人形を出しっぱなしにしておくと、湿気やホコリで傷んでしまうことがあります。また、ひな人形は縁起物なので、片付けずに出しっぱなしにしておくのは縁起が悪いとされています。
晴れた日: ひな人形を片付けるときは、晴れた日を選びましょう。雨の日や曇りの日は湿気が多く、ひな人形が傷んでしまうことがあります。
丁寧に片付ける: ひな人形は壊れやすいので、丁寧に片付けましょう。ひな人形を片付ける時は、一個一個丁寧に梱包し、段ボール箱に入れて保管しましょう。
確かに、こちらの文章には、前の文章と異なり、「女の子」という表現がなくなりましたね。ただ、このよう変数を制御するような、生成系AIの使い方があるのかは、不明ですね。
Comments