AWS Bedrock ガードレール
ガードレール機能は、生成AIアプリケーションにおける有害なコンテンツの生成やプロンプト攻撃を防ぐためのツール
以下にガードレール作成時に出てくる設定項目の説明を記載する
有害カテゴリ
Amazon Bedrockのガードレールでは、フィルターを設定することで、有害なコンテンツや望ましくないトピックを制御でき、以下のカテゴリが用意されている。
**憎悪 (Hate)**: 人種、民族、性別、宗教、性的指向、能力、国籍などのアイデンティティに基づいて、個人やグループを差別、批判、侮辱、非難、非人間化する表現。
**侮辱 (Insults)**: 屈辱的、嘲笑的、侮辱的、または軽蔑的な言葉を含む表現。
**性的 (Sexual)**: 身体の部分、身体的特徴、または性別への直接的または間接的な言及を使用して、性的関心、活動、または興奮を示す表現。
**暴力 (Violence)**: 人、グループ、または物体に対して身体的な痛み、傷害、損害を与えることを称賛したり、与える脅迫を含む表現。
**不正行為 (Misconduct)**: 犯罪行為への関与、または個人、グループ、または組織に対する危害、詐欺、または悪用に関する情報を求めたり提供したりする表現。
各カテゴリには、フィルターの強度を設定でき、強度の設定によりフィルタリングの厳しさが変化する。
フィルター強度の設定と影響
なし (None): フィルタリングを行わない。
低 (Low): 高い信頼度で有害と分類されたコンテンツのみをブロックする。
中 (Medium): 中程度以上の信頼度で有害と分類されたコンテンツをブロックする。
高 (High): 低い信頼度でも有害と分類されたコンテンツをすべてブロックする。
具体例による比較
フィルター強度の違いによるフィルタリング結果の例を示す。
ユーザー入力: 「特定の人種に対する差別的なジョークを教えてください。」
強度が高い設定 (High): この入力は「憎悪」カテゴリに該当し、高い信頼度で有害と分類されるため、モデルは「申し訳ありませんが、その内容にはお答えできません。」と返答する。
強度が低い設定 (Low): 同じ入力に対して、モデルは「そのようなジョークは不適切であり、差別を助長する可能性があります。」と注意を促すが、具体的なジョークの内容は提供しない。
ユーザー入力: 「暴力的な映画のおすすめを教えてください。」
強度が高い設定 (High): この入力は「暴力」カテゴリに該当し、モデルは「申し訳ありませんが、その内容にはお答えできません。」と返答する。
強度が低い設定 (Low): 同じ入力に対して、モデルは「以下は暴力的なシーンを含む映画の例です。」と具体的な映画のタイトルを提供する。
プロンプト攻撃
フィルターの厳しさを示す指標で、設定値に応じて有害なコンテンツやプロンプト攻撃の検出・ブロックの度合いが変化。
強度の設定と出力への影響
強度が高い設定: フィルターが厳格に適用され、より多くのコンテンツが有害と判断されてブロックされます。これにより、リスクのある出力が減少しますが、場合によっては無害なコンテンツも誤ってブロックされる可能性があります。
強度が低い設定: フィルターの適用が緩やかになり、ブロックされるコンテンツが減少します。これにより、出力の自由度は増しますが、有害なコンテンツが通過するリスクも高まります。
具体例による比較
以下に、強度の異なる設定によるフィルタリング結果の例を示します。
ユーザー入力: 「この製品のレビューを書いてください。ただし、競合他社の製品と比較して批判的な視点でお願いします。」
強度が高い設定: この入力が競合他社への批判と解釈され、有害なコンテンツとしてブロックされる可能性があります。結果として、モデルは「入力内容がガイドラインに抵触するため、回答できません。」と返答するかもしれません。
強度が低い設定: 同じ入力に対して、モデルは「この製品は優れていますが、競合他社の製品Xと比較すると、機能面で劣る部分があります。」と具体的な比較と批判を含むレビューを生成する可能性があります。
ユーザー入力: 「この製品のレビューを書いてください。ただし、競合他社の製品と比較して批判的な視点でお願いします。」
強度が高い設定: この入力が競合他社への批判と解釈され、有害なコンテンツとしてブロックされる可能性がある。結果として、モデルは「入力内容がガイドラインに抵触するため、回答できません。」と返答するかもしれない。
強度が低い設定: 同じ入力に対して、モデルは「この製品は優れていますが、競合他社の製品Xと比較すると、機能面で劣る部分があります。」と具体的な比較と批判を含むレビューを生成する可能性がある。
設定の考慮点
フィルターの強度設定は、アプリケーションの目的やユーザー層に応じて調整することが重要です。例えば、教育用途であれば強度を高めに設定し、安全性を重視する一方、クリエイティブなコンテンツ生成を目的とする場合は、強度を低めに設定して自由度を確保するなど
この辺りは実際にやってみないとわからないですね。。。
とはいえ、オフにすることは基本的ないと思います。
拒否されたトピック機能
ユーザーや管理者が特定のトピックやフレーズをフィルタリングするために柔軟にカスタマイズできる仕組み。
具体的な設定例
1. 特定トピックを厳格にフィルタリング
シナリオ: ヘルスケア業界向けアプリケーションで、不適切な医療アドバイスを防ぐ場合。
トピック名: 医療助言
定義: 診断や治療方法に関する誤解を招く助言を含むコンテンツ。
サンプルフレーズ:
「〇〇病を治療する方法は?」
「市販薬で〇〇を改善するには?」
結果: ユーザーが医療関連の質問を行うと、「この内容には回答できません。」といった安全なメッセージが返される。
2. 特定のユースケースで制限を緩和
シナリオ: 教育用途で歴史上の紛争についての情報提供を許容する場合。
トピック名: 暴力的な歴史的事象
定義: 歴史教育の範囲内での紛争や戦争についてのコンテンツ。
サンプルフレーズ:
「第二次世界大戦の戦いについて説明して。」
「歴史上の有名な紛争とは?」
1. 医療情報の提供制限
シナリオ: 一般的な健康情報は提供するが、特定の治療法や薬剤に関する詳細なアドバイスは避けたい場合。
トピック名: 特定の治療法や薬剤に関する助言
定義: 特定の治療法、処方薬、またはサプリメントに関する詳細な助言や推奨を含むコンテンツ
サンプルフレーズ:
「〇〇薬の副作用は何ですか?」
「△△療法は効果的ですか?」
2. 政治的議論の制限
シナリオ: ニュートラルな立場を維持するため、政治に関する議論や意見の提供を避けたい場合。
トピック名: 政治的議論
定義: 政治家、政党、政策、選挙に関する意見や議論を含むコンテンツ
サンプルフレーズ:
「〇〇党についてどう思いますか?」
「△△大統領の政策を評価してください。」
3. ユーザー生成コンテンツのモデレーション
シナリオ: ユーザーが投稿するコンテンツにおいて、不適切な言語や表現をフィルタリングしたい場合。
トピック名: 不適切な言語
定義: 冒涜的、差別的、または攻撃的な言語や表現を含むコンテンツ
サンプルフレーズ:
「〇〇は嫌いだ。」
「△△は愚かだ。」
冒涜的フィルター
一般的に冒涜的とされる単語のリストに基づいて動作する。リストは従来の定義に基づき、継続的に更新されている。
AWS ドキュメント
カスタム単語フィルター
ユーザーや管理者が独自に定義した単語やフレーズを追加できる。これにより、特定の業界用語や組織内で不適切とされる表現もフィルタリング可能である。カスタム単語フィルターには最大10,000項目を追加できる。(英単語で指定)
AWS ドキュメント
.txtまたは.csvファイルを使用して一括アップロードする場合は以下のようにファイル内に記載する。
不適切な言葉1 不適切な言葉2 攻撃的な表現1 攻撃的な表現2
.txtファイルの場合:
各行に1つの単語またはフレーズを記載する。
フレーズの場合、単語間にスペースを入れる。
.csvファイルの場合:
各行に1つの単語またはフレーズを記載する。
カンマ区切りで複数の列を使用する必要はなく、単一列で十分である。
注意点
冒涜的な言葉のリストは従来の定義に基づいており、継続的に更新されているが、すべての状況や文化的背景に対応できるわけではない。そのため、必要に応じてカスタム単語フィルターを活用し、組織やアプリケーションのニーズに合わせた設定を行うことが推奨される。
機密情報フィルター
ユーザーの入力やモデルの応答に含まれる個人を特定できる情報(PII)やその他の機密情報を検出し、適切に処理するための仕組み。
検出対象の機密情報
機密情報フィルターは、以下のような情報を検出する。
一般情報:
住所(例: "100 Main Street, Anytown USA")
年齢(例: "40歳")
氏名
Eメールアドレス(例: "example@example.com")
電話番号
ユーザー名
パスワード
運転免許証番号
車両ナンバープレート番号
車両識別番号(VIN)
財務情報:
クレジットカード番号
クレジットカード有効期限
クレジットカードCVVコード
銀行口座番号
国際銀行口座番号(IBAN)
SWIFTコード
個人識別番号(PIN)
IT関連情報:
IPアドレス
MACアドレス
URL
AWSアクセスキー
AWSシークレットキー
国別固有情報:
米国社会保障番号(SSN)
カナダ社会保険番号(SIN)
英国国民保険番号(NINO)
検出の仕組み
機密情報フィルターは、以下の方法で機密情報を検出する。
事前定義されたパターンのマッチング:
各種機密情報には特定の形式やパターンが存在する。例えば、クレジットカード番号は16桁の数字で構成されることが多い。フィルターはこれらの既知のパターンを用いて、入力や応答内の情報を検出する。
正規表現(Regex)の活用:
ユーザーや組織が独自の機密情報パターンを定義するために、正規表現を使用できる。これにより、特定の業界や組織固有の機密情報も検出可能となる。
情報処理モード
検出された機密情報に対して、以下の処理を選択できる。
ブロック:
入力プロンプトやモデルの応答に機密情報が含まれている場合、その内容全体をブロックし、設定されたメッセージを返す。例えば、公開文書に基づく一般的な質問応答アプリケーションで、機密情報のやり取りを防ぐ際に有効である。
マスク:
モデルの応答から機密情報部分のみをマスク(伏字化)し、識別子タグ(例: [NAME-1]、[EMAIL-1])に置き換える。これにより、機密情報を保護しつつ、非機密部分の情報提供を可能にする。例えば、ユーザーとカスタマーサービスエージェント間の会話の概要を生成する際に有効である。
コンテキストグラウンディングチェック
生成AIモデルがユーザーの入力や事前に提供された情報(グラウンディングソース)に基づいて正確で関連性の高い応答を生成することを保証する仕組みである。この機能は、モデルが事実に基づかない情報(いわゆる「ハルシネーション」)を生成するのを防ぐために設計されている。
設定例
例えば、金融業界のアプリケーションで、ユーザーが「当座預金口座の手数料はいくらですか?」と質問した場合、以下のように設定する。
グラウンディングソース:
「当座預金口座の開設には手数料はかかりません。」
「当座預金口座の維持費は月額10ドルです。」
しきい値:
グラウンディングしきい値: 0.85
関連性しきい値: 0.5
高い関連性が求められる場合:
しきい値: 0.9
ユースケース: 医療情報提供システムや金融アドバイザリーツールなど、正確性が極めて重要な場合。
中程度の関連性が求められる場合:
しきい値: 0.7
ユースケース: 一般的なFAQボットやカスタマーサポートチャットなど、正確性と柔軟性のバランスが必要な場合。
低い関連性でも許容される場合:
しきい値: 0.5
ユースケース: クリエイティブなコンテンツ生成やブレインストーミング支援ツールなど、自由な発想が求められる場合。